Index: cpplint.py |
diff --git a/cpplint.py b/cpplint.py |
index ac19165b357d187d392ad7fb59f3f014c7ba3535..7ce70abeb6f756c731587bac55068a1355acc01d 100755 |
--- a/cpplint.py |
+++ b/cpplint.py |
@@ -524,6 +524,10 @@ _error_suppressions = {} |
# This is set by --root flag. |
_root = None |
+# The project root directory. Used for deriving header guard CPP variable. |
+# This is set by --project_root flag. Must be an absolute path. |
+_project_root = None |
+ |
# The allowed line length of files. |
# This is set by --linelength flag. |
_line_length = 80 |
@@ -1065,6 +1069,10 @@ class FileInfo(object): |
if os.path.exists(fullname): |
project_dir = os.path.dirname(fullname) |
+ if _project_root: |
+ prefix = os.path.commonprefix([_project_root, project_dir]) |
+ return fullname[len(prefix) + 1:] |
+ |
if os.path.exists(os.path.join(project_dir, ".svn")): |
# If there's a .svn file in the current directory, we recursively look |
# up the directory tree for the top of the SVN checkout |
@@ -6017,7 +6025,8 @@ def ParseArguments(args): |
'filter=', |
'root=', |
'linelength=', |
- 'extensions=']) |
+ 'extensions=', |
+ 'project_root=']) |
except getopt.GetoptError: |
PrintUsage('Invalid arguments.') |
@@ -6046,6 +6055,11 @@ def ParseArguments(args): |
elif opt == '--root': |
global _root |
_root = val |
+ elif opt == '--project_root': |
+ global _project_root |
+ _project_root = val |
+ if not os.path.isabs(_project_root): |
+ PrintUsage('Project root must be an absolute path.') |
elif opt == '--linelength': |
global _line_length |
try: |