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

Unified Diff: tools/clang/plugins/ChromeClassTester.cpp

Issue 6577011: Make the clang plugin look for path components. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 10 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/clang/plugins/ChromeClassTester.cpp
diff --git a/tools/clang/plugins/ChromeClassTester.cpp b/tools/clang/plugins/ChromeClassTester.cpp
index 6565cf816cf660115840f872e9dfd779ff292817..53d6feddf2d3524027f0514facd4e24feeee1b47 100644
--- a/tools/clang/plugins/ChromeClassTester.cpp
+++ b/tools/clang/plugins/ChromeClassTester.cpp
@@ -7,6 +7,8 @@
#include "ChromeClassTester.h"
+#include <sys/param.h>
+
using namespace clang;
namespace {
@@ -30,20 +32,22 @@ ChromeClassTester::ChromeClassTester(CompilerInstance& instance)
banned_namespaces_.push_back("std");
banned_namespaces_.push_back("__gnu_cxx");
- banned_directories_.push_back("third_party");
- banned_directories_.push_back("native_client");
- banned_directories_.push_back("breakpad");
- banned_directories_.push_back("courgette");
- banned_directories_.push_back("ppapi");
- banned_directories_.push_back("/usr");
- banned_directories_.push_back("testing");
- banned_directories_.push_back("googleurl");
- banned_directories_.push_back("v8");
- banned_directories_.push_back("sdch");
+ // If the path to the file in question has this as a path component, than
Nico 2011/02/24 16:00:05 then
+ // abort. We just do a simple string find on the path.
+ banned_directories_.push_back("third_party/");
+ banned_directories_.push_back("native_client/");
+ banned_directories_.push_back("breakpad/");
+ banned_directories_.push_back("courgette/");
+ banned_directories_.push_back("ppapi/");
+ banned_directories_.push_back("usr/");
+ banned_directories_.push_back("testing/");
+ banned_directories_.push_back("googleurl/");
+ banned_directories_.push_back("v8/");
+ banned_directories_.push_back("sdch/");
// You are standing in a mazy of twisty dependencies, all resolved by
// putting everything in the header.
- banned_directories_.push_back("chrome/test/automation");
+ banned_directories_.push_back("automation/");
// Used in really low level threading code that probably shouldn't be out of
// lined.
@@ -184,20 +188,18 @@ bool ChromeClassTester::InBannedDirectory(const SourceLocation& loc) {
return true;
}
- // Strip out all preceding path garbage. Linux and mac builds have
- // different path garbage, but after doing this, the path should be
- // relative to the root of the source tree. (If we didn't require
- // relative paths, we could have just used realpath().)
- if (!b.empty() && b[0] != '/') {
- size_t i = 0;
- for (; i < b.size() && (b[i] == '.' || b[i] == '/'); ++i) {}
- b = b.substr(i);
+ // Resolve the path.
+ char resolvedPath[MAXPATHLEN];
+ if (realpath(b.c_str(), resolvedPath)) {
Nico 2011/02/24 16:00:05 did you measure the build time impact of this?
Elliot Glaysher 2011/02/25 01:51:21 On linux, this adds 14 seconds to make -j8 chrome
+ b = resolvedPath;
}
for (std::vector<std::string>::const_iterator it =
banned_directories_.begin();
it != banned_directories_.end(); ++it) {
- if (starts_with(b, *it))
+ // If we can find any of the banned path components in this path, than
Nico 2011/02/24 16:00:05 then
+ // this file is rejected.
+ if (b.find(*it) != std::string::npos)
Nico 2011/02/24 16:00:05 hm, i'm almost certain this will start banning dir
Elliot Glaysher 2011/02/25 01:51:21 The relative paths will often be bellow the direct
return true;
}
}
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698