commit: aefdf93fc423a08eb41d09eecb5cd376183e1660 Author: Arthur Zamarin <arthurzam <AT> gentoo <DOT> org> AuthorDate: Thu Jun 22 19:39:42 2023 +0000 Commit: Arthur Zamarin <arthurzam <AT> gentoo <DOT> org> CommitDate: Thu Jun 22 19:44:44 2023 +0000 URL: https://gitweb.gentoo.org/proj/pkgcore/pkgcheck.git/commit/?id=aefdf93f
MissingInherits: exclude @USER_VARIABLEs Resolves: https://github.com/pkgcore/pkgcheck/issues/575 Signed-off-by: Arthur Zamarin <arthurzam <AT> gentoo.org> src/pkgcheck/checks/codingstyle.py | 14 +++++++++++++- .../InheritsCheck/MissingInherits/MissingInherits-2.ebuild | 2 +- testdata/repos/eclass/eclass/stub.eclass | 6 ++++++ 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/pkgcheck/checks/codingstyle.py b/src/pkgcheck/checks/codingstyle.py index a9eb70fa..1ab82ad9 100644 --- a/src/pkgcheck/checks/codingstyle.py +++ b/src/pkgcheck/checks/codingstyle.py @@ -749,6 +749,16 @@ class InheritsCheck(Check): for name in eclass_obj.variable_names: self.exported.setdefault(name, set()).add(eclass) + # collect all @USER_VARIABLEs, which are excluded from MissingInherits + self.user_variables = frozenset( + { + x.name + for eclass_obj in self.eclass_cache.values() + for x in eclass_obj.variables + if x.user_variable + } + ) + # register EAPI-related funcs/cmds to ignore self.eapi_funcs = {} for eapi in EAPI.known_eapis.values(): @@ -826,7 +836,9 @@ class InheritsCheck(Check): if node.parent.type == "unset_command": continue if name not in self.eapi_vars[pkg.eapi] | assigned_vars.keys(): - lineno, colno = node.start_point + if name in self.user_variables: + continue + lineno, _colno = node.start_point if eclass := self.get_eclass(name, pkg): used[eclass].append((lineno + 1, name, name)) diff --git a/testdata/repos/eclass/InheritsCheck/MissingInherits/MissingInherits-2.ebuild b/testdata/repos/eclass/InheritsCheck/MissingInherits/MissingInherits-2.ebuild index 9aa0432e..025d284c 100644 --- a/testdata/repos/eclass/InheritsCheck/MissingInherits/MissingInherits-2.ebuild +++ b/testdata/repos/eclass/InheritsCheck/MissingInherits/MissingInherits-2.ebuild @@ -11,5 +11,5 @@ src_prepare() { } inherit_public_func() { - echo "inherit_public_func" + echo "inherit_public_func" "${LARRY_EASTER_EGG}" } diff --git a/testdata/repos/eclass/eclass/stub.eclass b/testdata/repos/eclass/eclass/stub.eclass index b30f3f62..0fbb17ea 100644 --- a/testdata/repos/eclass/eclass/stub.eclass +++ b/testdata/repos/eclass/eclass/stub.eclass @@ -11,3 +11,9 @@ EXPORT_FUNCTIONS src_prepare # @DESCRIPTION: # Public src_prepare stub function. stub_src_prepare() { :; } + +# @ECLASS_VARIABLE: LARRY_EASTER_EGG +# @USER_VARIABLE +# @DEFAULT_UNSET +# @DESCRIPTION: +# A special user variable, an easter egg if you can find it.
