sonar集成搭建
一、SonarQube
Sonar 是一个用于代码质量管理的开放平台。通过插件机制,Sonar 可以集成不同的测试工具,代码分析工具,以及持续集成工具。与持续集成工具(例如 Hudson/Jenkins 等)不同,Sonar 并不是简单地把不同的代码检查工具结果(例如 FindBugs,PMD 等)直接显示在 Web 页面上,而是通过不同的插件对这些结果进行再加工处理,通过量化的方式度量代码质量的变化,从而可以方便地对不同规模和种类的工程进行代码质量管理。
在对其他工具的支持方面,Sonar 不仅提供了对 IDE 的支持,可以在 Eclipse 和 IntelliJ IDEA 这些工具里联机查看结果;同时 Sonar 还对大量的持续集成工具提供了接口支持,可以很方便地在持续集成中使用 Sonar。
此外,Sonar 的插件还可以对 Java 以外的其他编程语言提供支持,对国际化以及报告文档化也有良好的支持。
二、环境搭建要求及软件版本
- 系统环境 Linux 4c 8g
- JDK 1.8
- Maven 对应当前开发版本
- SonarQube 6.77
- 配置mysql数据库5.6<=mysql版本<8.0
- Jekins当前版本
三、搭建步骤
1. 首先mysql新建sonar数据库
CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;
2. 对SonarQube下 config 中sonar.properties进行配置
sonar.jdbc.username=*
sonar.jdbc.password=*
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
sonar.web.port=9000
sonar.search.port=9090(根据实际需要 默认端口为9001)
配置对应当前服务器数据库的账户密码,以及对应的mysql的ip
3. Maven config下settings.xml修改
增加sonar插件
<pluginGroups>
<pluginGroup>org.sonarsource.scanner.maven</pluginGroup>
</pluginGroups>
<profiles>
<profile>
<id>jdk-1.8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
<profile>
<id>sonar</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<!-- 配置 Sonar Host地址,默认:http://localhost:9000 -->
<sonar.host.url>
http://localhost:9000
</sonar.host.url>
</properties>
</profile>
</profiles>
4. 注SonarQube使用默认root用户,会导致其内部es无法启动成功,故需新建用户
使用新用户进行SonarQube启动。
5. 根据sonar的版本及对应系统进行启动。sh sonar.sh start
四、集成Jenkins
关于jenkins的集成考虑两方面
1. 参照原来的规则进行配置,每个项目的sonar和jenkins部署在同一台服务器上。权限问题和之前保持一致即可,每个项目组有自己项目的权限。只需进行部分插件安装和脚本配置。
Jenkins配置。
java -jar 启动 Jenkins war包 进行jenkins配置,最好能够访问外网,这种情况下,直接下载默认插件,之后在继续安装SonarQube插件SonarQube Scanner for Jenkins。
如没有网络状态下需添加离线插件
步骤:
a. 先登录https://plugins.jenkins.io/下载插件
b. 首先考虑安装下载sonar插件,插件需要依赖依次是structs、credentials、plain-credentials、sonar
之后安装git插件,插件需要依赖依次是scm-api 、jackson2-api、github-api、 ssh-credentials、workflow-step-api、display-url-api、mailer、workflow-scm-step、script-security、workflow-api、junit 、matrix-project、apache-httpcomponents-client-4-api、jsch、git-client 、workflow-scm-step、Git、token-macro、github.
插件包
将项目添加至Jenkins中,添加自由项目,增加shell脚本:定位项目指定目录 执行mvn sonar:sonar。
2. 将所有sonar jenkins配置在同一台服务器
与上一种分开部署jenkins的区别是需进行权限配置,首先需要下载Role-based Authorization Strategy插件进行权限配置。安装后全局设置,安全性设置勾选基于角色战略,后选择Manage and Assign Roles 管理分配角色 管理角色在全局角色中勾选所需要的功能权限,在项目角色中Pattern填写具体要显示项目例如匹配以 auto开头的,需要写成 auto.* 而不是 auto*,需特别注意。
java -jar 启动 Jenkins war包 进行jenkins配置,最好能够访问外网,这种情况下,直接下载默认插件,之后在继续安装SonarQube插件SonarQube Scanner for Jenkins。
将项目添加至Jenkins中,添加自由项目,增加shell脚本:定位项目指定目录 执行mvn sonar:sonar。
五、代码编辑器集成sonarLint插件
1. eclipse
打开Eclipse,选择Help->Eclipse Marketplace,在Find里面输入sonarLint。安装成功的标识是,点击项目,会出现一个SonarLint的选项,点击某个类时,点击Analyze就会自动分析代码.
2. Idea
打开idea,IDEA菜单栏选择File->Settings,左边栏选择Plugins,在线安装选择Browse repositories,搜索Sonar,选择SonarLint进行安装,之后重启IDEA 。安装SonarLint插件重启后,IDEA Tool Windows部分会出现SonarLint View。如果没有出现,选择菜单View->Tool Windows->SonarLint会显示 ,SonarLint安装完后,默认情况下是自动检测项目代码的。若觉得影响效率,可通过菜单Settings->Other Settings->SonarLint General Settings进行设置。检测完毕后,会在SonarLint Tool View中显示出检测的问题,以类名称进行分类。各类的issue,分为阻断、严重、主要、提示和次要,问题严重性依次降低。点击issue,在右侧会出现对应的Rule,可参照进行修改。