diff options
author | Misha Brukman <brukman+llvm@gmail.com> | 2009-01-02 21:15:30 +0000 |
---|---|---|
committer | Misha Brukman <brukman+llvm@gmail.com> | 2009-01-02 21:15:30 +0000 |
commit | 653222fc997be323af28d05b98e26daa0b98f477 (patch) | |
tree | e51ef363f163a61e48a77f232444c5ce4e7cdd22 /utils/lint/common_lint.py | |
parent | 9bd7a371cb83463fbf4e80d3d3e9d2cbecc9e94a (diff) |
Added some basic lint tools for C++ and generic lint tool applicable to all
types of files (TableGen, LLVM assembly, HTML files, etc.)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61592 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'utils/lint/common_lint.py')
-rw-r--r-- | utils/lint/common_lint.py | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/utils/lint/common_lint.py b/utils/lint/common_lint.py new file mode 100644 index 0000000000..9567031665 --- /dev/null +++ b/utils/lint/common_lint.py @@ -0,0 +1,58 @@ +#!/usr/bin/python +# +# Common lint functions applicable to multiple types of files. + +import re + +def VerifyLineLength(filename, lines, max_length): + """Checkes to make sure the file has no lines with lines exceeding the length + limit. + + Args: + filename: the file under consideration as string + lines: contents of the file as string array + max_length: maximum acceptable line length as number + """ + line_num = 1 + for line in lines: + length = len(line.rstrip()) # strip off EOL char(s) + if length > max_length: + print '%s:%d:Line exceeds %d chars (%d)' % (filename, line_num, + max_length, length) + line_num += 1 + + +def VerifyTrailingWhitespace(filename, lines): + """Checkes to make sure the file has no lines with trailing whitespace. + + Args: + filename: the file under consideration as string + lines: contents of the file as string array + """ + trailing_whitespace_re = re.compile(r'\s+$') + line_num = 1 + for line in lines: + if trailing_whitespace_re.match(line): + print '%s:%d:Trailing whitespace' % (filename, line_num) + line_num += 1 + + +class BaseLint: + def RunOnFile(filename, lines): + raise Exception('RunOnFile() unimplemented') + + +def RunLintOverAllFiles(lint, filenames): + """Runs linter over the contents of all files. + + Args: + lint: subclass of BaseLint, implementing RunOnFile() + filenames: list of all files whose contents will be linted + """ + for filename in filenames: + file = open(filename, 'r') + if not file: + print 'Cound not open %s' % filename + continue + lines = file.readlines() + lint.RunOnFile(filename, lines) |