Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(125)

Side by Side Diff: tools/checkdeps/checkdeps.py

Issue 244313005: Fix a few typos and style in checkdeps (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Python style fixes too Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « tools/checkdeps/builddeps.py ('k') | tools/checkdeps/cpp_checker.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright 2012 The Chromium Authors. All rights reserved. 2 # Copyright 2012 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 """Makes sure that files include headers from allowed directories. 6 """Makes sure that files include headers from allowed directories.
7 7
8 Checks DEPS files in the source tree for rules, and applies those rules to 8 Checks DEPS files in the source tree for rules, and applies those rules to
9 "#include" and "import" directives in the .cpp and .java source files. 9 "#include" and "import" directives in the .cpp and .java source files.
10 Any source file including something not permitted by the DEPS files will fail. 10 Any source file including something not permitted by the DEPS files will fail.
(...skipping 15 matching lines...) Expand all
26 26
27 27
28 def _IsTestFile(filename): 28 def _IsTestFile(filename):
29 """Does a rudimentary check to try to skip test files; this could be 29 """Does a rudimentary check to try to skip test files; this could be
30 improved but is good enough for now. 30 improved but is good enough for now.
31 """ 31 """
32 return re.match('(test|mock|dummy)_.*|.*_[a-z]*test\.(cc|mm|java)', filename) 32 return re.match('(test|mock|dummy)_.*|.*_[a-z]*test\.(cc|mm|java)', filename)
33 33
34 34
35 class DepsChecker(DepsBuilder): 35 class DepsChecker(DepsBuilder):
36 """Parses include_rules from DEPS files and erifies files in the 36 """Parses include_rules from DEPS files and verifies files in the
37 source tree against them. 37 source tree against them.
38 """ 38 """
39 39
40 def __init__(self, 40 def __init__(self,
41 base_directory=None, 41 base_directory=None,
42 verbose=False, 42 verbose=False,
43 being_tested=False, 43 being_tested=False,
44 ignore_temp_rules=False, 44 ignore_temp_rules=False,
45 skip_tests=False): 45 skip_tests=False):
46 """Creates a new DepsChecker. 46 """Creates a new DepsChecker.
(...skipping 29 matching lines...) Expand all
76 """ 76 """
77 java = java_checker.JavaChecker(self.base_directory, self.verbose) 77 java = java_checker.JavaChecker(self.base_directory, self.verbose)
78 cpp = cpp_checker.CppChecker(self.verbose) 78 cpp = cpp_checker.CppChecker(self.verbose)
79 checkers = dict( 79 checkers = dict(
80 (extension, checker) 80 (extension, checker)
81 for checker in [java, cpp] for extension in checker.EXTENSIONS) 81 for checker in [java, cpp] for extension in checker.EXTENSIONS)
82 self._CheckDirectoryImpl(checkers, start_dir) 82 self._CheckDirectoryImpl(checkers, start_dir)
83 83
84 def _CheckDirectoryImpl(self, checkers, dir_name): 84 def _CheckDirectoryImpl(self, checkers, dir_name):
85 rules = self.GetDirectoryRules(dir_name) 85 rules = self.GetDirectoryRules(dir_name)
86 if rules == None: 86 if rules is None:
87 return 87 return
88 88
89 # Collect a list of all files and directories to check. 89 # Collect a list of all files and directories to check.
90 files_to_check = [] 90 files_to_check = []
91 dirs_to_check = [] 91 dirs_to_check = []
92 contents = sorted(os.listdir(dir_name)) 92 contents = sorted(os.listdir(dir_name))
93 for cur in contents: 93 for cur in contents:
94 full_name = os.path.join(dir_name, cur) 94 full_name = os.path.join(dir_name, cur)
95 if os.path.isdir(full_name): 95 if os.path.isdir(full_name):
96 dirs_to_check.append(full_name) 96 dirs_to_check.append(full_name)
(...skipping 21 matching lines...) Expand all
118 118
119 Return: 119 Return:
120 A list of tuples, (bad_file_path, rule_type, rule_description) 120 A list of tuples, (bad_file_path, rule_type, rule_description)
121 where rule_type is one of Rule.DISALLOW or Rule.TEMP_ALLOW and 121 where rule_type is one of Rule.DISALLOW or Rule.TEMP_ALLOW and
122 rule_description is human-readable. Empty if no problems. 122 rule_description is human-readable. Empty if no problems.
123 """ 123 """
124 cpp = cpp_checker.CppChecker(self.verbose) 124 cpp = cpp_checker.CppChecker(self.verbose)
125 problems = [] 125 problems = []
126 for file_path, include_lines in added_includes: 126 for file_path, include_lines in added_includes:
127 if not cpp.IsCppFile(file_path): 127 if not cpp.IsCppFile(file_path):
128 pass 128 continue
Nils Barth (inactive) 2014/04/21 08:36:09 This |pass| looks like a bug, as the |if| does not
Jói 2014/04/22 14:23:31 I think you're right.
Nils Barth (inactive) 2014/04/23 08:59:23 Thanks for checking!
129 rules_for_file = self.GetDirectoryRules(os.path.dirname(file_path)) 129 rules_for_file = self.GetDirectoryRules(os.path.dirname(file_path))
130 if rules_for_file: 130 if not rules_for_file:
131 for line in include_lines: 131 continue
132 is_include, violation = cpp.CheckLine( 132 for line in include_lines:
133 rules_for_file, line, file_path, True) 133 is_include, violation = cpp.CheckLine(
134 if violation: 134 rules_for_file, line, file_path, True)
135 rule_type = violation.violated_rule.allow 135 if not violation:
136 if rule_type != Rule.ALLOW: 136 continue
137 violation_text = results.NormalResultsFormatter.FormatViolation( 137 rule_type = violation.violated_rule.allow
138 violation, self.verbose) 138 if rule_type == Rule.ALLOW:
139 problems.append((file_path, rule_type, violation_text)) 139 continue
140 violation_text = results.NormalResultsFormatter.FormatViolation(
141 violation, self.verbose)
142 problems.append((file_path, rule_type, violation_text))
140 return problems 143 return problems
141 144
142 145
143 def PrintUsage(): 146 def PrintUsage():
144 print """Usage: python checkdeps.py [--root <root>] [tocheck] 147 print """Usage: python checkdeps.py [--root <root>] [tocheck]
145 148
146 --root ROOT Specifies the repository root. This defaults to "../../.." 149 --root ROOT Specifies the repository root. This defaults to "../../.."
147 relative to the script file. This will be correct given the 150 relative to the script file. This will be correct given the
148 normal location of the script in "<root>/tools/checkdeps". 151 normal location of the script in "<root>/tools/checkdeps".
149 152
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
225 if options.json: 228 if options.json:
226 deps_checker.results_formatter = results.JSONResultsFormatter( 229 deps_checker.results_formatter = results.JSONResultsFormatter(
227 options.json, deps_checker.results_formatter) 230 options.json, deps_checker.results_formatter)
228 231
229 deps_checker.CheckDirectory(start_dir) 232 deps_checker.CheckDirectory(start_dir)
230 return deps_checker.Report() 233 return deps_checker.Report()
231 234
232 235
233 if '__main__' == __name__: 236 if '__main__' == __name__:
234 sys.exit(main()) 237 sys.exit(main())
OLDNEW
« no previous file with comments | « tools/checkdeps/builddeps.py ('k') | tools/checkdeps/cpp_checker.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698