summaryrefslogtreecommitdiffstats
path: root/tools/metrics
diff options
context:
space:
mode:
authorjoi@chromium.org <joi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-09-25 19:13:42 +0000
committerjoi@chromium.org <joi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-09-25 19:13:42 +0000
commit97a045f8e6f03e26006e2bef81a384dd126bee4d (patch)
tree64171cfe3da363bcd2a148470950c2576736ef52 /tools/metrics
parentfeaded09da99fc295e2687a724c60f9b9769df6c (diff)
downloadchromium_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-xtools/metrics/browser_components_metrics.py64
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())