Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
| 2 # | 2 # |
| 3 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 3 # Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 4 # Use of this source code is governed by a BSD-style license that can be | 4 # Use of this source code is governed by a BSD-style license that can be |
| 5 # found in the LICENSE file. | 5 # found in the LICENSE file. |
| 6 | 6 |
| 7 import optparse | 7 import optparse |
| 8 import os | 8 import os |
| 9 import re | 9 import re |
| 10 import shlex | 10 import shlex |
| 11 import subprocess | 11 import subprocess |
| 12 import sys | 12 import sys |
| 13 | 13 |
| 14 from pylib import constants | |
|
frankf
2013/01/16 18:10:46
2 blank lines below this.
Yaron
2013/01/16 18:15:28
Done.
| |
| 14 | 15 |
| 15 def _PrintMessage(warnings, title, action, known_bugs_file): | 16 def _PrintMessage(warnings, title, action, known_bugs_file): |
| 16 if warnings: | 17 if warnings: |
| 17 print | 18 print |
| 18 print '*' * 80 | 19 print '*' * 80 |
| 19 print '%s warnings.' % title | 20 print '%s warnings.' % title |
| 20 print '%s %s' % (action, known_bugs_file) | 21 print '%s %s' % (action, known_bugs_file) |
| 21 print '-' * 80 | 22 print '-' * 80 |
| 22 for warning in warnings: | 23 for warning in warnings: |
| 23 print warning | 24 print warning |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 59 | 60 |
| 60 | 61 |
| 61 def _Rebaseline(current_warnings_set, known_bugs_file): | 62 def _Rebaseline(current_warnings_set, known_bugs_file): |
| 62 with file(known_bugs_file, 'w') as known_bugs: | 63 with file(known_bugs_file, 'w') as known_bugs: |
| 63 for warning in sorted(current_warnings_set): | 64 for warning in sorted(current_warnings_set): |
| 64 print >>known_bugs, warning | 65 print >>known_bugs, warning |
| 65 return 0 | 66 return 0 |
| 66 | 67 |
| 67 | 68 |
| 68 def _GetChromeClasses(release_version): | 69 def _GetChromeClasses(release_version): |
| 69 chrome_src = os.getenv('CHROME_SRC') | |
| 70 version = 'Debug' | 70 version = 'Debug' |
| 71 if release_version: | 71 if release_version: |
| 72 version = 'Release' | 72 version = 'Release' |
| 73 path = os.path.join(chrome_src, 'out', version) | 73 path = os.path.join(constants.CHROME_DIR, 'out', version) |
| 74 cmd = 'find %s -name "*.class"' % path | 74 cmd = 'find %s -name "*.class"' % path |
| 75 proc = subprocess.Popen(shlex.split(cmd), | 75 proc = subprocess.Popen(shlex.split(cmd), |
| 76 stdout=subprocess.PIPE, stderr=subprocess.PIPE) | 76 stdout=subprocess.PIPE, stderr=subprocess.PIPE) |
| 77 out, err = proc.communicate() | 77 out, err = proc.communicate() |
| 78 | 78 |
| 79 if not out: | 79 if not out: |
| 80 print 'No classes found in %s' % path | 80 print 'No classes found in %s' % path |
| 81 return out | 81 return out |
| 82 | 82 |
| 83 | 83 |
| 84 def _Run(exclude, known_bugs, classes_to_analyze, auxiliary_classes, | 84 def _Run(exclude, known_bugs, classes_to_analyze, auxiliary_classes, |
| 85 rebaseline, release_version, findbug_args): | 85 rebaseline, release_version, findbug_args): |
| 86 """Run the FindBugs. | 86 """Run the FindBugs. |
| 87 | 87 |
| 88 Args: | 88 Args: |
| 89 exclude: the exclude xml file, refer to FindBugs's -exclude command option. | 89 exclude: the exclude xml file, refer to FindBugs's -exclude command option. |
| 90 known_bugs: the text file of known bugs. The bugs in it will not be | 90 known_bugs: the text file of known bugs. The bugs in it will not be |
| 91 reported. | 91 reported. |
| 92 classes_to_analyze: the list of classes need to analyze, refer to FindBug's | 92 classes_to_analyze: the list of classes need to analyze, refer to FindBug's |
| 93 -onlyAnalyze command line option. | 93 -onlyAnalyze command line option. |
| 94 auxiliary_classes: the classes help to analyze, refer to FindBug's | 94 auxiliary_classes: the classes help to analyze, refer to FindBug's |
| 95 -auxclasspath command line option. | 95 -auxclasspath command line option. |
| 96 rebaseline: True if the known_bugs file needs rebaseline. | 96 rebaseline: True if the known_bugs file needs rebaseline. |
| 97 release_version: True if the release version needs check, otherwise check | 97 release_version: True if the release version needs check, otherwise check |
| 98 debug version. | 98 debug version. |
| 99 findbug_args: addtional command line options needs pass to Findbugs. | 99 findbug_args: addtional command line options needs pass to Findbugs. |
| 100 """ | 100 """ |
| 101 | 101 |
| 102 chrome_src = os.getenv('CHROME_SRC') | 102 chrome_src = constants.CHROME_DIR |
| 103 sdk_root = os.getenv('ANDROID_SDK_ROOT') | 103 sdk_root = constants.ANDROID_SDK_ROOT |
| 104 sdk_version = os.getenv('ANDROID_SDK_VERSION') | 104 sdk_version = constants.ANDROID_SDK_VERSION |
| 105 | 105 |
| 106 system_classes = [] | 106 system_classes = [] |
| 107 system_classes.append(os.path.join(sdk_root, 'platforms', | 107 system_classes.append(os.path.join(sdk_root, 'platforms', |
| 108 'android-%s' % sdk_version, 'android.jar')) | 108 'android-%s' % sdk_version, 'android.jar')) |
| 109 if auxiliary_classes: | 109 if auxiliary_classes: |
| 110 for classes in auxiliary_classes: | 110 for classes in auxiliary_classes: |
| 111 system_classes.append(os.path.abspath(classes)) | 111 system_classes.append(os.path.abspath(classes)) |
| 112 | 112 |
| 113 cmd = '%s -textui -sortByClass ' % os.path.join(chrome_src, 'third_party', | 113 cmd = '%s -textui -sortByClass ' % os.path.join(chrome_src, 'third_party', |
| 114 'findbugs', 'bin', 'findbugs') | 114 'findbugs', 'bin', 'findbugs') |
| (...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 215 | 215 |
| 216 parser.add_option('-b', | 216 parser.add_option('-b', |
| 217 '--base-dir', | 217 '--base-dir', |
| 218 action='store', | 218 action='store', |
| 219 default=None, | 219 default=None, |
| 220 dest='base_dir', | 220 dest='base_dir', |
| 221 help='Base directory for configuration file.') | 221 help='Base directory for configuration file.') |
| 222 | 222 |
| 223 return parser | 223 return parser |
| 224 | 224 |
| 225 def CheckEnvironment(): | |
| 226 if not (os.getenv('CHROME_SRC') and os.getenv('ANDROID_SDK_ROOT') and | |
| 227 os.getenv('ANDROID_SDK_VERSION')): | |
| 228 print 'Your build environment is not set up correctly.' | |
| 229 print 'Please source build/android/envsetup.sh.' | |
| 230 return False | |
| 231 return True | |
| 232 | 225 |
| 233 def main(argv): | 226 def main(argv): |
| 234 parser = GetCommonParser() | 227 parser = GetCommonParser() |
| 235 options, _ = parser.parse_args() | 228 options, _ = parser.parse_args() |
| 236 | 229 |
| 237 return Run(options) | 230 return Run(options) |
| 238 | 231 |
| 232 | |
| 239 if __name__ == '__main__': | 233 if __name__ == '__main__': |
| 240 sys.exit(main(sys.argv)) | 234 sys.exit(main(sys.argv)) |
| OLD | NEW |