SonarSource/sonarlint-intellij
GitHub: SonarSource/sonarlint-intellij
一款面向 JetBrains IDE 的 SonarQube 插件,在编码阶段实时检测并提示代码质量缺陷与安全问题。
Stars: 637 | Forks: 155
# SonarQube for IntelliJ 插件
[](https://github.com/SonarSource/sonarlint-intellij/actions/workflows/build.yml?query=branch%3Amaster)
[](https://next.sonarqube.com/sonarqube/dashboard?id=org.sonarsource.sonarlint.intellij%3Asonarlint-intellij)
SonarQube for IDE 是一款 IDE 扩展,可帮助您检测并修复质量问题,确保您交付[集成的代码质量与安全](https://www.sonarsource.com/solutions/for-developers/)。
就像拼写检查器一样,SonarQube for IntelliJ 会用波浪线标记出缺陷,以便在提交代码之前将其修复。
## 实用链接
- [文档](https://docs.sonarsource.com/sonarqube-for-intellij/)
- 支持的编程语言完整列表以及每种语言相关的静态代码分析规则链接,可在[规则页面](https://docs.sonarsource.com/sonarqube-for-intellij/using/rules/)上找到。
- [社区](https://community.sonarsource.com/c/help/sl)
- 报告问题、寻求帮助或提出新功能建议。
## 安装说明
您可以直接从 IDE 首选项中的 [JetBrains 插件仓库](https://plugins.jetbrains.com/plugin/7973-sonarlint)安装 SonarQube for IntelliJ。
完整的最新详情可在[要求](https://docs.sonarsource.com/sonarqube-for-intellij/getting-started/requirements/)和[安装](https://docs.sonarsource.com/sonarqube-for-intellij/getting-started/installation/)页面上找到。
## 有疑问或反馈?
如需获取 SonarQube for IntelliJ 的支持(“我该怎么做?”、“我遇到了这个错误,为什么?”等),请先阅读[常见问题解答](https://community.sonarsource.com/t/frequently-asked-questions/7204)了解如何获取日志,然后前往 [Sonar 论坛](https://community.sonarsource.com/c/help/sl)。在创建新主题之前,请检查您的问题是否已被解答,因为很有可能其他人已经遇到过同样的问题。
请注意,这是一个社区论坛,希望大家保持基本的礼貌(_你好、谢谢、感谢回复等_)。如果您的帖子没有得到回复,请至少耐心等待三天再进行顶贴。虽然操作员不会随时待命,但团队和社区经理知道您的问题非常重要。 :-)
## 构建方式
```
./gradlew buildPlugin
```
请注意,上述操作不会运行测试和检查。如果也要执行这些操作,请运行:
```
./gradlew check buildPlugin
```
有关任务的完整列表,请参见:
```
./gradlew tasks
```
对于外部贡献者,应保证该项目可以从任何特定 tag 成功构建。在开发阶段,可能会使用一些公众无法访问的未发布依赖项,这可能会阻碍您构建该项目。
## 如何运行 UI 测试
```
./gradlew :its:runIdeForUiTests &
```
上述命令将启动一个带有 SonarQube for IntelliJ 插件的 IDE 实例。等待 UI robot 服务器启动,然后运行 IT:
```
./gradlew :its:check
```
最后,关闭 IDE。
要针对特定版本的 IntelliJ 进行测试,可以使用 `ijVersion` 属性,例如:
```
./gradlew :its:runIdeForUiTests -PijVersion=IC-2025.2 &
```
如果您想使用本地安装的版本,可以使用 `runIdeDirectory` 属性来指向您想要运行的 IDE 目录:
```
./gradlew :its:runIdeForUiTests -PrunIdeDirectory= &
```
请注意,在执行测试时,IDE 必须处于前台运行状态。
因为部分 IT 利用了 SonarCloud,请确保定义了 `SONARCLOUD_IT_TOKEN` 环境变量(您可以在我们的密码管理工具中找到该值)。
## 如何调试 UI 测试
如果您想调试测试端发生的情况,可以在 IDE 中以调试模式启动测试。
如果您想调试 SonarQube for IntelliJ 插件中发生的情况,可以在 IntelliJ 中打开该项目,并以调试模式运行 `its:runIdeForUiTests` 任务(例如,从右侧的 Gradle 面板中运行)。
## 如何调试 SLOOP
如果您想调试 SLOOP:
* 打开您正在用于启动 IDE 的运行配置(`runLocalIde` 或 `its:runIdeForUiTests`)
* 添加一个环境变量:`SONARLINT_JVM_OPTS`,其值为 `-agentlib:jdwp=transport=dt_socket,address=8080,server=y,suspend=n`
* 运行该任务
* 打开 SLCORE 项目并点击 `Run` > `Attach to process`
* 选择正在运行的 SLOOP 进程
如果您想在 SLOOP 启动时就立即连接调试器,可以通过将上述命令中的参数修改为 `suspend=y`。
这将在启动 SLOOP 之前等待调试器附加到进程。
## 如何在 IntelliJ 中开发
将该项目作为 Gradle 项目导入。
注意:每当您更改 Gradle 设置时(例如在 `build.gradle.kts` 中),请记住在 **Gradle** 工具栏中**刷新所有 Gradle 项目**。
要运行安装了该插件的 IntelliJ 实例,请使用命令行或 IntelliJ 中 **Gradle** 工具栏下 `Tasks/intellij platform` 里的 `runLocalide` Gradle 任务执行操作。
该实例文件存储在 `build/sonarlint-test` 下。
要针对特定的 IDE 运行,您可以使用 `runIdeDirectory` 属性来指向您想要运行的 IDE 目录。
例如:
```
./gradlew :runLocalIde -PrunIdeDirectory=
```
请记住,`clean` 任务会清除 `build/` 的内容,因此您将需要为该实例重复一些设置步骤,例如配置 JDK。
## 插件验证
该项目包含使用 IntelliJ Platform Plugin Verifier 跨多个 JetBrains IDE 进行的自动化插件验证。
要在本地运行它:
```
./gradlew :verifyPlugin
# 对于常规的 CI 构建,仅使用最低版本的 IC
./gradlew :verifyPlugin -PverifierEnv=CI
```
## 许可证
版权所有 SonarSource。
根据 [GNU Lesser General Public License, Version 3.0](http://www.gnu.org/licenses/lgpl.txt) 获得许可
标签:IDE插件, JetBrains, SOC Prime, SonarQube, 后台面板检测, 开发工具, 错误基检测, 静态代码分析