CLI
CLI 遥测
evlog CLI 会收集哪些关于自身使用情况的数据、如何查看这些数据,以及关闭它的三种方式——DO_NOT_TRACK、EVLOG_TELEMETRY=0,或 evlog telemetry disable。
evlog CLI 每次运行都会记录一条匿名的宽事件,因此我们知道人们使用了哪些命令,以及哪些命令出错。它使用的正是 evlog 为你自己的 CLI 提供的同一套遥测工具包,只是把它指向了自身。
本页讲的是 CLI 自身的遥测。如果你正在为你正在构建的 CLI 配置仪表,你需要的是遥测。
:::
每个字符串都是 CLI 自有目录中的一个 ID,并且在发送前会根据允许列表进行检查;未声明的值会被丢弃,而不会被传输。绝不会记录你的服务名称,也不会记录包名称、路径或从源代码中读取的任何内容。最后一行只表示扫描是否发现了某些内容,绝不会表示发现了什么。
规则 ID 是 CLI 自有的固定集合,且已经公开。从源代码中读取的所有内容都是计数:没有路由路径、没有文件名、没有项目名称、没有代码片段。类型同样是 CLI 自有的封闭集合;项目中不存在的类型会被省略,而不是以零值发送,这与保持默认值的标志不会被记录的约定相同。对于项目中存在但已完全覆盖的类型,其暗黑计数为 该命令会输出遥测是否开启、数据目录的位置,以及完整的披露表:每个字段、其类型及其用途。披露信息由发送事件的代码生成,因此不会与实际通过网络发送的内容产生偏差。拟发送的负载会打印到标准错误输出。
init 记录了什么
evlog init 比其他命令询问更多问题,因此它会记录这些问题的答案,从而让流程优先展示人们实际选择的选项,并舍弃无人选择的选项。| 记录内容 | 示例 |
|---|---|
| 框架、开发环境数据出口、采样预设 | nuxt、fs、balanced |
| 每个目标位置的一个标志、所选的额外项和增强器 | initProdAxiom: true |
| 计数 | 写入的文件数、剩余的手动步骤、doctor 失败次数 |
| 某个提议后面是否有实际内容 | initHadRepeatedErrors: true |
map 记录的内容
evlog map 记录扫描的形态:分数及其等级、入口点的数量,以及其中有多少是已检测覆盖、部分覆盖、暗黑或豁免的,检测到的是哪个框架,以及 --min-score 或 --baseline 门禁是否导致运行失败。| 记录内容 | 示例 |
|---|---|
| 分数和等级 | mapScore: 72, mapGrade: good |
| 按覆盖情况统计的入口点数量 | mapEntryPoints: 34, mapDark: 9 |
| 按类型统计:入口点和暗黑入口点 | mapKindPage: 12, mapDarkPage: 3 |
| 按敏感性统计:资金 / 身份验证 / PII 入口点及暗黑入口点 | mapSensitiveMoney: 2, mapDarkMoney: 1 |
| 按规则统计:未通过规则的入口点数量,以及豁免该规则的入口点数量 | mapFailWideEvent: 6, mapSuppressedWideEvent: 2 |
| 运行了哪个门禁,以及是否失败 | mapGate: baseline, mapGateFailed: true |
0,因此 mapKindPage: 12, mapDarkPage: 3 始终表示“12 个页面,其中 3 个是暗黑的”,绝不会表示缺少某个数字。敏感性是启发式分类(依据导入内容和路径术语,参见报告中的 $ / A / o 标记),因此按敏感性统计的数量是分类器发现情况的估计值,并非绝对事实。查看收集的内容
Terminal
evlog telemetry status
Output
Telemetry: enabled (preference: enabled)
Data directory: ~/.config/evlog-cli/telemetry
事件中包含什么
每次运行记录一条事件,其中包含命令名称、耗时、是否成功,以及在失败时的错误码。除此之外,还会记录:Node 版本、操作系统和架构、运行是否在 CI 中以及使用的是哪个提供商、stdout 是否为 TTY,以及是否由 AI 编码代理驱动。标志会按照你实际传入的内容进行记录。布尔值和数字会保留其值;字符串值会被记录为<set>,而不是记录其内容,除非该标志明确列入允许列表。位置参数完全不会被记录,保留默认值的标志也不会被记录,因此单独运行 evlog map 时会发送一个空的 flags 对象。机器 ID 是哈希值,在临时 CI 环境中会被完全省略。不包含文件路径、源代码、项目名称、路由路径或参数值。
关闭它
以下任一方式都足够:Terminal
# 持久化偏好
evlog telemetry disable
# 单次运行,或在 shell 配置文件中
EVLOG_TELEMETRY=0 evlog map
# 跨工具标准,在任何地方都受支持
export DO_NOT_TRACK=1
evlog telemetry disable 还会清除任何已排队但尚未发送的内容。evlog telemetry enable 会将其重新开启。在信任之前先检查
要精确查看一次运行将会发送什么,而不实际发送它:Terminal
EVLOG_TELEMETRY_DEBUG=1 evlog map
命令
| 命令 | 作用 |
|---|---|
evlog telemetry status | 当前状态、数据目录以及完整披露信息 |
evlog telemetry enable | 启用匿名使用遥测 |
evlog telemetry disable | 禁用并清除未发送的数据 |