Chromium Code Reviews| Index: build/android/findbugs_diff.py |
| diff --git a/build/android/findbugs_diff.py b/build/android/findbugs_diff.py |
| index 28224f1a3871c59dfe53e58c25a7140bc781834d..b518946608ea3237ba38868402a3decd6e8c36f7 100755 |
| --- a/build/android/findbugs_diff.py |
| +++ b/build/android/findbugs_diff.py |
| @@ -5,14 +5,6 @@ |
| # found in the LICENSE file. |
| """Runs findbugs, and returns an error code if there are new warnings. |
| -This runs findbugs with an additional flag to exclude known bugs. |
| -To update the list of known bugs, do this: |
| - |
| - findbugs_diff.py --rebaseline |
| - |
| -Note that this is separate from findbugs_exclude.xml. The "exclude" file has |
| -false positives that we do not plan to fix. The "known bugs" file has real |
| -bugs that we *do* plan to fix (but haven't done so yet). |
| Other options |
| --only-analyze used to only analyze the class you are interested. |
| @@ -20,30 +12,98 @@ Other options |
| --findbugs-args used to passin other findbugs's options. |
| Run |
| - $CHROM_SRC/third_party/findbugs/bin/findbugs -textui for details. |
| + $CHROMIUM_SRC/third_party/findbugs/bin/findbugs -textui for details. |
| """ |
| +import argparse |
| import os |
| import sys |
| from pylib import constants |
| from pylib.utils import findbugs |
| +_DEFAULT_BASE_DIR = os.path.join( |
| + constants.DIR_SOURCE_ROOT, 'build', 'android', 'findbugs_filter') |
| + |
| +sys.path.append( |
| + os.path.join(constants.DIR_SOURCE_ROOT, 'build', 'android', 'gyp')) |
| +from util import build_utils |
| + |
| def main(): |
| - parser = findbugs.GetCommonParser() |
| + parser = argparse.ArgumentParser() |
| + |
| + parser.add_argument( |
| + '-a', '--auxclasspath', default=None, dest='auxclasspath', |
| + help='Set aux classpath for analysis.') |
| + parser.add_argument( |
| + '--auxclasspath-gyp', dest='auxclasspath_gyp', |
| + help='A gyp list containing the aux classpath for analysis') |
| + parser.add_argument( |
| + '-o', '--only-analyze', default=None, |
| + dest='only_analyze', help='Only analyze the given classes and packages.') |
| + parser.add_argument( |
| + '-e', '--exclude', default=None, dest='exclude', |
| + help='Exclude bugs matching given filter.') |
| + parser.add_argument( |
| + '-l', '--release-build', action='store_true', dest='release_build', |
| + help='Analyze release build instead of debug.') |
| + parser.add_argument( |
| + '-f', '--findbug-args', default=None, dest='findbug_args', |
| + help='Additional findbug arguments.') |
| + parser.add_argument( |
| + '-b', '--base-dir', default=_DEFAULT_BASE_DIR, |
| + dest='base_dir', help='Base directory for configuration file.') |
| + parser.add_argument( |
| + '--output-file', dest='output_file', |
| + help='Path to save the output to.') |
| + parser.add_argument( |
| + '--stamp', help='Path to touch on success.') |
| + parser.add_argument( |
| + '--depfile', help='Path to the depfile. This must be specified as the ' |
| + "action's first output.") |
| - options, _ = parser.parse_args() |
| + parser.add_argument( |
| + 'jar_paths', metavar='JAR_PATH', nargs='+', |
| + help='JAR file to analyze') |
| - if not options.base_dir: |
| - options.base_dir = os.path.join(constants.DIR_SOURCE_ROOT, 'build', |
| - 'android', 'findbugs_filter') |
| - if not options.only_analyze: |
| - options.only_analyze = 'org.chromium.-' |
| + args = parser.parse_args(build_utils.ExpandFileArgs(sys.argv[1:])) |
| + if args.auxclasspath: |
| + args.auxclasspath = args.auxclasspath.split(':') |
| + elif args.auxclasspath_gyp: |
| + args.auxclasspath = build_utils.ParseGypList(args.auxclasspath_gyp) |
| - return findbugs.Run(options) |
| + if args.base_dir: |
| + if not args.exclude: |
| + args.exclude = os.path.join(args.base_dir, 'findbugs_exclude.xml') |
| + |
| + findbugs_command, findbugs_warnings = findbugs.Run( |
| + args.exclude, args.only_analyze, args.auxclasspath, |
| + args.output_file, args.findbug_args, args.jar_paths) |
| + |
| + if findbugs_warnings: |
| + print '*' * 80 |
| + print 'FindBugs run via:' |
| + print findbugs_command |
| + print 'FindBugs reported the following issues:' |
| + for warning in sorted(findbugs_warnings): |
| + print str(warning) |
| + print '*' * 80 |
| + else: |
| + if args.depfile: |
| + build_utils.WriteDepfile( |
| + args.depfile, |
| + build_utils.GetPythonDependencies()) |
|
cjhopman
2015/03/24 01:01:07
This list of inputs should include jar_paths and t
jbudorick
2015/03/24 01:21:07
Done.
|
| + if args.stamp: |
| + build_utils.Touch(args.stamp) |
| + |
| + return len(findbugs_warnings) |
| if __name__ == '__main__': |
| sys.exit(main()) |
| + |