Sonarqube 在Mac Mini下的安装及使用

新晋测试小白最近在研究sonarqube的静态代码检查,整理了关于sonarqube 如何在mac os x系统下的安装和应用。大家在阅读的同时如果发现有问题,欢迎拍砖、探讨。

1.安装sonar

(1)安装sonarqube

             下载SonarQube安装包并且解压至待安装的文件夹,下载并解压Sonar Runner或者Sonar Scanner,并且解压至待安装的文件夹 。

             添加SONAR_HOME、SONAR_RUNNER_HOME或SONAR_SCANNER_HOME环境变量,并将SONAR_SCANNER_HOME加入系统变量,如下:

       export  SONAR_HOME=xxx

       export  SONAR_SCANNER_HOME=xxx

       PATH=${PATH}:${SONAR_SCANNER_HOME}/bin

(2)修改配置文件

              编辑/conf/sonar.properties文件,配置数据库设置,默认已经提供了各类数据库的支持。

               这里使用mysql,因此取消mysql模块的注释。在此之前确保mysql中已经创建了sonar 的数据库。

         sonar.jdbc.username= sonar

         sonar.jdbc.password= sonar

         sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar? useUnicode=true            &characterEncoding=utf8&rewriteBatchedStatements=true&useSSL=false

         sonar.jdbc.driverClassName=com.mysql.jdbc.Driver


             修改sonar-runner.properties OR  sonar-scanner.properties,切换至sonar-scanner的安装目录下,修改sonar-scanner.properties。根据实际使用数据库情况取消相应注释(后面的版本可以不用配置数据库信息)。

       sonar.host.url=http://192.168.1.22:9000

       sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true              &characterEncoding=utf8

       sonar.jdbc.username=sonar

       sonar.jdbc.password=sonar

       sonar.sourceEncoding=UTF-8

       sonar.login=admin

       sonar.password=admin


             打开Web Server进行外部访问,在sonar.properties文件中解除注释如下:

       sonar.web.host=192.168.1.22

       sonar.web.port=9000

       sonar.web.context=/sonar


             调整sonar的java配置参数,默认情况下,SonarQube 执行时应用的是一个简单的Java JRE,为了更好的 执行效果,可以配置自己安装Java JDK,并且解除sonar.properties的注释如下:

       sonar.web.javaOpts=-server

             修改SonarQube应用的Java JVM,通过修改/conf/wrapper.conf,修改内容如下:

       wrapper.java.command=[my_jdk_path]/jdk/bin/java


             目录切换至sonar的/bin/[OS]目录,启动服务

              ./sonar.sh start   启动服务

              ./sonar.sh stop    停止服务

              ./sonar.sh restart 重启服务

              至此,sonar就安装好了,访问http://192.168.1.22:9000查看。

2.安装插件

      sonar是一个开源的框架,通过安装不同的插件,可以实现对不同的开发语言,产生对应的检查规则。有两种安装插件的方法:

      第一种:在有网络的情况下,安装了sonar server 时,如果用户有全局权限,并可以进入管理员选项卡。则可以选择在System> Update Center >Available Plugins 选择自己所需的插件,安装后重启sonar server。

      第二种:在[SONAR_HOME]/extensions/plugins 中上传已经下载的插件,并重启sonar server。

      如果安装了商业插件的话,需要导入证书,在Administration > Configuration > Licenses,在待安装的插件处点Update,输入License并保存,然后重启sonar server。

3. 应用sonarqube进行代码检核

      根据官网提供的文档,一个简单的配置只在需要检查代码的项目根目录添加一个sonar-project.properties文件,并配置如下:

 # must be unique in a given SonarQube instance

 sonar.projectKey=myproject_id

 # this is the name displayed in the SonarQube UI

 sonar.projectName=Myproject

 sonar.projectVersion=1.0

 sonar.sources=.

 # Encoding of the source code. Default is default system encoding

 sonar.sourceEncoding=UTF-8

     在项目的根目录下执行sonar-runner 或者sonar-scanner。

     通过登录http://192.168.1.22:9000默认的用户名密码均为admin,查看生成的报告。

4.针对Android Gradle 项目的代码检核

      SonarQube Scanner 有一款Gradle 的插件,提供了一种更简便的方式以分析Gradle 项目。

      使用SonarQube Scanner 插件的前提:SonarQube 已安装、支持SonarQube server 的最低java版本已安装、支持InnoDB 引擎的mysql。

  (1)如何使用SonarQube Scanner

              在~/.gradle/gradle.properties文件中进行如下配置,实现全局变量:

          systemProp.sonar.host.url=http://192.168.1.22:9000

          systemProp.sonar.login=admin

          systemProp.sonar.password=admin


                在项目根文件的build.gradle中进行如下配置(gradle2.1+的版本):

          plugins {

                id "org.sonarqube" version "2.2.1"

          }

                在项目根文件的build.gradle中进行如下配置(任何gradle版本都支持):

          buildscript {

                repositories {

                             maven {

                                               url         "https://plugins.gradle.org/m2/"

                              }

                }

               dependencies {

                     classpath "org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:2.2.1"

               }

       }

       apply plugin: "org.sonarqube"


               在项目根文件的build.gradle中配置sonarqube任务

         sonarqube {

              properties {

                    property "sonar.projectName", "test"

                    property "sonar.projectKey", "test"

                    property "sonar.jdbc.driverClassName", "com.mysql.jdbc.Driver"

                    property "sonar.projectVersion", "1.0"

                    property "sonar.projectBaseDir", "."

                    property "sonar.modules", "app"

                    property "app.sonar.language", "java"

                    property "app.sonar.sources", "/src/main/java/"

                    property "sonar.showsql", "true"

                    property "sonar.verbose", "true"

                    property "sonar.scm.provider", "git"(确保插件已经安装)

                    property "sonar.profile", "Android Lint”(确保插件已经安装)

                }

        }


               执行 grade sonarqube(未安装grade执行./gradlew sonarqube) ,执行成功后登录sonarqube控制台查看生成的报告。

5.问题以及解决方案

     在执行sonar-scanner的时候,总是报错org.sonarqube.ws.client.HttpException:Error 500,最后在查看web.log的时候,提示“com.mysql.jdbc.PacketTooBigException: Packet for query is too large (7290627 > 4194304). You can change this value on the server by setting the max_allowed_packet' variable.”。

    登录到mysql执行 show variables like ‘%max_allowed_packet%’。查看该参数的值,然后执行set GLOBAL max_allowed_packet = 134217728,重启mysql服务。

你可能感兴趣的:(Sonarqube 在Mac Mini下的安装及使用)