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 os 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import sys 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)from pylib import constants 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)from pylib.utils import findbugs 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 34effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochdef main(): 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) parser = findbugs.GetCommonParser() 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) options, _ = parser.parse_args() 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if not options.base_dir: 40868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) options.base_dir = os.path.join(constants.DIR_SOURCE_ROOT, 'build', 41868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 'android', 'findbugs_filter') 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if not options.only_analyze: 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) options.only_analyze = 'org.chromium.-' 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return findbugs.Run(options) 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)if __name__ == '__main__': 49effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch sys.exit(main()) 50