diff options
author | Petr Viktorin <pviktori@redhat.com> | 2016-01-05 14:31:39 +0100 |
---|---|---|
committer | Jan Cholasta <jcholast@redhat.com> | 2016-01-20 12:00:22 +0100 |
commit | 5d8221478729db1b8c1c064e64ac4d18983ae98d (patch) | |
tree | a643057f8a6d00a2469be918cb4b6134267bc20d /make-lint | |
parent | 5bff350d0d4b09d634d8d37b7fab938beaaa3b6c (diff) | |
download | freeipa-5d8221478729db1b8c1c064e64ac4d18983ae98d.tar.gz freeipa-5d8221478729db1b8c1c064e64ac4d18983ae98d.tar.xz freeipa-5d8221478729db1b8c1c064e64ac4d18983ae98d.zip |
make-lint: Allow running pylint --py3k to detect Python3 issues
Pylint can be run with the --py3k switch to detect porting issues.
This is not compatible with regular checking (i.e. to do all checks,
pylint must be run twice, with and without --py3k).
So, do an additional run of pylint in a subprocess for the py3k checks.
Add a --no-py3k switch to skip the additional py3k run.
Also add a --no-lint switch to allow only running the py3 checks.
https://fedorahosted.org/freeipa/ticket/5623
Reviewed-By: Jan Cholasta <jcholast@redhat.com>
Reviewed-By: Martin Basti <mbasti@redhat.com>
Diffstat (limited to 'make-lint')
-rwxr-xr-x | make-lint | 39 |
1 files changed, 26 insertions, 13 deletions
@@ -26,6 +26,7 @@ import os import sys from optparse import OptionParser from fnmatch import fnmatch, fnmatchcase +import subprocess try: from pylint import checkers @@ -220,6 +221,10 @@ def main(): dest='fail', default=True, action='store_false') optparser.add_option('--enable-noerror', help='enable warnings and other non-error messages', dest='errors_only', default=True, action='store_false') + optparser.add_option('--no-py3k', help='Do not check for Python 3 porting issues', + dest='py3k', default=True, action='store_false') + optparser.add_option('--no-lint', help='Skip the main lint check', + dest='do_lint', default=True, action='store_false') options, args = optparser.parse_args() cwd = os.getcwd() @@ -306,33 +311,41 @@ def main(): linter.set_option('persistent', False) linter.set_option('disable', 'python3') - linter.check(files) + if options.do_lint: + linter.check(files) - if linter.msg_status != 0: - print(""" + if linter.msg_status != 0: + print(""" =============================================================================== Errors were found during the static code check. """, file=sys.stderr) - if len(linter.missing) > 0: - print("There are some missing imports:", file=sys.stderr) - for mod in sorted(linter.missing): - print(" " + mod, file=sys.stderr) - print(""" + if len(linter.missing) > 0: + print("There are some missing imports:", file=sys.stderr) + for mod in sorted(linter.missing): + print(" " + mod, file=sys.stderr) + print(""" Please make sure all of the required and optional (python-gssapi, python-rhsm) python packages are installed. """, file=sys.stderr) - print("""\ + print("""\ If you are certain that any of the reported errors are false positives, please mark them in the source code according to the pylint documentation. =============================================================================== """, file=sys.stderr) - if options.fail: - return linter.msg_status - else: - return 0 + if options.fail and linter.msg_status != 0: + return linter.msg_status + + if options.py3k: + args = ['pylint', '--py3k', '-d', 'no-absolute-import', '--reports=n'] + args.extend(files) + returncode = subprocess.call(args) + if options.fail and returncode != 0: + return returncode + + return 0 if __name__ == "__main__": sys.exit(main()) |