Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GitHub Action to lint Python code #594

Merged
merged 3 commits into from
Aug 19, 2021
Merged

Conversation

cclauss
Copy link
Contributor

@cclauss cclauss commented Aug 18, 2021

Because Travis CI seems to be on (permanent?) vacation...
https://travis-ci.org/github/RobotWebTools/rosbridge_suite

Related to #593 and #600

https://flake8.pycqa.org/en/latest/user/error-codes.html

On the flake8 test selection, this PR does not focus on "style violations" (the majority of flake8 error codes that psf/black can autocorrect). Instead these tests focus on runtime safety and correctness:

  • E9 tests are about Python syntax errors usually raised because flake8 can not build an Abstract Syntax Tree (AST). Often these issues are a sign of unused code or code that has not been ported to Python 3. These would be compile-time errors in a compiled language but in a dynamic language like Python they result in the script halting/crashing on the user.
  • F63 tests are usually about the confusion between identity and equality in Python. Use ==/!= to compare str, bytes, and int literals is the classic case. These are areas where a == b is True but a is b is False (or vice versa). Python >= 3.8 will raise SyntaxWarnings on these instances.
  • F7 tests logic errors and syntax errors in type hints
  • F82 tests are almost always undefined names which are usually a sign of a typo, missing imports, or code that has not been ported to Python 3. These also would be compile-time errors in a compiled language but in Python a NameError is raised which will halt/crash the script on the user.

@amacneil
Copy link
Member

These are a lot of steps if someone wants to run lint locally. Can we move it to a configuration file to simplify CI and local linting?

@cclauss
Copy link
Contributor Author

cclauss commented Aug 18, 2021

The four lines from 10 thru 13 should be equivalent on a local machine.

.github/workflows/ci.yml Outdated Show resolved Hide resolved
steps:
- uses: actions/checkout@v2
- uses: actions/setup-python@v2
- run: pip install --upgrade pip
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think this line is necessary? actions/setup-python already gives us the latest version (see output from this on your branch)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not always... Watch it over time.

.github/workflows/ci.yml Outdated Show resolved Hide resolved
setup.cfg Outdated
count = True
max-complexity = 36
max-line-length = 228
select = E5,E9,F63,F7
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think that to F issues should be fixed because PEP8 is clear about wildcard imports being a bad idea.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sorry I don't understand - can you rephrase?

Copy link
Member

@amacneil amacneil left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks!

@amacneil amacneil merged commit cfe65e2 into RobotWebTools:ros2 Aug 19, 2021
@cclauss cclauss deleted the patch-1 branch August 19, 2021 18:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants