跳到正文
Hacker News· cphr·· 8 天前AI 评分38

Karma Pro:macOS 开源代码安全审查工具,14 种语言 4 引擎静态分析

Code Security Review Tool

AI 导读

macOS 开源代码安全审查工具 Karma Pro 采用 4 个独立引擎,支持 14 种语言解析,结合跨过程污点追踪、启发式引擎、基于补丁训练的贝叶斯分类器和 AI 扫描。

正文 · AI 翻译

macOS · 开源 · Apache-2.0

代码 安全审查 工具

静态分析读取你的源代码,在解析树上进行过程间污点追踪,一个 启发式引擎,一个基于软件补丁和 AI 扫描训练的贝叶斯分类器。然后是 图、数据流和入口点,都来自同一个索引。

Karma Pro open on a macOS project with the file tree, source viewer and analysis panes.

14种解析语言

4个独立引擎

功能

功能作用显示位置

过程间污点追踪一个值从源头到消费它的汇点,跨越函数边界和文件。数据流图

按语言解析的 AST每种语言一个解析器,因此它知道循环、类方法和函数体是什么。不是正则表达式。源代码查看器、复杂度

启发式引擎匹配已知危险的构造,并连同它识别出的模式一起报告。发现列表

AI 安全扫描模型读取每个文件并报告其发现,与确定性结果并列。发现列表,标记为 AI

贝叶斯分类器在补丁文件上训练,为每一行打出它是缺陷的概率分数。ML 热力图

可达性遍历整个调用链直到树的顶端,最终判定为远程、本地或无。可达性图

外部入口它能找到的每一个不可信输入,分组并标记为远程或本地。入口图

控制流每个函数的流程图,包含圈复杂度、分支和循环。可平移、缩放、点击查看。流程面板

追踪变量变量的每一次使用,并递归展开被调用者。变量流

回溯分析器粘贴崩溃或堆栈跟踪,得到针对当前打开项目解析的可点击图表。回溯窗口

调试器模拟器单步跳过、步入、后退、重置和播放,值可编辑,无需重新构建。(实验性)单步控制

类使用一个动画图,类位于中心,每个构造点位于其下。类图

拉取请求监控监视仓库,按需扫描 PR,并报告差异。菜单栏

依赖检查检查项目自身的依赖是否存在已知漏洞包

AI 助手OpenRouter 或 Ollama,锚定到当前打开的项目。询问某一行,得到关于你代码的回答。AI 面板

缺陷跟踪器严重性、可利用性、状态、包和版本,在重启后本地持久保存。缺陷标签页

研究 wiki跨项目共享的私有页面,自动保存,可导出为加密存档。Wiki 标签页

报告可保存的 Markdown、与基线的并排差异,以及所有内容的 JSON 备份。(仅当你监控 PR 时)报告面板

发现

每条发现
都说明它是如何被发现的。

结构性发现、匹配到的模式和模型意见不是同一种结论,因此应用从不将它们混为一谈。每一行都带有产生它的引擎,以及一个权衡可利用性和可达性的评级,而不仅仅是严重程度。

Critical、High、Medium 和 Low 按每个发现分配。模型意见标记为 AI,与其他发现放在一起,而不是单独列在一个列表里,这样审查者可以在一处看到全貌。

评级引擎
CriticalAST
CriticalAI
HighHeuristic
HighAST
MediumAI
LowAST

图表

数据流

每张图表都根据你打开的项目生成。点击一个节点,你就进入了调用链。

Karma Pro open on a macOS project with the file tree, source viewer and analysis panes.

控制流每个函数的流程图,包含圈复杂度、分支和循环

追踪变量变量的每一次使用,递归展开被调用者

外部入口每一个不可信输入,分组并标记为 Remote 或 Local

可达性调用者链一路向上,最终为 Remote、Local 或无

回溯将粘贴的崩溃或堆栈跟踪针对打开的项目进行解析

类使用以该类为中心,其下是每一个构造位置

调用图同一文件中谁调用了你点击的函数

复杂度按源码顺序排列的函数及其圈复杂度

拉取请求

它会监视你
指向的仓库。

菜单栏项会保留一个仓库列表及其上打开的拉取请求,并在有变化时通知你。在你开启之前,监控一直处于关闭状态。

Review 是唯一会进行扫描的操作。Not Now 和 Ignore 从不扫描,因此关闭通知绝不会自行启动扫描。

托管平台GitHub、GitLab、Bitbucket、Gitea 和 Forgejo

频率每 15 分钟轮询一次,并与上一次轮询进行比较

触发仅 Review,Not Now 和 Ignore 从不扫描

强制推送通过 head commit 而非标题识别,因此被重写的 PR 不会被遗漏

深度仅更改的文件,或在跨文件污点重要时扫描整个项目

输出可保存的 Markdown 报告,以及与发现对照的并排差异

私有仓库Keychain 中的只读令牌,它从不批准、评论或发布

助手

询问你正在审查的
代码。

连接 OpenRouter,粘贴密钥,按 Connect,然后选择任意模型:Claude、GPT-4o、 Gemini、Llama、DeepSeek、Mistral。或者指向 Ollama 并留在本机。打开项目的路径会随系统消息中的每个提示一起发送,因此回答是关于你的代码的。

右键点击任意行可查看 (AI) How to fix it,同时会发送周围的上下文。同一连接也作为扫描通道运行,上面标记为 AI 的发现就来自这里。

密钥存储在你的机器上,并在多次启动之间保留。模型从 OpenRouter 实时列出,并带有刷新按钮。你还需要在 AI 助手中拥有有效令牌才能执行 AI 扫描。

Karma Pro's AI assistant panel, with the conversation and the model selector.

安装

安装

该版本是自签名的,因此 macOS 首次会阻止它并询问你是否信任 它。这是预期行为。打开一次,确认后,之后它就能正常运行。

需要 macOS 12.0 Monterey 或更新版本。

下载最新版本

版本Karma.pro.dmg

签名自签名,ad-hoc

要求macOS 12.0 Monterey+

架构Apple silicon、Intel

如果“打开”选项始终不出现,说明隔离属性仍在 bundle 上。

用 xattr -d com.apple.quarantine "/Applications/Karma Pro.app" 清除一次

构建

自己
编译。

一个 Swift 包,一个脚本。./build.sh 会编译 Sources/ 中的所有内容,并在仓库根目录组装 Karma Pro.app。 需要 Xcode 14 或更新版本,或 Swift 5.7 及以上。

源码github.com/cphr/karmapro

工具链Swift 5.7 · Xcode 14+

目标x86_64-apple-macos12.0, arm64-apple-macos12.0

输出Karma Pro.app

签名Ad-hoc

许可证Apache-2.0

来源:Hacker News · reviewcode.org