From: Ricardo Martincoski <ricardo.martincoski@gmail.com>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH v2 3/9] check-package: check whitespace and empty lines
Date: Sun, 19 Feb 2017 19:17:18 -0300 [thread overview]
Message-ID: <20170219221724.27298-4-ricardo.martincoski@gmail.com> (raw)
In-Reply-To: <20170219221724.27298-1-ricardo.martincoski@gmail.com>
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>
---
Changes v1 -> v2:
- update commit subject since now Config.* are tested;
- use classes instead of functions to declare each check (Thomas DS);
---
Notes:
$ time support/scripts/check-package $(find package -type f) >/dev/null 2>/dev/null
real 0m0.622s
user 0m0.576s
sys 0m0.048s
ConsecutiveEmptyLines:
support/scripts/check-package --include-only ConsecutiveEmptyLines \
$(find package -type f) 2>/dev/null | wc -l
23
(cd support/scripts/check-package-example && \
../check-package --include-only ConsecutiveEmptyLines -vv package/*/*)
package/package1/Config.in:22: consecutive empty lines
package/package1/Config.something:3: consecutive empty lines
package/package1/package1.hash:8: consecutive empty lines
package/package1/package1.mk:25: consecutive empty lines
180 lines processed
4 warnings generated
EmptyLastLine:
support/scripts/check-package --include-only EmptyLastLine \
$(find package -type f) 2>/dev/null | wc -l
18
(cd support/scripts/check-package-example && \
../check-package --include-only EmptyLastLine -vv package/*/*)
package/package1/package1.hash:8: empty line at end of file
package/package1/package1.mk:55: empty line at end of file
180 lines processed
2 warnings generated
TrailingSpace:
support/scripts/check-package --include-only TrailingSpace \
$(find package -type f) 2>/dev/null | wc -l
5
(cd support/scripts/check-package-example && \
../check-package --include-only TrailingSpace -vv package/*/*)
package/package1/package1.hash:2: line contains trailing whitespace
sha256 1234567890123456789012345678901234567890123456789012345678901234 package1-1.0.tar.gz
package/package1/package1.hash:7: line contains trailing whitespace
package/package1/package1.mk:7: line contains trailing whitespace
PACKAGE1_SITE = https://localhost
package/package1/package1.mk:14: line contains trailing whitespace
PACKAGE1_INSTALL_STAGING=NO
package/package1/package1.mk:15: line contains trailing whitespace
PACKAGE1_INSTALL_TARGET = YES< tab >
package/package1/package1.mk:55: line contains trailing whitespace
< tab >
180 lines processed
6 warnings generated
support/scripts/checkpackagelib.py | 35 +++++++++++++++++++++++++++++++
support/scripts/checkpackagelib_config.py | 3 +++
support/scripts/checkpackagelib_hash.py | 3 +++
support/scripts/checkpackagelib_mk.py | 3 +++
4 files changed, 44 insertions(+)
diff --git a/support/scripts/checkpackagelib.py b/support/scripts/checkpackagelib.py
index 1a4904183..280084575 100644
--- a/support/scripts/checkpackagelib.py
+++ b/support/scripts/checkpackagelib.py
@@ -3,6 +3,32 @@
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):
def before(self):
self.lastlineno = 0
@@ -17,3 +43,12 @@ class NewlineAtEof(_CheckFunction):
return ["{}:{}: missing newline at end of file"
.format(self.filename, self.lastlineno),
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]
diff --git a/support/scripts/checkpackagelib_config.py b/support/scripts/checkpackagelib_config.py
index f546d173e..ee5981e64 100644
--- a/support/scripts/checkpackagelib_config.py
+++ b/support/scripts/checkpackagelib_config.py
@@ -4,4 +4,7 @@
# checked by running "make menuconfig".
# 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 TrailingSpace
diff --git a/support/scripts/checkpackagelib_hash.py b/support/scripts/checkpackagelib_hash.py
index 8c0337fc9..1f268838f 100644
--- a/support/scripts/checkpackagelib_hash.py
+++ b/support/scripts/checkpackagelib_hash.py
@@ -4,4 +4,7 @@
# "make package-dirclean package-source".
# 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 TrailingSpace
diff --git a/support/scripts/checkpackagelib_mk.py b/support/scripts/checkpackagelib_mk.py
index 84eeef889..a37304b6d 100644
--- a/support/scripts/checkpackagelib_mk.py
+++ b/support/scripts/checkpackagelib_mk.py
@@ -5,4 +5,7 @@
# packages enabled.
# 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 TrailingSpace
--
2.11.0
next prev parent reply other threads:[~2017-02-19 22:17 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-12-31 3:21 [Buildroot] [PATCH 0/9] A checkpackage script that verifies a package coding style Ricardo Martincoski
2016-12-31 3:21 ` [Buildroot] [PATCH 1/9] support/scripts/check-package: example Ricardo Martincoski
2016-12-31 3:21 ` [Buildroot] [PATCH 2/9] support/scripts/check-package: new script Ricardo Martincoski
2017-01-24 21:14 ` Thomas De Schampheleire
2017-02-06 18:53 ` Thomas De Schampheleire
2017-02-07 0:17 ` Ricardo Martincoski
2017-02-19 23:13 ` Ricardo Martincoski
2016-12-31 3:21 ` [Buildroot] [PATCH 3/9] check-package: check whitespace and empty lines Ricardo Martincoski
2016-12-31 3:21 ` [Buildroot] [PATCH 4/9] check-package: check *.hash files Ricardo Martincoski
2017-01-24 21:18 ` Thomas De Schampheleire
2017-02-19 23:16 ` Ricardo Martincoski
2016-12-31 3:21 ` [Buildroot] [PATCH 5/9] check-package: check *.patch files Ricardo Martincoski
2017-01-24 21:21 ` Thomas De Schampheleire
2017-02-07 9:58 ` Thomas Petazzoni
2017-02-19 23:41 ` Ricardo Martincoski
2016-12-31 3:21 ` [Buildroot] [PATCH 6/9] check-package: check *.mk files Ricardo Martincoski
2016-12-31 3:21 ` [Buildroot] [PATCH 7/9] docs/manual: size of tab in package description Ricardo Martincoski
2017-01-21 16:58 ` Romain Naour
2017-02-07 1:10 ` Ricardo Martincoski
2016-12-31 3:21 ` [Buildroot] [PATCH 8/9] check-package: check Config.in.* files Ricardo Martincoski
2016-12-31 3:21 ` [Buildroot] [PATCH 9/9] check-package: check *.mk for typo in variable Ricardo Martincoski
2017-01-21 17:19 ` Romain Naour
2017-02-07 0:33 ` Ricardo Martincoski
2017-02-07 9:03 ` Peter Korsgaard
2017-01-21 17:56 ` [Buildroot] [PATCH 0/9] A checkpackage script that verifies a package coding style Romain Naour
2017-02-07 0:52 ` Ricardo Martincoski
2017-02-19 22:17 ` [Buildroot] [PATCH v2 " Ricardo Martincoski
2017-02-19 22:17 ` [Buildroot] [PATCH v2 1/9] support/scripts/check-package: example Ricardo Martincoski
2017-02-19 22:17 ` [Buildroot] [PATCH v2 2/9] support/scripts/check-package: new script Ricardo Martincoski
2017-02-19 22:17 ` Ricardo Martincoski [this message]
2017-02-19 22:17 ` [Buildroot] [PATCH v2 4/9] check-package: check *.hash files Ricardo Martincoski
2017-02-19 22:17 ` [Buildroot] [PATCH v2 5/9] check-package: check *.patch files Ricardo Martincoski
2017-02-19 22:17 ` [Buildroot] [PATCH v2 6/9] check-package: check *.mk files Ricardo Martincoski
2017-02-19 22:17 ` [Buildroot] [PATCH v2 7/9] docs/manual: size of tab in package description Ricardo Martincoski
2017-02-19 22:17 ` [Buildroot] [PATCH v2 8/9] check-package: check Config.* files Ricardo Martincoski
2017-02-19 22:17 ` [Buildroot] [PATCH v2 9/9] check-package: check *.mk for typo in variable Ricardo Martincoski
2017-04-08 14:21 ` [Buildroot] [PATCH v2 0/9] A checkpackage script that verifies a package coding style Thomas Petazzoni
2017-04-11 23:03 ` Ricardo Martincoski
2017-04-12 7:49 ` Thomas Petazzoni
2017-04-13 3:03 ` Ricardo Martincoski
2017-04-13 7:20 ` Thomas Petazzoni
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170219221724.27298-4-ricardo.martincoski@gmail.com \
--to=ricardo.martincoski@gmail.com \
--cc=buildroot@busybox.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.