English | 简体中文
Sonar Intellij Plugin是一个Intellij IDEA插件,使用Sonar Intellij Plugin你可以在Intellij IDEA中对Java项目执行Sonar代码分析、查看代码分析报告以及对问题代码进行提示。 你必须要做的配置只有绑定SonarQube,然后即可在不离开IDE的情况下使用所有功能。
支持按范围进行代码分析,例如项目文件、模块文件、包文件、更改列表文件、打开的文件和选择的文件。分析报告支持问题的筛选和标记已解决的问题。
Sonar Intellij Plugin已经发布到JetBrains插件市场,最新版本是 v0.2.2。
打开Settings
/ Plugins
/ Marketplace
(macOS下为Preferences
/ Plugins
/ Marketplace
),使用关键词SonarAnalyzer
搜索插件然后安装插件SonarAnalyzer
:
插件安装成功后重启IDE即可生效。
Sonar Intellij Plugin底层使用SonarScanner执行代码分析,SonarScanner需要连接SonarQube服务器,因此使用Sonar Intellij Plugin前需要做一些必要的设置,然后再对项目执行代码分析。
设置分为IDE级别和Project级别,可以通过Settings
/ Tools
/ SonarAnalyzer
(macOS下为Preferences
/ Tools
/ SonarAnalyzer
)对插件进行设置。
IDE级别设置主要包含:
- 插件语言切换(目前支持中文、英文)
- 管理SonarQube连接(新增、更新、删除)
- 管理全局SonarScanner属性(新增、更新、删除)
Project级别设置主要包含:
- 为Project绑定SonarQube连接
- 管理Project使用的SonarScanner属性(新增、更新、删除,以及控制是否继承全局SonarScanner属性)
可以在IDE级别管理所有的SonarQube连接,可以新增、删除和更新SonarQube连接。
每个SonarQube连接必须提供名称、URL和Token。新增SonarQube连接:
在Project级别设置中可以为Project指定要绑定的SonarQube连接:
如果Project未绑定SonarQube连接,默认使用已添加的第一个SonarQube连接。
插件内部在使用SonarScanner时已经尽量使用了合理完善的属性,但是你可能仍需要独立设置一些属性,但请注意以下属性不支持设置:
sonar.host.url
sonar.login
sonar.password
sonar.projectBaseDir
sonar.working.directory
sonar.java.source
sonar.tests
sonar.sources
sonar.java.libraries
sonar.java.binaries
sonar.sourceEncoding
属性sonar.projectKey
和sonar.projectName
可以使用占位符<projectName>
表示项目名称。默认的sonar.projectKey
和sonar.projectName
值为SonarAnalyzer:<projectName>
。
添加属性:
你可以在IDE级别和Project级别管理属性,在IDE级别添加所有Project都需要的属性,然后可以在Project设置中控制是否继承IDE级别添加的属性,以及管理当前Project的专用属性:
在对插件完成设置后,你可以通过以下位置触发项目代码分析:
- Project Tool Window中内容右键菜单中的
SonarAnalyzer
菜单 - 代码编辑器右键菜单中的
SonarAnalyzer
菜单 - SonarAnalyzer Tool Window中的开始按钮
支持的代码分析范围:
- 项目文件
- 模块文件
- 包文件
- 更改列表文件
- 打开的文件
- 选择的文件
开始代码分析后,插件将启动代码编译,编译成功后再使用SonarScanner完成代码分析。在SonarAnalyzer Tool Window的日志
中会输出整个操作日志:
当代码分析完成后会在SonarAnalyzer Tool Window的报告
中展示完整的分析报告,同时也会在编辑器中对问题代码行进行提示:
你可以按照以下分类过滤问题:
- 类型
- Bug
- 异味
- 漏洞
- 安全热点
- 重复块
- 范围
- 更新的文件
- 未更新的文件
- 解决
- 已解决
- 未解决
非常欢迎你的加入!提一个 Issue 或者提交一个 Pull Request。
GPL-3.0 © Yu Junyang