diff options
author | joi@chromium.org <joi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-09-25 19:13:42 +0000 |
---|---|---|
committer | joi@chromium.org <joi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-09-25 19:13:42 +0000 |
commit | 97a045f8e6f03e26006e2bef81a384dd126bee4d (patch) | |
tree | 64171cfe3da363bcd2a148470950c2576736ef52 /tools/metrics | |
parent | feaded09da99fc295e2687a724c60f9b9769df6c (diff) | |
download | chromium_src-97a045f8e6f03e26006e2bef81a384dd126bee4d.zip chromium_src-97a045f8e6f03e26006e2bef81a384dd126bee4d.tar.gz chromium_src-97a045f8e6f03e26006e2bef81a384dd126bee4d.tar.bz2 |
Adding script to collect metrics for Browser Components.
BUG=138280
Review URL: https://codereview.chromium.org/10968062
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@158628 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'tools/metrics')
-rwxr-xr-x | tools/metrics/browser_components_metrics.py | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/tools/metrics/browser_components_metrics.py b/tools/metrics/browser_components_metrics.py new file mode 100755 index 0000000..b841fd2 --- /dev/null +++ b/tools/metrics/browser_components_metrics.py @@ -0,0 +1,64 @@ +#!/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__), '..', '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()) |