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
This commit is contained in:
Andreas Sandberg 2016-03-30 15:31:23 +01:00
parent 2580fcd9d7
commit a05efc77be

View file

@ -348,6 +348,20 @@ class LineLength(LineVerifier):
def fix_line(self, line): def fix_line(self, line):
pass 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): class BoolCompare(LineVerifier):
languages = set(('C', 'C++', 'python')) languages = set(('C', 'C++', 'python'))
test_name = 'boolean comparison' test_name = 'boolean comparison'