You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何去除Semgrep默认输出中的终端代码并生成易读文本格式?

解决Semgrep输出ANSI转义序列及生成Markdown格式结果的方案

直接生成无ANSI转义的纯文本输出

Semgrep自带禁用颜色渲染的参数,用它可以直接输出不带ANSI转义序列的纯文本,保存到文件后编辑器打开完全正常:

  • 用--no-color参数关闭终端颜色,示例命令:
    semgrep scan --no-color > semgrep_results.txt
    
  • 可以搭配--verbose(显示更多细节)或--quiet(只显示关键结果)调整输出内容,按需选择。

生成Markdown格式输出(最优选择)

Semgrep支持通过自定义模板生成标准Markdown输出,规则链接也能正常识别,步骤很简单:

  1. 新建一个Markdown模板文件(比如命名为semgrep-md.tmpl),模板内容可以参考下面的结构,包含规则ID、链接、严重程度、匹配位置和代码片段:
    # Semgrep 扫描结果
    {% for result in results %}
    ## 规则: [{{result.check_id}}]({{result.rule.url}})
    - **严重程度**: {{result.severity}}
    - **提示信息**: {{result.message}}
    - **匹配位置**: {{result.path}}:{{result.start.line}}
    
    ```{{result.extra.lines}}```
    {% endfor %}
    
  2. 扫描时用--output-template指定这个模板,直接生成Markdown文件:
    semgrep scan --output-template semgrep-md.tmpl > semgrep_results.md
    
    生成的文件可以直接在编辑器中打开,规则链接能正常跳转。

清理已生成文件中的ANSI转义序列

如果已经有了带ANSI序列的文件,别用sed了,用ansi2txt工具更靠谱:

  • 先通过pip安装:pip install ansi2txt
  • 然后执行命令清理:
    ansi2txt semgrep_raw_output.txt > semgrep_cleaned.txt
    
    它能彻底处理所有终端控制字符,比sed的正则替换更全面。

内容的提问来源于stack exchange,提问作者JL Peyret

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 02:01:16