用途:在同时包含 .NET 后端与 JS/TS 前端的仓库中,引入 SonarJS 派生规则,补充基础 ESLint 之外的缺陷风险、代码异味和认知复杂度检查,并可作为评审或 CI 门禁。
主要能力:支持本地开发循环通过 eslint-plugin-sonarjs 扩展 ESLint,也支持沿用已有的 SonarQube 或 SonarCloud 服务端扫描流程;可检查易出错规则、认知复杂度、重复分支或可疑控制流。上游 SonarJS 13.8 增加了优先使用原生 API 而非 Axios 工具方法、可重试 Cypress 断言等指引,并修复了延迟 Promise 链、普通类成员、Deno.test 声明等误报;自托管构建需 JDK 21。
使用方式:先判断执行路径——本地用 eslint-plugin-sonarjs,服务端用已有 SonarQube/SonarCloud 流水线。本地安装:npm install --save-dev eslint-plugin-sonarjs,将插件和选定规则加入已提交的 ESLint 配置,用仓库常规入口验证,例如 npx eslint .。若已有 SonarQube/SonarCloud,应保持完整分析在该 CI 路径中,不要另建本地扫描流程。首次落地建议收窄范围,分阶段启用规则,不要用大范围禁用掩盖问题。
适用场景:仓库已使用 SonarQube、SonarCloud 或 eslint-plugin-sonarjs;用户要求前端代码异味、认知复杂度限制或超出基础 ESLint 的缺陷风险规则;需要把可维护性与可靠性发现变成评审或 CI 门禁。
限制:不适用于只想要轻量基础 lint、拒绝 Sonar 系工具作为默认门禁、或问题属于运行时页面质量而非源码可维护性的情况。本仓库不提供独立的本地 sonarjs CLI,本地使用必须经由 ESLint。插件加载失败通常意味着 ESLint 配置与已安装插件版本或注册语法不匹配。若 SonarQube/SonarCloud 与本地 lint 输出不一致,以服务端门禁为准。广泛采用前需记录许可或托管注意事项。
状态返回:configured、improved 或 not_applicable,并附计划、操作、验证与遗留项。