check-package: check whitespace and empty lines

Create 3 new check functions to warn when:
- there are consecutive empty lines in the file, see [1];
- the last line of the file is empty, see [2];
- there are lines with trailing whitespace, see [3].

Apply these functions to Config.*, *.mk and *.hash, but not for *.patch
files since they can contain any of these and still be valid.

[1] http://patchwork.ozlabs.org/patch/682660/
[2] http://patchwork.ozlabs.org/patch/643288/
[3] http://patchwork.ozlabs.org/patch/398984/

Signed-off-by: Ricardo Martincoski <ricardo.martincoski@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
This commit is contained in:
Ricardo Martincoski 2017-02-19 19:17:18 -03:00 committed by Thomas Petazzoni
parent 111132903d
commit c6bf3239cb
4 changed files with 44 additions and 0 deletions

View File

@ -3,6 +3,32 @@
from checkpackagebase import _CheckFunction from checkpackagebase import _CheckFunction
class ConsecutiveEmptyLines(_CheckFunction):
def before(self):
self.lastline = "non empty"
def check_line(self, lineno, text):
if text.strip() == "" == self.lastline.strip():
return ["{}:{}: consecutive empty lines"
.format(self.filename, lineno)]
self.lastline = text
class EmptyLastLine(_CheckFunction):
def before(self):
self.lastlineno = 0
self.lastline = "non empty"
def check_line(self, lineno, text):
self.lastlineno = lineno
self.lastline = text
def after(self):
if self.lastline.strip() == "":
return ["{}:{}: empty line at end of file"
.format(self.filename, self.lastlineno)]
class NewlineAtEof(_CheckFunction): class NewlineAtEof(_CheckFunction):
def before(self): def before(self):
self.lastlineno = 0 self.lastlineno = 0
@ -17,3 +43,12 @@ class NewlineAtEof(_CheckFunction):
return ["{}:{}: missing newline at end of file" return ["{}:{}: missing newline at end of file"
.format(self.filename, self.lastlineno), .format(self.filename, self.lastlineno),
self.lastline] self.lastline]
class TrailingSpace(_CheckFunction):
def check_line(self, lineno, text):
line = text.rstrip("\r\n")
if line != line.rstrip():
return ["{}:{}: line contains trailing whitespace"
.format(self.filename, lineno),
text]

View File

@ -4,4 +4,7 @@
# checked by running "make menuconfig". # checked by running "make menuconfig".
# Notice: ignore 'imported but unused' from pyflakes for check functions. # Notice: ignore 'imported but unused' from pyflakes for check functions.
from checkpackagelib import ConsecutiveEmptyLines
from checkpackagelib import EmptyLastLine
from checkpackagelib import NewlineAtEof from checkpackagelib import NewlineAtEof
from checkpackagelib import TrailingSpace

View File

@ -4,4 +4,7 @@
# "make package-dirclean package-source". # "make package-dirclean package-source".
# Notice: ignore 'imported but unused' from pyflakes for check functions. # Notice: ignore 'imported but unused' from pyflakes for check functions.
from checkpackagelib import ConsecutiveEmptyLines
from checkpackagelib import EmptyLastLine
from checkpackagelib import NewlineAtEof from checkpackagelib import NewlineAtEof
from checkpackagelib import TrailingSpace

View File

@ -5,4 +5,7 @@
# packages enabled. # packages enabled.
# Notice: ignore 'imported but unused' from pyflakes for check functions. # Notice: ignore 'imported but unused' from pyflakes for check functions.
from checkpackagelib import ConsecutiveEmptyLines
from checkpackagelib import EmptyLastLine
from checkpackagelib import NewlineAtEof from checkpackagelib import NewlineAtEof
from checkpackagelib import TrailingSpace