15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#!/usr/bin/env python 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Copyright (c) 2012 The Chromium Authors. All rights reserved. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Use of this source code is governed by a BSD-style license that can be 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# found in the LICENSE file. 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)"""Runs findbugs, and returns an error code if there are new warnings. 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)This runs findbugs with an additional flag to exclude known bugs. 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)To update the list of known bugs, do this: 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) findbugs_diff.py --rebaseline 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Note that this is separate from findbugs_exclude.xml. The "exclude" file has 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)false positives that we do not plan to fix. The "known bugs" file has real 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bugs that we *do* plan to fix (but haven't done so yet). 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Other options 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) --only-analyze used to only analyze the class you are interested. 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) --relase-build analyze the classes in out/Release directory. 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) --findbugs-args used to passin other findbugs's options. 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Run 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $CHROM_SRC/third_party/findbugs/bin/findbugs -textui for details. 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)""" 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import optparse 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import os 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import sys 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)from pylib import constants 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)from pylib.utils import findbugs 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)def main(argv): 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) parser = findbugs.GetCommonParser() 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) options, _ = parser.parse_args() 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if not options.base_dir: 41868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) options.base_dir = os.path.join(constants.DIR_SOURCE_ROOT, 'build', 42868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 'android', 'findbugs_filter') 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if not options.only_analyze: 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) options.only_analyze = 'org.chromium.-' 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return findbugs.Run(options) 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)if __name__ == '__main__': 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sys.exit(main(sys.argv)) 51