commit: 64ea04886ae7769db53bef175652531af240fb83
Author: Arthur Zamarin <arthurzam <AT> gentoo <DOT> org>
AuthorDate: Sat Sep 23 10:35:09 2023 +0000
Commit: Arthur Zamarin <arthurzam <AT> gentoo <DOT> org>
CommitDate: Sat Sep 23 10:35:09 2023 +0000
URL:
https://gitweb.gentoo.org/proj/pkgcore/pkgcheck.git/commit/?id=64ea0488
EmptyGlobalAssignment: check for empty global assignments
Signed-off-by: Arthur Zamarin <arthurzam <AT> gentoo.org>
src/pkgcheck/checks/codingstyle.py | 21 ++++++++++++++++++++-
.../EmptyGlobalAssignment/expected.json | 3 +++
2 files changed, 23 insertions(+), 1 deletion(-)
diff --git a/src/pkgcheck/checks/codingstyle.py
b/src/pkgcheck/checks/codingstyle.py
index 0e2188db..6f1e3b7f 100644
--- a/src/pkgcheck/checks/codingstyle.py
+++ b/src/pkgcheck/checks/codingstyle.py
@@ -547,6 +547,14 @@ class MultipleKeywordsLines(results.LinesResult,
results.Style):
return f"KEYWORDS specified {self.lines_str}"
+class EmptyGlobalAssignment(results.LineResult, results.Style):
+ """Global scope useless empty assignment."""
+
+ @property
+ def desc(self):
+ return f"line {self.lineno}: empty global assignment: {self.line}"
+
+
def verify_vars(*variables):
"""Decorator to register raw variable verification methods."""
@@ -569,7 +577,13 @@ class MetadataVarCheck(Check):
_source = sources.EbuildParseRepoSource
known_results = frozenset(
- [HomepageInSrcUri, StaticSrcUri, ReferenceInMetadataVar,
MultipleKeywordsLines]
+ {
+ HomepageInSrcUri,
+ StaticSrcUri,
+ ReferenceInMetadataVar,
+ MultipleKeywordsLines,
+ EmptyGlobalAssignment,
+ }
)
# mapping between registered variables and verification methods
@@ -644,6 +658,11 @@ class MetadataVarCheck(Check):
keywords_lines = set()
for node in pkg.global_query(bash.var_assign_query):
name = pkg.node_str(node.child_by_field_name("name"))
+ value = node.child_by_field_name("value")
+ if name in pkg.eapi.eclass_keys:
+ if not value or not pkg.node_str(value).strip("\"'"):
+ lineno, _ = node.start_point
+ yield EmptyGlobalAssignment(line=pkg.node_str(node),
lineno=lineno + 1, pkg=pkg)
if name in self.known_variables:
# RHS value node should be last
val_node = node.children[-1]
diff --git
a/testdata/data/repos/standalone/MetadataVarCheck/EmptyGlobalAssignment/expected.json
b/testdata/data/repos/standalone/MetadataVarCheck/EmptyGlobalAssignment/expected.json
new file mode 100644
index 00000000..2e861fc0
--- /dev/null
+++
b/testdata/data/repos/standalone/MetadataVarCheck/EmptyGlobalAssignment/expected.json
@@ -0,0 +1,3 @@
+{"__class__": "EmptyGlobalAssignment", "category": "DescriptionCheck",
"package": "BadDescription", "version": "1", "line": "DESCRIPTION=\"\"",
"lineno": 1}
+{"__class__": "EmptyGlobalAssignment", "category": "MetadataVarCheck",
"package": "MultipleKeywordsLines", "version": "0", "line": "KEYWORDS=\"\"",
"lineno": 8}
+{"__class__": "EmptyGlobalAssignment", "category": "MetadataVarCheck",
"package": "ReferenceInMetadataVar", "version": "3", "line": "LICENSE=\"\"",
"lineno": 5}