diff options
Diffstat (limited to 'chromium/tools/checkdeps/results.py')
-rw-r--r-- | chromium/tools/checkdeps/results.py | 178 |
1 files changed, 0 insertions, 178 deletions
diff --git a/chromium/tools/checkdeps/results.py b/chromium/tools/checkdeps/results.py deleted file mode 100644 index b52880ccca3..00000000000 --- a/chromium/tools/checkdeps/results.py +++ /dev/null @@ -1,178 +0,0 @@ -# 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. - - -"""Results object and results formatters for checkdeps tool.""" - - -import json - - -class DependencyViolation(object): - """A single dependency violation.""" - - def __init__(self, include_path, violated_rule, rules): - # The include or import path that is in violation of a rule. - self.include_path = include_path - - # The violated rule. - self.violated_rule = violated_rule - - # The set of rules containing self.violated_rule. - self.rules = rules - - -class DependeeStatus(object): - """Results object for a dependee file.""" - - def __init__(self, dependee_path): - # Path of the file whose nonconforming dependencies are listed in - # self.violations. - self.dependee_path = dependee_path - - # List of DependencyViolation objects that apply to the dependee - # file. May be empty. - self.violations = [] - - def AddViolation(self, violation): - """Adds a violation.""" - self.violations.append(violation) - - def HasViolations(self): - """Returns True if this dependee is violating one or more rules.""" - return not not self.violations - - -class ResultsFormatter(object): - """Base class for results formatters.""" - - def AddError(self, dependee_status): - """Add a formatted result to |self.results| for |dependee_status|, - which is guaranteed to return True for - |dependee_status.HasViolations|. - """ - raise NotImplementedError() - - def GetResults(self): - """Returns the results. May be overridden e.g. to process the - results that have been accumulated. - """ - raise NotImplementedError() - - def PrintResults(self): - """Prints the results to stdout.""" - raise NotImplementedError() - - -class NormalResultsFormatter(ResultsFormatter): - """A results formatting object that produces the classical, - detailed, human-readable output of the checkdeps tool. - """ - - def __init__(self, verbose): - self.results = [] - self.verbose = verbose - - def AddError(self, dependee_status): - lines = [] - lines.append('\nERROR in %s' % dependee_status.dependee_path) - for violation in dependee_status.violations: - lines.append(self.FormatViolation(violation, self.verbose)) - self.results.append('\n'.join(lines)) - - @staticmethod - def FormatViolation(violation, verbose=False): - lines = [] - if verbose: - lines.append(' For %s' % violation.rules) - lines.append( - ' Illegal include: "%s"\n Because of %s' % - (violation.include_path, str(violation.violated_rule))) - return '\n'.join(lines) - - def GetResults(self): - return self.results - - def PrintResults(self): - for result in self.results: - print result - if self.results: - print '\nFAILED\n' - - -class JSONResultsFormatter(ResultsFormatter): - """A results formatter that outputs results to a file as JSON.""" - - def __init__(self, output_path, wrapped_formatter=None): - self.output_path = output_path - self.wrapped_formatter = wrapped_formatter - - self.results = [] - - def AddError(self, dependee_status): - self.results.append({ - 'dependee_path': dependee_status.dependee_path, - 'violations': [{ - 'include_path': violation.include_path, - 'violated_rule': violation.violated_rule.AsDependencyTuple(), - } for violation in dependee_status.violations] - }) - - if self.wrapped_formatter: - self.wrapped_formatter.AddError(dependee_status) - - def GetResults(self): - with open(self.output_path, 'w') as f: - f.write(json.dumps(self.results)) - - return self.results - - def PrintResults(self): - if self.wrapped_formatter: - self.wrapped_formatter.PrintResults() - return - - print self.results - - -class TemporaryRulesFormatter(ResultsFormatter): - """A results formatter that produces a single line per nonconforming - include. The combined output is suitable for directly pasting into a - DEPS file as a list of temporary-allow rules. - """ - - def __init__(self): - self.violations = set() - - def AddError(self, dependee_status): - for violation in dependee_status.violations: - self.violations.add(violation.include_path) - - def GetResults(self): - return [' "!%s",' % path for path in sorted(self.violations)] - - def PrintResults(self): - for result in self.GetResults(): - print result - - -class CountViolationsFormatter(ResultsFormatter): - """A results formatter that produces a number, the count of #include - statements that are in violation of the dependency rules. - - Note that you normally want to instantiate DepsChecker with - ignore_temp_rules=True when you use this formatter. - """ - - def __init__(self): - self.count = 0 - - def AddError(self, dependee_status): - self.count += len(dependee_status.violations) - - def GetResults(self): - return '%d' % self.count - - def PrintResults(self): - print self.count |