2 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file.
6 """Generates the metrics collected weekly for the Browser Components project.
9 http://www.chromium.org/developers/design-documents/browser-components
17 # This is done so that we can import checkdeps. If not invoked as
18 # main, our user must ensure it is in PYTHONPATH.
19 if __name__
== '__main__':
20 sys
.path
.append(os
.path
.join(os
.path
.dirname(__file__
), '..', '..', '..',
21 'tools', 'checkdeps'))
29 # Preprocessor pattern to find OS_XYZ defines.
30 PREPROCESSOR_PATTERN
= 'OS_[A-Z]+'
33 class BrowserComponentsMetricsGenerator(object):
34 def __init__(self
, checkout_root
):
35 self
.checkout_root
= checkout_root
36 self
.chrome_browser
= os
.path
.join(checkout_root
, 'chrome', 'browser')
38 def CountIfdefs(self
, skip_tests
):
39 return count_ifdefs
.CountIfdefs(
40 PREPROCESSOR_PATTERN
, self
.chrome_browser
, skip_tests
)
42 def CountViolations(self
, skip_tests
):
43 deps_checker
= checkdeps
.DepsChecker(self
.checkout_root
,
44 ignore_temp_rules
=True,
45 skip_tests
=skip_tests
)
46 deps_checker
.results_formatter
= results
.CountViolationsFormatter()
47 deps_checker
.CheckDirectory(os
.path
.join('chrome', 'browser'))
48 return int(deps_checker
.results_formatter
.GetResults())
52 generator
= BrowserComponentsMetricsGenerator(
53 os
.path
.join(os
.path
.dirname(__file__
), '..', '..', '..'))
55 print "All metrics are for chrome/browser.\n"
56 print "OS ifdefs, all: %d" % generator
.CountIfdefs(False)
57 print "OS ifdefs, -tests: %d" % generator
.CountIfdefs(True)
58 print ("Intended DEPS violations, all: %d" %
59 generator
.CountViolations(False))
60 print "Intended DEPS violations, -tests: %d" % generator
.CountViolations(True)
64 if __name__
== '__main__':