diff options
Diffstat (limited to 'chromium/components/tools/metrics/browser_components_metrics.py')
| -rwxr-xr-x | chromium/components/tools/metrics/browser_components_metrics.py | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/chromium/components/tools/metrics/browser_components_metrics.py b/chromium/components/tools/metrics/browser_components_metrics.py new file mode 100755 index 00000000000..725295377ae --- /dev/null +++ b/chromium/components/tools/metrics/browser_components_metrics.py @@ -0,0 +1,65 @@ +#!/usr/bin/env python +# 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. + +"""Generates the metrics collected weekly for the Browser Components project. + +See +http://www.chromium.org/developers/design-documents/browser-components +for details. +""" + +import os +import sys + + +# This is done so that we can import checkdeps. If not invoked as +# main, our user must ensure it is in PYTHONPATH. +if __name__ == '__main__': + sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..', '..', + 'tools', 'checkdeps')) + + +import count_ifdefs +import checkdeps +import results + + +# Preprocessor pattern to find OS_XYZ defines. +PREPROCESSOR_PATTERN = 'OS_[A-Z]+' + + +class BrowserComponentsMetricsGenerator(object): + def __init__(self, checkout_root): + self.checkout_root = checkout_root + self.chrome_browser = os.path.join(checkout_root, 'chrome', 'browser') + + def CountIfdefs(self, skip_tests): + return count_ifdefs.CountIfdefs( + PREPROCESSOR_PATTERN, self.chrome_browser, skip_tests) + + def CountViolations(self, skip_tests): + deps_checker = checkdeps.DepsChecker(self.checkout_root, + ignore_temp_rules=True, + skip_tests=skip_tests) + deps_checker.results_formatter = results.CountViolationsFormatter() + deps_checker.CheckDirectory(os.path.join('chrome', 'browser')) + return int(deps_checker.results_formatter.GetResults()) + + +def main(): + generator = BrowserComponentsMetricsGenerator( + os.path.join(os.path.dirname(__file__), '..', '..', '..')) + + print "All metrics are for chrome/browser.\n" + print "OS ifdefs, all: %d" % generator.CountIfdefs(False) + print "OS ifdefs, -tests: %d" % generator.CountIfdefs(True) + print ("Intended DEPS violations, all: %d" % + generator.CountViolations(False)) + print "Intended DEPS violations, -tests: %d" % generator.CountViolations(True) + return 0 + + +if __name__ == '__main__': + sys.exit(main()) |
