OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // A general interface for filtering and only acting on classes in Chromium C++ | 5 // A general interface for filtering and only acting on classes in Chromium C++ |
6 // code. | 6 // code. |
7 | 7 |
8 #include "ChromeClassTester.h" | 8 #include "ChromeClassTester.h" |
9 | 9 |
10 #include <sys/param.h> | 10 #include <sys/param.h> |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
86 std::string base_name = record->getNameAsString(); | 86 std::string base_name = record->getNameAsString(); |
87 if (IsIgnoredType(base_name)) | 87 if (IsIgnoredType(base_name)) |
88 return; | 88 return; |
89 | 89 |
90 // We ignore all classes that end with "Matcher" because they're probably | 90 // We ignore all classes that end with "Matcher" because they're probably |
91 // GMock artifacts. | 91 // GMock artifacts. |
92 if (ends_with(base_name, "Matcher")) | 92 if (ends_with(base_name, "Matcher")) |
93 return; | 93 return; |
94 | 94 |
95 CheckChromeClass(record_location, record); | 95 CheckChromeClass(record_location, record); |
| 96 } else if (EnumDecl* enum_decl = dyn_cast<EnumDecl>(tag)) { |
| 97 SourceLocation enum_location = enum_decl->getInnerLocStart(); |
| 98 if (InBannedDirectory(enum_location)) |
| 99 return; |
| 100 |
| 101 std::string base_name = enum_decl->getNameAsString(); |
| 102 if (IsIgnoredType(base_name)) |
| 103 return; |
| 104 |
| 105 CheckChromeEnum(enum_location, enum_decl); |
96 } | 106 } |
97 } | 107 } |
98 | 108 |
99 void ChromeClassTester::emitWarning(SourceLocation loc, | 109 void ChromeClassTester::emitWarning(SourceLocation loc, |
100 const char* raw_error) { | 110 const char* raw_error) { |
101 FullSourceLoc full(loc, instance().getSourceManager()); | 111 FullSourceLoc full(loc, instance().getSourceManager()); |
102 std::string err; | 112 std::string err; |
103 err = "[chromium-style] "; | 113 err = "[chromium-style] "; |
104 err += raw_error; | 114 err += raw_error; |
105 DiagnosticsEngine::Level level = | 115 DiagnosticsEngine::Level level = |
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
193 ignored_record_names_.insert("AutocompleteController"); | 203 ignored_record_names_.insert("AutocompleteController"); |
194 ignored_record_names_.insert("HistoryURLProvider"); | 204 ignored_record_names_.insert("HistoryURLProvider"); |
195 | 205 |
196 // Because of chrome frame | 206 // Because of chrome frame |
197 ignored_record_names_.insert("ReliabilityTestSuite"); | 207 ignored_record_names_.insert("ReliabilityTestSuite"); |
198 | 208 |
199 // Used over in the net unittests. A large enough bundle of integers with 1 | 209 // Used over in the net unittests. A large enough bundle of integers with 1 |
200 // non-pod class member. Probably harmless. | 210 // non-pod class member. Probably harmless. |
201 ignored_record_names_.insert("MockTransaction"); | 211 ignored_record_names_.insert("MockTransaction"); |
202 | 212 |
| 213 // Enum type with _LAST members where _LAST doesn't mean last enum value. |
| 214 ignored_record_names_.insert("ServerFieldType"); |
| 215 |
203 // Used heavily in ui_unittests and once in views_unittests. Fixing this | 216 // Used heavily in ui_unittests and once in views_unittests. Fixing this |
204 // isn't worth the overhead of an additional library. | 217 // isn't worth the overhead of an additional library. |
205 ignored_record_names_.insert("TestAnimationDelegate"); | 218 ignored_record_names_.insert("TestAnimationDelegate"); |
206 | 219 |
207 // Part of our public interface that nacl and friends use. (Arguably, this | 220 // Part of our public interface that nacl and friends use. (Arguably, this |
208 // should mean that this is a higher priority but fixing this looks hard.) | 221 // should mean that this is a higher priority but fixing this looks hard.) |
209 ignored_record_names_.insert("PluginVersionInfo"); | 222 ignored_record_names_.insert("PluginVersionInfo"); |
210 | 223 |
211 // Measured performance improvement on cc_perftests. See | 224 // Measured performance improvement on cc_perftests. See |
212 // https://codereview.chromium.org/11299290/ | 225 // https://codereview.chromium.org/11299290/ |
213 ignored_record_names_.insert("QuadF"); | 226 ignored_record_names_.insert("QuadF"); |
| 227 |
| 228 // Enum type with _LAST members where _LAST doesn't mean last enum value. |
| 229 ignored_record_names_.insert("ViewID"); |
214 } | 230 } |
215 | 231 |
216 std::string ChromeClassTester::GetNamespaceImpl(const DeclContext* context, | 232 std::string ChromeClassTester::GetNamespaceImpl(const DeclContext* context, |
217 const std::string& candidate) { | 233 const std::string& candidate) { |
218 switch (context->getDeclKind()) { | 234 switch (context->getDeclKind()) { |
219 case Decl::TranslationUnit: { | 235 case Decl::TranslationUnit: { |
220 return candidate; | 236 return candidate; |
221 } | 237 } |
222 case Decl::Namespace: { | 238 case Decl::Namespace: { |
223 const NamespaceDecl* decl = dyn_cast<NamespaceDecl>(context); | 239 const NamespaceDecl* decl = dyn_cast<NamespaceDecl>(context); |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
297 PresumedLoc ploc = source_manager.getPresumedLoc(spelling_location); | 313 PresumedLoc ploc = source_manager.getPresumedLoc(spelling_location); |
298 if (ploc.isInvalid()) { | 314 if (ploc.isInvalid()) { |
299 // If we're in an invalid location, we're looking at things that aren't | 315 // If we're in an invalid location, we're looking at things that aren't |
300 // actually stated in the source. | 316 // actually stated in the source. |
301 return false; | 317 return false; |
302 } | 318 } |
303 | 319 |
304 *filename = ploc.getFilename(); | 320 *filename = ploc.getFilename(); |
305 return true; | 321 return true; |
306 } | 322 } |
OLD | NEW |