主要观点:
- Semgrep 是一个能通过匹配抽象语法树(AST)来搜索代码的工具,可通过 playground 测试模式,在同类工具中能力较强。
- Semgrep 不仅能搜索还支持重写匹配,有简单的规则定义示例。
- 内置的自动修复功能有限,正在探索用大型语言模型(LLM)来修复 Semgrep 匹配,创建了 semgrepx 工具,将匹配输入 LLM 并替换为响应,如使用“semgrep -l go --pattern 'log.$A(...)' --json > matches.json ; semgrepx llm 'update this go to use log.Printf' < matches.json”,且 Anthropic 的 Claude 3 Opus 模型在该任务中表现更好,会匹配较大表达式提供更多上下文并大量使用 llm 的模板功能。
关键信息:
- Semgrep 搜索代码的方式及 playground 地址。
- 简单的 Semgrep 规则定义示例。
- 用 semgrepx 结合 LLM 修复匹配的操作及相关注意事项。
重要细节:
- 同类工具还有[https://ast-grep.github.io/]、[https://codeql.github.com/]、[https://comby.dev/]。
- 运行自动修复的命令为“semgrep --config./rule.yml --autofix”。
- 提到 Anthropic 的 Claude 3 Opus 模型在任务中表现更优,会匹配较大表达式提供更多上下文且使用 llm 的模板功能。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。