You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airflow.apache.org by GitBox <gi...@apache.org> on 2019/05/05 17:39:59 UTC
[GitHub] [airflow] potiuk commented on issue #5238: [AIRFLOW-4364] Add
Pylint to CI
potiuk commented on issue #5238: [AIRFLOW-4364] Add Pylint to CI
URL: https://github.com/apache/airflow/pull/5238#issuecomment-489447343
Hey @BasPH - I will take a closer look later today as I am very interested :) (travelling today) but I have one question/idea which we might implement with this change. We can defer it for the future as well, but I think maybe it's worth starting now.
Since we are starting to use more linters, I thought maybe we could already switch to using pre-commit-hook framework for those linters.
https://pre-commit.com/
It allows to run checks on CI but (what is more important) it can run the very same checks as pre-commit-hooks. It is really nicely implemented - has nice UI, allows to add many ready-to-use linters and checkers (and some automated code modification like adding licence headers) and it is super-easy to install locally by the developer. And it has pluginable interface where it can already (I believe) filters only changed files (not lines by default though).
As local pre-commit check, It could be run as pre-commit for all locally modified files, so that people are encouraged to fix error faster. And on Travis we could continue checking only modified lines for example.
I think you could fairly easily turn your python script into a pre-commit plugin rather than have a standalone script and then we could benefit from being able to run the checks with pre-commit hooks (which is far better than waiting for Travis).
I discovered it recently and applied successfully to the Ooozie2Airflow converter we work on - we applied some 20+ checks. You can see for example here:
https://travis-ci.org/GoogleCloudPlatform/cloud-composer/builds/528367055#L1638
And here is the list of checks we have implemented in our project:
```
Formats python files using black...................................................Passed
Add licence for all XML, md files..................................................Passed
Add licence for all .pig files.....................................................Passed
Add licence for all python/yaml/property files.....................................Passed
Add licence for all Jinja templates................................................Passed
No-tabs checker....................................................................Passed
Flake8.............................................................................Passed
Check that executables have shebangs...............................................Passed
Check for merge conflicts..........................................................Passed
Check Xml..........................................................................Passed
Check Yaml.........................................................................Passed
Debug Statements (Python)..........................................................Passed
Detect Private Key.................................................................Passed
Fix python encoding pragma.........................................................Passed
Fix End of Files...................................................................Passed
Mixed line ending..................................................................Passed
Fix requirements.txt...............................................................Passed
Trim Trailing Whitespace...........................................................Passed
Check hooks apply to the repository................................................Passed
Check for useless excludes.........................................................Passed
Checks typing annotations consistency with mypy....................................Passed
Checks for common programming errors with pylint...................................Passed
Runs all unit tests with pytest....................................................Passed
Check Shell scripts syntax corectness..............................................Passed
Detect unicode non-breaking space character U+00A0 aka M-BM-.......................Passed
Remove unicode non-breaking space character U+00A0 aka M-BM-.......................Passed
Detect the EXTREMELY confusing unicode character U+2013............................Passed
Remove the EXTREMELY confusing unicode character U+2013............................Passed
Validates all oozie workflows......................................................Passed
Checks for security vulnerabilities in dependencies................................Passed
```
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
With regards,
Apache Git Services