| 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 |
| 15 |
| 14 | 16 |
| 15 def _PrintMessage(warnings, title, action, known_bugs_file): | 17 def _PrintMessage(warnings, title, action, known_bugs_file): |
| 16 if warnings: | 18 if warnings: |
| 17 print | 19 print |
| 18 print '*' * 80 | 20 print '*' * 80 |
| 19 print '%s warnings.' % title | 21 print '%s warnings.' % title |
| 20 print '%s %s' % (action, known_bugs_file) | 22 print '%s %s' % (action, known_bugs_file) |
| 21 print '-' * 80 | 23 print '-' * 80 |
| 22 for warning in warnings: | 24 for warning in warnings: |
| 23 print warning | 25 print warning |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 59 | 61 |
| 60 | 62 |
| 61 def _Rebaseline(current_warnings_set, known_bugs_file): | 63 def _Rebaseline(current_warnings_set, known_bugs_file): |
| 62 with file(known_bugs_file, 'w') as known_bugs: | 64 with file(known_bugs_file, 'w') as known_bugs: |
| 63 for warning in sorted(current_warnings_set): | 65 for warning in sorted(current_warnings_set): |
| 64 print >>known_bugs, warning | 66 print >>known_bugs, warning |
| 65 return 0 | 67 return 0 |
| 66 | 68 |
| 67 | 69 |
| 68 def _GetChromeClasses(release_version): | 70 def _GetChromeClasses(release_version): |
| 69 chrome_src = os.getenv('CHROME_SRC') | |
| 70 version = 'Debug' | 71 version = 'Debug' |
| 71 if release_version: | 72 if release_version: |
| 72 version = 'Release' | 73 version = 'Release' |
| 73 path = os.path.join(chrome_src, 'out', version) | 74 path = os.path.join(constants.CHROME_DIR, 'out', version) |
| 74 cmd = 'find %s -name "*.class"' % path | 75 cmd = 'find %s -name "*.class"' % path |
| 75 proc = subprocess.Popen(shlex.split(cmd), | 76 proc = subprocess.Popen(shlex.split(cmd), |
| 76 stdout=subprocess.PIPE, stderr=subprocess.PIPE) | 77 stdout=subprocess.PIPE, stderr=subprocess.PIPE) |
| 77 out, err = proc.communicate() | 78 out, err = proc.communicate() |
| 78 | 79 |
| 79 if not out: | 80 if not out: |
| 80 print 'No classes found in %s' % path | 81 print 'No classes found in %s' % path |
| 81 return out | 82 return out |
| 82 | 83 |
| 83 | 84 |
| 84 def _Run(exclude, known_bugs, classes_to_analyze, auxiliary_classes, | 85 def _Run(exclude, known_bugs, classes_to_analyze, auxiliary_classes, |
| 85 rebaseline, release_version, findbug_args): | 86 rebaseline, release_version, findbug_args): |
| 86 """Run the FindBugs. | 87 """Run the FindBugs. |
| 87 | 88 |
| 88 Args: | 89 Args: |
| 89 exclude: the exclude xml file, refer to FindBugs's -exclude command option. | 90 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 | 91 known_bugs: the text file of known bugs. The bugs in it will not be |
| 91 reported. | 92 reported. |
| 92 classes_to_analyze: the list of classes need to analyze, refer to FindBug's | 93 classes_to_analyze: the list of classes need to analyze, refer to FindBug's |
| 93 -onlyAnalyze command line option. | 94 -onlyAnalyze command line option. |
| 94 auxiliary_classes: the classes help to analyze, refer to FindBug's | 95 auxiliary_classes: the classes help to analyze, refer to FindBug's |
| 95 -auxclasspath command line option. | 96 -auxclasspath command line option. |
| 96 rebaseline: True if the known_bugs file needs rebaseline. | 97 rebaseline: True if the known_bugs file needs rebaseline. |
| 97 release_version: True if the release version needs check, otherwise check | 98 release_version: True if the release version needs check, otherwise check |
| 98 debug version. | 99 debug version. |
| 99 findbug_args: addtional command line options needs pass to Findbugs. | 100 findbug_args: addtional command line options needs pass to Findbugs. |
| 100 """ | 101 """ |
| 101 | 102 |
| 102 chrome_src = os.getenv('CHROME_SRC') | 103 chrome_src = constants.CHROME_DIR |
| 103 sdk_root = os.getenv('ANDROID_SDK_ROOT') | 104 sdk_root = constants.ANDROID_SDK_ROOT |
| 104 sdk_version = os.getenv('ANDROID_SDK_VERSION') | 105 sdk_version = constants.ANDROID_SDK_VERSION |
| 105 | 106 |
| 106 system_classes = [] | 107 system_classes = [] |
| 107 system_classes.append(os.path.join(sdk_root, 'platforms', | 108 system_classes.append(os.path.join(sdk_root, 'platforms', |
| 108 'android-%s' % sdk_version, 'android.jar')) | 109 'android-%s' % sdk_version, 'android.jar')) |
| 109 if auxiliary_classes: | 110 if auxiliary_classes: |
| 110 for classes in auxiliary_classes: | 111 for classes in auxiliary_classes: |
| 111 system_classes.append(os.path.abspath(classes)) | 112 system_classes.append(os.path.abspath(classes)) |
| 112 | 113 |
| 113 cmd = '%s -textui -sortByClass ' % os.path.join(chrome_src, 'third_party', | 114 cmd = '%s -textui -sortByClass ' % os.path.join(chrome_src, 'third_party', |
| 114 'findbugs', 'bin', 'findbugs') | 115 'findbugs', 'bin', 'findbugs') |
| (...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 215 | 216 |
| 216 parser.add_option('-b', | 217 parser.add_option('-b', |
| 217 '--base-dir', | 218 '--base-dir', |
| 218 action='store', | 219 action='store', |
| 219 default=None, | 220 default=None, |
| 220 dest='base_dir', | 221 dest='base_dir', |
| 221 help='Base directory for configuration file.') | 222 help='Base directory for configuration file.') |
| 222 | 223 |
| 223 return parser | 224 return parser |
| 224 | 225 |
| 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 | 226 |
| 233 def main(argv): | 227 def main(argv): |
| 234 parser = GetCommonParser() | 228 parser = GetCommonParser() |
| 235 options, _ = parser.parse_args() | 229 options, _ = parser.parse_args() |
| 236 | 230 |
| 237 return Run(options) | 231 return Run(options) |
| 238 | 232 |
| 233 |
| 239 if __name__ == '__main__': | 234 if __name__ == '__main__': |
| 240 sys.exit(main(sys.argv)) | 235 sys.exit(main(sys.argv)) |
| OLD | NEW |