namcap
Namcap 是一个 Arch Linux 工具,用于检查二进制软件包和源代码 PKGBUILD 中常见的打包错误。
安装
用法
要在文件上运行 namcap,其中 filename 是 PKGBUILD
或软件包二进制文件 package_name.tar.zst
的名称
$ namcap filename
如果您想查看额外的参考信息消息,请使用 --info
(-i
) 标志调用 namcap
$ namcap --info filename
Namcap 使用 标签 系统对输出进行分类。标签分为三种类型 — 错误(用 E
表示)、警告(用 W
表示)和参考信息(用 I
表示)。错误很重要,应立即修复;它们主要与安全性不足、缺少许可证或权限问题有关。
通常,namcap 会打印人类可读的解释(有时会提供有关如何解决问题的建议)。如果您想要可以轻松被程序解析的输出,请将 --machine-readable
(-m
) 标志传递给 namcap。
标签文件 /usr/share/namcap/namcap-tags
(在线来源) 由指定 namcap 代码中使用的连字符标签的人类可读形式的行组成。以 #
开头的行被视为注释
# The comment machine-parsable-tag %s :: The human-readable description for the tag %s
注意
::
(双冒号)将连字符分隔的机器可读标签与人类可读的描述分开。%s
是格式说明符,有关更多信息,请参阅 #创建模块。
有关更多信息,请参阅 namcap(1)、README 和 NEWS。
创建模块
主 namcap 程序 namcap.py
将软件包或 PKGBUILD
的文件名作为参数,并创建一个 pkginfo 对象,该对象会传递到 __tarball__
和 __pkgbuild__
中定义的一系列规则。模块完成后,请记住将其添加到相应的数组中
__tarball__
定义了处理二进制软件包的规则,__pkgbuild__
定义了处理PKGBUILD
的规则。
一个示例 namcap 模块如下所示
namcap/url.py
import pacman class package: def short_name(self): return "url" def long_name(self): return "Verifies url is included in a PKGBUILD" def prereq(self): return "" def analyze(self, pkginfo, tar): ret = [[], [], []] if not hasattr(pkginfo, 'url'): ret[0].append(("missing-url", ())) return ret def type(self): return "pkgbuild"
每个 namcap 模块都必须具有以下方法
short_name(self)
— 返回一个字符串,其中包含模块的短名称。通常,这与模块文件的 basename(1) 相同。
long_name(self)
— 返回一个字符串,其中包含模块的简明描述。当使用namcap --rules=rule_list
列出所有规则时,将使用此描述。
prereq(self)
— 返回一个字符串,其中包含模块正常运行所需的先决条件。对于处理PKGBUILD
的模块,通常为空字符串 (""
);对于处理软件包文件的模块,通常为"tar"
。如果应将软件包内容提取到临时目录以进行进一步处理,则应指定"extract"
。
analyze(self, pkginfo, tar)
— 应返回一个列表,该列表依次包含三个列表:错误、警告 和 参考信息 标签。这些 标签列表 的每个成员都应是一个元组,其中包含两个组成部分:标签 的短 - 连字符 - 形式,带有适当的格式说明符(如%s
)和参数。
type(self)
— 对于处理PKGBUILD
的模块,返回"pkgbuild"
;对于处理二进制软件包文件的模块,返回"tarball"
。