三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

在 SonarQube 里给 AI 代码做扫描

在 SonarQube 里给 AI 代码做扫描

在 SonarQube 里给 AI 代码做扫描,核心就是三件事:把项目标记为含 AI 代码 → 用更严的质量门(Quality Gate)→ 配更严的规则模板(Quality Profile)。下面按步骤讲,直接照着就能配。


一、先开启“AI Code Assurance”(全局+项目)

1. 全局检查(管理员)

  • 进入Administration → Configuration → General Settings → AI Code Assurance
  • 确保Enable AI Code Assurance已勾选(默认开启)

2. 项目标记为“包含 AI 代码”

进入你的项目 →Project Settings → AI-generated code

  • 勾选This project contains AI-generated code
  • 保存后,项目页会出现AI CODE标签

二、配置 AI 专用质量门(Quality Gate)

方案A:直接用官方内置“Sonar way for AI Code”(推荐起步)

内置规则已经针对 AI 代码收紧:

  • 新代码:0 新增问题、100% 安全热点已审核、覆盖率 ≥80%、重复率 ≤3%
  • 全量代码:安全评级 A、可靠性 ≥C、所有安全热点已审核

方案B:自建更严格的 AI 质量门(生产建议)

  1. 顶部菜单 →Quality Gates → Create
  2. 命名:例如AI-Code-Hardened
  3. 添加条件(示例,比官方更严):
维度新代码(New Code)全量代码(Overall)
问题数0 个新问题-
安全热点100% 已审核100% 已审核
覆盖率≥90%≥80%
重复率≤1%≤2%
安全评级AA
可靠性评级AA
  1. 右上角“三点” →Qualify for AI Code Assurance(关键!)

5. 把质量门绑到项目

项目 →Project Settings → Quality Gate

  • Always use a specific Quality Gate
  • 选中你刚创建的AI-Code-Hardened
  • 保存

三、配置 AI 专用规则模板(Quality Profile)

AI 代码常见问题:复杂度高、嵌套深、函数长、安全校验弱。要单独建一套更严的规则集。

1. 复制并扩展官方模板

  • 顶部 →Quality Profiles
  • 找到对应语言(如 Java、Python)的Sonar way
  • 三点 →Extend→ 命名:XXX-AI-Hardened(如 Java-AI-Hardened)

2. 重点收紧的规则(示例)

以 Python 为例,其他语言同理:

  • 认知复杂度python:S3776,默认 15 →改为 8(强制拆小函数)
  • 函数长度python:S138,默认 100 行 →改为 50 行
  • 嵌套深度python:S134,默认 4 →改为 2
  • 安全类规则:启用所有“输入校验、权限检查、硬编码密钥”相关规则(默认常关闭)

3. 把规则模板绑到项目

项目 →Project Settings → Quality Profiles

  • 对应语言选XXX-AI-Hardened
  • 保存

四、可选:AI 代码自动识别(Enterprise/Cloud)

如果用 GitHub Copilot Business,可开启自动检测:

  • 管理员 →Administration → AI Features → AI Code Autodetection
  • 启用后,SonarQube 会根据 Copilot 提交特征自动标记 AI 代码

五、CI/CD 流水线必须加的步骤

不管规则怎么配,流水线必须强制执行:

# 伪代码示例(Jenkins/GitLab CI)stage('SonarQube Scan'){steps{withSonarQubeEnv('SonarQube'){sh 'sonar-scanner-Dsonar.projectKey=xxx-Dsonar.qualitygate=AI-Code-Hardened'}}post{always{// 质量门不通过直接阻断timeout(time:1,unit:'HOURS'){waitForQualityGate abortPipeline:true}}}}

六、推荐组合(直接抄)

  • 标记:项目开启“Contains AI-generated code”
  • 质量门:用Sonar way for AI Code或自建AI-Code-Hardened
  • 规则模板:基于 Sonar way 扩展,收紧复杂度、长度、嵌套,全开安全校验
  • 流水线:扫描不通过禁止合并

一句话总结:AI 代码不是免死金牌,而是要更严的门禁 + 更细的规则 + 更强的门禁

← 返回列表