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 质量门(生产建议)
- 顶部菜单 →Quality Gates → Create
- 命名:例如AI-Code-Hardened
- 添加条件(示例,比官方更严):
| 维度 | 新代码(New Code) | 全量代码(Overall) |
|---|---|---|
| 问题数 | 0 个新问题 | - |
| 安全热点 | 100% 已审核 | 100% 已审核 |
| 覆盖率 | ≥90% | ≥80% |
| 重复率 | ≤1% | ≤2% |
| 安全评级 | A | A |
| 可靠性评级 | A | A |
- 右上角“三点” →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 代码不是免死金牌,而是要更严的门禁 + 更细的规则 + 更强的门禁。
