namcap
Namcap 是一个 Arch Linux 工具,用于检查二进制软件包和源码 PKGBUILD 是否存在常见的打包错误。
安装
用法
要对文件运行 namcap,其中 filename 是 PKGBUILD 或软件包二进制文件 package_name.tar.zst 的名称。
$ namcap filename
如果您想查看额外的详细信息,请使用 --info (-i) 标志调用 namcap。
$ namcap --info filename
Namcap 使用三种类型的 标签 系统来对输出进行分类。
- 错误—以
E:表示—是 namcap 非常确定是错误的并且需要修复的事项。错误很重要,应该立即修复;它们主要与安全性不足、缺少许可证或权限问题有关。 - 警告—以
W:表示—是 namcap 认为应该更改的事项,但如果您知道自己在做什么,则可以保留它们。 - 信息—以
I:表示—仅在使用info参数时显示。信息消息提供可能有所帮助但不需要更改的信息—可以将它们视为注释或说明。
通常 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)— 应返回一个列表,该列表依次包含三个列表:error、warning 和 information 标签。这些 标签列表 的每个成员都应为一个元组,包含两个部分:标签 的短格式(连字符分隔),带有可能的格式说明符(如%s),以及参数。
type(self)— 对于处理PKGBUILD的模块,返回"pkgbuild";对于处理二进制软件包文件的模块,返回"tarball"。