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"。