summaryrefslogtreecommitdiff
path: root/util/style/verifiers.py
diff options
context:
space:
mode:
authorAndreas Sandberg <andreas.sandberg@arm.com>2016-03-30 15:31:23 +0100
committerAndreas Sandberg <andreas.sandberg@arm.com>2016-03-30 15:31:23 +0100
commita05efc77be5f6df0418ccba5f7bf524773885448 (patch)
treea30b8b31caa031ecfba97e6e6e526f5592cff9bf /util/style/verifiers.py
parent2580fcd9d79e2be5933c2575ce1a6eb26380f8a5 (diff)
downloadgem5-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/verifiers.py')
-rw-r--r--util/style/verifiers.py14
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'