diff options
author | Andreas Sandberg <andreas.sandberg@arm.com> | 2016-03-30 15:31:23 +0100 |
---|---|---|
committer | Andreas Sandberg <andreas.sandberg@arm.com> | 2016-03-30 15:31:23 +0100 |
commit | a05efc77be5f6df0418ccba5f7bf524773885448 (patch) | |
tree | a30b8b31caa031ecfba97e6e6e526f5592cff9bf /util/style | |
parent | 2580fcd9d79e2be5933c2575ce1a6eb26380f8a5 (diff) | |
download | gem5-a05efc77be5f6df0418ccba5f7bf524773885448.tar.xz |
style: Add a control character checker
Add a style checker that verifies that source code doesn't contain
non-printable (control) characters. The only allowed control
characters are:
* 0x0a / \n: New line
* 0x09 / \t: Tab (the whitespace checker enforces no-tabs for C/C++ files)
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Brandon Potter <brandon.potter@amd.com>
--HG--
extra : rebase_source : 9ba3e2971774a7b3d73cda34bbee1f19c4add746
Diffstat (limited to 'util/style')
-rw-r--r-- | util/style/verifiers.py | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/util/style/verifiers.py b/util/style/verifiers.py index a9c78b413..8626cc7ce 100644 --- a/util/style/verifiers.py +++ b/util/style/verifiers.py @@ -348,6 +348,20 @@ class LineLength(LineVerifier): def fix_line(self, line): pass +class ControlCharacters(LineVerifier): + languages = set(('C', 'C++', 'swig', 'python', 'asm', 'isa', 'scons')) + test_name = 'control character' + opt_name = 'ascii' + + valid = ('\n', '\t') + invalid = "".join([chr(i) for i in range(0, 0x20) if chr(i) not in valid]) + + def check_line(self, line): + return self.fix_line(line) == line + + def fix_line(self, line): + return line.translate(None, ControlCharacters.invalid) + class BoolCompare(LineVerifier): languages = set(('C', 'C++', 'python')) test_name = 'boolean comparison' |