diff options
Diffstat (limited to '')
-rw-r--r-- | tools/lint/cpp/mingw-capitalization.py | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/tools/lint/cpp/mingw-capitalization.py b/tools/lint/cpp/mingw-capitalization.py new file mode 100644 index 0000000000..b5a4b07c6a --- /dev/null +++ b/tools/lint/cpp/mingw-capitalization.py @@ -0,0 +1,37 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +import os +import re + +from mozlint.types import LineType + +here = os.path.abspath(os.path.dirname(__file__)) +HEADERS_FILE = os.path.join(here, "mingw-headers.txt") +# generated by cd mingw-w64/mingw-w64-headers && +# find . -name "*.h" | xargs -I bob -- basename bob | sort | uniq) + + +class MinGWCapitalization(LineType): + def __init__(self, *args, **kwargs): + super(MinGWCapitalization, self).__init__(*args, **kwargs) + with open(HEADERS_FILE, "r") as fh: + self.headers = fh.read().strip().splitlines() + self.regex = re.compile("^#include\s*<(" + "|".join(self.headers) + ")>") + + def condition(self, payload, line, config): + if not line.startswith("#include"): + return False + + if self.regex.search(line, re.I): + return not self.regex.search(line) + + +def lint(paths, config, **lintargs): + results = [] + + m = MinGWCapitalization() + for path in paths: + results.extend(m._lint(path, config, **lintargs)) + return results |