Index: build/android/findbugs_diff.py |
diff --git a/build/android/findbugs_diff.py b/build/android/findbugs_diff.py |
new file mode 100755 |
index 0000000000000000000000000000000000000000..d69615d985e66bb4baf9be64cee376fa6f64de00 |
--- /dev/null |
+++ b/build/android/findbugs_diff.py |
@@ -0,0 +1,82 @@ |
+#!/usr/bin/python |
bulach
2012/10/25 08:30:06
nit:
#!/usr/bin/env python
michaelbai
2012/10/25 21:13:26
Done.
|
+# |
+# Copyright (c) 2012 The Chromium Authors. All rights reserved. |
+# Use of this source code is governed by a BSD-style license that can be |
+# 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. |
bulach
2012/10/25 08:30:06
nit: how about "filter" ? --only-analyze seems tha
michaelbai
2012/10/25 21:13:26
FindBugs calls exclude xml file as filter file, it
|
+ --release analyze the classes in out/Release directory. |
bulach
2012/10/25 08:30:06
nit: how about buildtype? then it can have as defa
michaelbai
2012/10/25 21:13:26
I'd like use the --release-build, since there are
|
+ --findbugs-args used to passin other findbugs's options. |
+ |
+Run |
+ CHROM_SRC/third_party/findbugs/bin/findbugs -textui for details. |
bulach
2012/10/25 08:30:06
nit: $CHROME_SRC
michaelbai
2012/10/25 21:13:26
Done.
|
+ |
+""" |
+ |
+import optparse |
+import os |
+import sys |
+ |
+from pylib import findbugs |
+ |
bulach
2012/10/25 08:30:06
nit: need an extra \n
michaelbai
2012/10/25 21:13:26
Done.
|
+def main(argv): |
+ parser = optparse.OptionParser() |
+ parser.add_option('-r', |
+ '--rebaseline', |
+ action='store_true', |
+ default=False, |
bulach
2012/10/25 08:30:06
nit: "default=False" can be removed here and 52 an
michaelbai
2012/10/25 21:13:26
Done.
|
+ dest='rebaseline', |
+ help='Rebaseline known findbugs issues.') |
+ |
+ parser.add_option('-o', |
+ '--only-analyze', |
+ action='store', |
+ default=None, |
+ dest='only_analyze', |
+ help='Only analyze the given classes and packages.') |
+ |
+ parser.add_option('-l', |
+ '--release', |
+ action='store_true', |
+ default=False, |
+ dest='release_version', |
+ help='Whether check release version.') |
+ |
+ parser.add_option('-f', |
+ '--findbug-args', |
+ action='store', |
+ default=None, |
+ dest='findbug_args', |
+ help='Additoinal findbug arguments.') |
bulach
2012/10/25 08:30:06
nit: Additional
michaelbai
2012/10/25 21:13:26
Done.
|
+ |
+ options, _ = parser.parse_args() |
+ |
+ chrome_src = os.getenv('CHROME_SRC') |
+ |
+ known_bugs = os.path.join(chrome_src, 'build', 'android', 'findbugs_filter', |
bulach
2012/10/25 08:30:06
nit: maybe have a "baseline_dir" as option? that w
michaelbai
2012/10/25 21:13:26
I see your point, you want to use the same script
|
+ 'findbugs_known_bugs.txt') |
+ exclude_filter = os.path.join(chrome_src, 'build', 'android', |
+ 'findbugs_filter', 'findbugs_exclude.xml') |
+ |
+ only_analyze = options.only_analyze |
+ if not only_analyze: |
+ only_analyze = 'org.chromium.-' |
+ |
+ return findbugs.Run(exclude_filter, known_bugs, only_analyze, |
+ None, options.rebaseline, options.findbug_args, |
+ options.release_version) |
+ |
+ |
+if __name__ == '__main__': |
+ sys.exit(main(sys.argv)) |