SonarQube for IntelliJ Clean as You Code 实战:只盯住新代码,告别技术债焦虑
【免费下载链接】sonarlint-intellijSonarQube plugin for JetBrains IDEs providing code quality and security feedback directly in the IDE项目地址: https://gitcode.com/gh_mirrors/so/sonarlint-intellij
SonarQube for IntelliJ(即 SonarLint 插件)的Clean as You Code功能,让你只关注新代码中的质量问题,不再被历史技术债淹没。只需打开Focus on new code一个开关,编辑器侧边栏、工具窗口、提交拦截会自动过滤掉旧代码的问题——这是 JetBrains 开发者告别技术债焦虑的最简单方法。
为什么需要 Clean as You Code?
打开一个祖传项目做静态代码分析,动辄上千条告警:魔法数字、重复代码、NPE 风险……新手往往被这些"红色波浪线"劝退。
Clean as You Code 的核心理念是:
- 🎯旧账不翻:历史代码的问题已经存在,不必一次还清
- ✨增量治理:只要求你写的新代码是干净的
- 📈质量棘轮:每次提交都不新增问题,代码质量只会越来越好的
一键开启:Focus on new code 设置
开启方式非常简单,进入 IDE 设置:
- Settings → SonarQube for IDE → General面板
- 勾选"Focus on new code"复选框 ✅
- 立即生效,无需重启
这个开关在 SonarLintGlobalOptionsPanel.java 中定义,旁边还会提示你:聚焦新代码正是实践 Clean as You Code 的第一步。
💡 切换开关时,插件会后台刷新所有已打开项目的视图,并在 CleanAsYouCodeService.kt 中上报遥测事件。
什么是"新代码"?如何判定代码新旧?
这是新手最容易困惑的地方:"新代码"怎么定义?答案取决于你是否使用了 Connected Mode:
| 模式 | 新代码判定规则 |
|---|---|
| 独立模式(默认) | 最近30 天内新增或修改的代码 |
| Connected Mode | 以你的 SonarQube 服务端配置的新代码定义为准(如上一个标签、分支基线等) |
这一说明直接来自插件内置的上下文帮助(见 HelpLabelUtils.kt):
- 使用 Connected Mode,可获得基于服务端设置的精确新代码定义
- 未连接时,"最近 30 天有改动"即视为新代码
插件会实时向服务端查询新代码定义,并把结果缓存在 NewCodePeriodCache.kt 中,在界面上展示当前的 code period 描述。
开启后,界面上会发生什么变化?
勾选开关后,过滤逻辑贯穿整个插件:
- 🖊编辑器 Gutter 图标:只在新代码位置上显示问题波浪线与图标(过滤逻辑见 CurrentFileDisplayManager.kt 中的
isOnNewCode()判断) - 📋Current File 面板:问题列表默认只显示新代码问题
- 📊Report 面板:汇总报告按新代码口径统计
- 🚦红绿灯面板(Traffic Light):可独立勾选 Focus on new code,一眼看清"新代码是否干净"
切换开关的入口不只有一个:工具窗口的过滤面板(CurrentFilePanel.kt)和红绿灯面板都可以随时切换。
提交前最后一道防线:Checkin Handler
最实用的场景在Commit 提交时。SonarLintCheckinHandler.java 会在你提交前检查变更文件中的问题,如果新代码里存在质量问题,会弹出提醒对话框,建议你先修复再提交。
配合 Focus on new code 使用,这套"提交拦截 + 新代码聚焦"的组合拳,能保证:
- 提交的每一行新代码都经过静态检查
- 不会被无关的旧代码问题干扰判断
- 团队质量门禁(Quality Gate)长期保持绿色
新手常见问题
Q:开了 Focus on new code 后,旧问题是不是被"藏起来"了?A:没有被删除,只是默认过滤。取消勾选或调整过滤器即可随时查看全部问题。
Q:独立模式和 Connected Mode 差在哪?A:Connected Mode 除精确的新代码定义外,还能分析更多语言、检测更多问题并同步质量门禁状态,建议团队用户优先使用。
小结
- ✅ 在Settings → SonarQube for IDE → General勾选Focus on new code即可开启
- ✅ 独立模式按"最近 30 天"判定新代码,Connected Mode 按服务端配置
- ✅ 编辑器、工具窗口、提交拦截三层联动,只管新账、不还旧账
从今天起,让每次提交都只往前迈一小步——这就是 Clean as You Code 的全部奥义。
【免费下载链接】sonarlint-intellijSonarQube plugin for JetBrains IDEs providing code quality and security feedback directly in the IDE项目地址: https://gitcode.com/gh_mirrors/so/sonarlint-intellij
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考