OLD | NEW |
1 #!/usr/bin/python -u | 1 #!/usr/bin/python -u |
2 | 2 |
3 import os, sys, fnmatch | 3 import os, sys, fnmatch |
4 import common | 4 import common |
5 | 5 |
6 # do a basic check to see if pylint is even installed | 6 # do a basic check to see if pylint is even installed |
7 try: | 7 try: |
8 import pylint | 8 import pylint |
9 from pylint.__pkginfo__ import version as pylint_version | |
10 except ImportError: | 9 except ImportError: |
11 print "Unable to import pylint, it may need to be installed" | 10 print "Unable to import pylint, it may need to be installed" |
12 sys.exit(1) | 11 sys.exit(1) |
13 | 12 |
14 major, minor, release = pylint_version.split('.') | |
15 pylint_version = float("%s.%s" % (major, minor)) | |
16 pylintrc_path = os.path.expanduser('~/.pylintrc') | 13 pylintrc_path = os.path.expanduser('~/.pylintrc') |
17 if not os.path.exists(pylintrc_path): | 14 if not os.path.exists(pylintrc_path): |
18 open(pylintrc_path, 'w').close() | 15 open(pylintrc_path, 'w').close() |
19 | 16 |
20 | 17 |
21 # patch up the logilab module lookup tools to understand autotest_lib.* trash | 18 # patch up the logilab module lookup tools to understand autotest_lib.* trash |
22 import logilab.common.modutils | 19 import logilab.common.modutils |
23 _ffm = logilab.common.modutils.file_from_modpath | 20 _ffm = logilab.common.modutils.file_from_modpath |
24 def file_from_modpath(modpath, path=None, context_file=None): | 21 def file_from_modpath(modpath, path=None, context_file=None): |
25 if modpath[0] == "autotest_lib": | 22 if modpath[0] == "autotest_lib": |
(...skipping 24 matching lines...) Expand all Loading... |
50 imports.ImportsChecker = CustomImportsChecker | 47 imports.ImportsChecker = CustomImportsChecker |
51 | 48 |
52 # some files make pylint blow up, so make sure we ignore them | 49 # some files make pylint blow up, so make sure we ignore them |
53 blacklist = ['/contrib/*', '/frontend/afe/management.py'] | 50 blacklist = ['/contrib/*', '/frontend/afe/management.py'] |
54 | 51 |
55 # only show errors | 52 # only show errors |
56 # there are two major sources of E1101/E1103 false positives: | 53 # there are two major sources of E1101/E1103 false positives: |
57 # * common_lib.enum.Enum objects | 54 # * common_lib.enum.Enum objects |
58 # * DB model objects (scheduler models are the worst, but Django models also | 55 # * DB model objects (scheduler models are the worst, but Django models also |
59 # generate some errors) | 56 # generate some errors) |
60 if pylint_version >= 0.21: | 57 pylint_base_opts = ['--disable-msg-cat=warning,refactor,convention', |
61 pylint_base_opts = ['--disable=W,R,C,E1101,E1103'] | 58 '--disable-msg=E1101,E1103', |
62 else: | 59 '--reports=no', |
63 pylint_base_opts = ['--disable-msg-cat=warning,refactor,convention', | 60 '--include-ids=y'] |
64 '--disable-msg=E1101,E1103'] | |
65 pylint_base_opts += ['--reports=no', | |
66 '--include-ids=y'] | |
67 | 61 |
68 file_list = sys.argv[1:] | 62 file_list = sys.argv[1:] |
69 if '--' in file_list: | 63 if '--' in file_list: |
70 index = file_list.index('--') | 64 index = file_list.index('--') |
71 pylint_base_opts.extend(file_list[index+1:]) | 65 pylint_base_opts.extend(file_list[index+1:]) |
72 file_list = file_list[:index] | 66 file_list = file_list[:index] |
73 | 67 |
74 | 68 |
75 def check_file(file_path): | 69 def check_file(file_path): |
76 if not file_path.endswith('.py'): | 70 if not file_path.endswith('.py'): |
(...skipping 15 matching lines...) Expand all Loading... |
92 | 86 |
93 | 87 |
94 if len(file_list) > 0: | 88 if len(file_list) > 0: |
95 for path in file_list: | 89 for path in file_list: |
96 if os.path.isdir(path): | 90 if os.path.isdir(path): |
97 check_dir(path) | 91 check_dir(path) |
98 else: | 92 else: |
99 check_file(path) | 93 check_file(path) |
100 else: | 94 else: |
101 check_dir('.') | 95 check_dir('.') |
OLD | NEW |