namcap

出自 ArchWiki

Namcap 是一个 Arch Linux 工具,用于检查二进制软件包和源代码 PKGBUILD 中常见的打包错误。

安装

安装 namcap 软件包。

用法

要在文件上运行 namcap,其中 filenamePKGBUILD 或软件包二进制文件 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)READMENEWS

创建模块

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"