美文网首页自动化测试/CI测试
MAC SonarQube静态代码检查

MAC SonarQube静态代码检查

作者: 324068f66fe6 | 来源:发表于2017-10-09 16:56 被阅读177次

    SonarQube是管理代码质量一个开放平台,可以快速的定位代码中潜在的或者明显的错误,下面将会介绍一下这个工具的安装、配置以及使用。(该文章部分参考其他人写的,加入自身遇到的问题总结)
    准备工作;
    1、jdk(请自行百度,很easy的)
    2、sonarqube:http://www.sonarqube.org/downloads/
    3、SonarQube+Scanner:https://sonarsource.bintray.com/Distribution/sonar-scanner-cli/sonar-scanner-2.5.zip
    4、mysql数据库(请参考:http://www.jianshu.com/p/0dace9c19333

    一、安装篇

    1.下载好sonarqube后,解压目录,通过命令行到sonarqube目录并启动

    命令: sudo {sonarqube上一级目录}/sonarqube/bin/macosx-universal-64/sonar.sh start
    输入Mac本机密码启动sonarqube

    2.浏览器访问http://localhost:9000,如出现下图则表示安装成功。

    二、配置篇

    1.打开mysql,新建一个数据库

    在命令行中,执行如下操作:
    mysql -u root -p
    mysql> CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;
    mysql> CREATE USER 'sonar' IDENTIFIED BY 'sonar';
    mysql> GRANT ALL ON sonar.* TO 'sonar'@'%' IDENTIFIED BY 'sonar';
    mysql> GRANT ALL ON sonar.* TO 'sonar'@'localhost' IDENTIFIED BY 'sonar';
    mysql> FLUSH PRIVILEGES;

    2.打开sonar.properties文件

    cd /{sonarqube上一级目录}/sonarqube-6.5/conf/sonar.properties

    3.新增如下信息,:

    sonar.jdbc.username=root
    sonar.jdbc.password=123456
    sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance

    url是数据库连接地址,username是数据库用户名,jdbc.password是数据库密码.

    4.重启sonarqube服务,再次访问http://localhost:9000,会稍微有点慢,因为要初始化数据库信息

    重启sonarqube服务命令
    sudo {sonarqube上一级目录}/sonarqube/bin/macosx-universal-64/sonar.sh restart

    5.数据库初始化成功后,登录(admin/admin)
    6.按照下图的点击顺序,进入插件安装页面


    7.搜索chinese Pack,安装中文语言包

    8.安装成功后,重启sonarqube服务,再次访问http://localhost:9000/,即可看到中文界面

    三、使用篇
    1.打开sonar-runner.properties文件

    /{sonar-scanner上一级目录}/sonar-scanner-2.5/conf/sonar-runner.properties

    2.mysql节点下输入以下信息

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

    注意:如果测试项目与服务器不在同一台机子,则需要添加服务器的IP:

    /#----- Default SonarQube
    serversonar.host.url=http://XXX.XXX.XXX.XXX:9000

    3.配置环境变量
    a. 命令行中输入sudo vim ~/.bash_profile,粘贴如下信息

    export PATH=$PATH:/Applications/sonarqube-6./bin
    export PATH=$PATH:/Applications/sonar-scanner-2.5/bin
    b. 保存后执行如下命令
    source ~/.bash_profile

    4.进入要检查的项目目录下,新建sonar-project.properties
    5.输入以下信息:

    # must be unique in a given SonarQube instance
    sonar.projectKey=Autobom
    # this is the name and version displayed in the SonarQube UI. Was mandatory prior to SonarQube 6.1.
    sonar.projectName=bom
    sonar.projectVersion=1.0
    # Path is relative to the sonar-project.properties file. Replace "" by "/" on Windows.
    # Since SonarQube 4.2, this property is optional if sonar.modules is set.
    # If not set, SonarQube starts looking for source code from the directory containing
    # the sonar-project.properties file.
    sonar.sources=.
    # Encoding of the source code. Default is default system encoding
    sonar.sourceEncoding=UTF-8

    其中:projectName是项目名字,sources是源文件所在的目录
    6.在当前项目目录下执行命令:sonar-runner,分析成功后会出现下图

    image.png
    8.打开http://localhost:9000/,我们会看到主页出现了分析项目的概要图 image.png

    预知更多使用,请登录官网自行学习。
    http://www.sonarqube.org/
    http://docs.sonarqube.org/display/SONAR/Analyzing+with+SonarQube+Scanner

    遇到的问题:

    坑1: 在执行代码检测时(sonar-runner),出现如下报错

    Caused by: com.mysql.jdbc.PacketTooBigException: Packet for query is too large (8488572 > 4194304). You can change this value on the server by setting the max_allowed_packet' variable.

    解决方法:

    1. 查看mysql最大允许包大小,执行如下命令,查看当前mysql允许的大小:

    show VARIABLES like '%max_allowed_packet%';

    image.png
    1. 由于Mac中没有自带my.cnf,所以我们可以新建这个文件,默认是在mysql u目录下新建

    cd /usr/local/mysql/etc/ (没有etc目录的话,也可以新建一个)
    touch my.cnf
    打开my.cnf并输入如下信息:
    [mysqld]
    max_allowed_packet=32M

    1. 重启mysql

    sudo /usr/local/mysql/support-files/mysql.server restart

    1. 这边还要重启sonarqube

    sudo {sonarqube上一级目录}/sonarqube/bin/macosx-universal-64/sonar.sh restart

    坑2:前提:被检查的代码是JAVA,在执行命令sonar-runner,出现如下报错:

    ERROR: Error during SonarQube Scanner execution
    ERROR: Please provide compiled classes of your project with sonar.java.binaries property
    ERROR:
    ERROR: To see the full stack trace of the errors, re-run SonarQube Scanner with the -e switch.
    ERROR: Re-run SonarQube Scanner using the -X switch to enable full debug logging.

    解决方法:
    修改sonar-project.properties属性文件为如下:

    #required metadata
    #projectKey项目的唯一标识,不能重复
    sonar.projectKey=Auto
    sonar.projectName=YingkeAuto
    sonar.projectVersion=1.0
    sonar.sourceEncoding=UTF-8
    sonar.modules=java-module
    # Java module
    java-module.sonar.projectName=Java Module
    java-module.sonar.language=java
    # .表示projectBaseDir指定的目录
    java-module.sonar.sources=.
    java-module.sonar.projectBaseDir=src
    sonar.binaries=classes
    sonar.java.binaries=/Users/forkey/Documents/Tool/Workspace/YingkeAuto/target/classes,/Users/forkey/Documents/Tool/Workspace/YingkeAuto/target/test-classes
    sonar.java.test.binaries=/Users/forkey/Documents/Tool/Workspace/YingkeAuto/target/test-classes

    image.png

    相关文章

      网友评论

        本文标题:MAC SonarQube静态代码检查

        本文链接:https://www.haomeiwen.com/subject/zpdpyxtx.html