sonar集成搭建

一、SonarQube

    Sonar 是一个用于代码质量管理的开放平台。通过插件机制,Sonar 可以集成不同的测试工具,代码分析工具,以及持续集成工具。与持续集成工具(例如 Hudson/Jenkins 等)不同,Sonar 并不是简单地把不同的代码检查工具结果(例如 FindBugsPMD 等)直接显示在 Web 页面上,而是通过不同的插件对这些结果进行再加工处理,通过量化的方式度量代码质量的变化,从而可以方便地对不同规模和种类的工程进行代码质量管理。

在对其他工具的支持方面,Sonar 不仅提供了对 IDE 的支持,可以在 Eclipse IntelliJ IDEA 这些工具里联机查看结果;同时 Sonar 还对大量的持续集成工具提供了接口支持,可以很方便地在持续集成中使用 Sonar

此外,Sonar 的插件还可以对 Java 以外的其他编程语言提供支持,对国际化以及报告文档化也有良好的支持。

 

二、环境搭建要求及软件版本

 

  1. 系统环境 Linux 4c 8g
  2. JDK 1.8
  3. Maven 对应当前开发版本
  4. SonarQube 6.77
  5. 配置mysql数据库5.6<=mysql版本<8.0
  6. Jekins当前版本

三、搭建步骤

1. 首先mysql新建sonar数据库

CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;  

2. SonarQubeconfig 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

配置对应当前服务器数据库的账户密码,以及对应的mysqlip

3. Maven configsettings.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. 参照原来的规则进行配置,每个项目的sonarjenkins部署在同一台服务器上。权限问题和之前保持一致即可,每个项目组有自己项目的权限。只需进行部分插件安装和脚本配置。

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-apigithub-api ssh-credentialsworkflow-step-apidisplay-url-apimailerworkflow-scm-stepscript-securityworkflow-apijunit matrix-projectapache-httpcomponents-client-4-apijschgit-client workflow-scm-stepGittoken-macrogithub.

插件包

将项目添加至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

   打开ideaIDEA菜单栏选择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,可参照进行修改。

 

posted @ 2020-04-08 15:03  老小包的博客  阅读(688)  评论(0编辑  收藏  举报