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服务。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,560评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,104评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,297评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,869评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,275评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,563评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,833评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,543评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,245评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,512评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,011评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,359评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,006评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,062评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,825评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,590评论 2 273
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,501评论 2 268

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,099评论 18 139
  • 1. 简要介绍 SonarQube能够提供对代码的一整套检查扫描和分析功能,拥有一套服务器端程序,然后再通过客户端...
    拒绝空指针阅读 17,960评论 0 15
  • Sonar是一个用于代码质量管理的开源平台,用于管理源代码的质量,github源码。默认支持Java语言的静态代码...
    巴别塔下牧羊阅读 15,607评论 2 10
  • 我们一起来仔细学习比恩“四位一体”的课程统整观。这是前天日课的补充。 经验的统整。比恩的经验统整可看做是一个政治命...
    雪糕冰脚阅读 377评论 1 3
  • objc_subclassing_restricted 使用这个属性可以定义一个Final Class,也就是说,...
    MaxMak阅读 2,245评论 0 2