zoukankan      html  css  js  c++  java
  • SonarQube部署及代码质量扫描入门教程

    一、前言

    1、本文主要内容

    • CentOS7下SonarQube部署
    • Maven扫描Java项目并将扫描结果提交到SonarQube Server
    • SonarQube扫描报表介绍

    2、环境信息

    工具/环境

    版本

    CentOS

    CentOS 7.6(IP:192.168.88.45)

    SonarQube

    7.5

    JDK

    1.8.0

    MySQL

    5.7

    3、准备工作

    • 安装JDK1.8

    参考:https://ken.io/note/centos-java-setup

    • 安装MySQL

    参考:https://ken.io/note/centos-mysql57-setup

    二、部署SonarQube

    1、基础准备

    • 安装必要的软件包
    yum install -y wget zip unzip
    • 调整系统参数
    sysctl -w  vm.max_map_count=262144
    sysctl -w fs.file-max=65536
    ulimit -u 4096 sonarqube
    ulimit -n 65536 sonarqube
    

      

    • 创建专用账号sonar
    #创建账号并授权
    useradd sonar
    passwd sonar
    
    #授予sudo权限
    visudo
    #在文件末尾增加
    sonar    ALL=(ALL)       ALL
    

      

    sonar 7.5版本必须在非root账号下启动

    2、准备数据库及账号

    #进入mysql-shell
    mysql -u root -p
    
    #新建用户
    CREATE USER 'sonar'@'localhost' IDENTIFIED BY 'Sonar@2019';
    CREATE USER 'sonar'@'%' IDENTIFIED BY 'Sonar@2019';
    
    #新建数据库
    CREATE DATABASE sonar;
    
    #赋予数据库访问权限
    GRANT ALL PRIVILEGES ON sonar.* TO 'sonar'@'localhost';
    GRANT ALL PRIVILEGES ON sonar.* TO 'sonar'@'%';
    
    #刷新权限
    FLUSH PRIVILEGES;
    
    #退出
    quit;
    

      

    3、下载

    • 准备软件以及数据目录
    mkdir -p /usr/sonar
    mkdir -p /sonar/data
    mkdir -p /sonar/temp
    

      

    • 下载
    #进入下载目录
    cd /home/downloads
    
    #下载软件包
    sudo wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-7.5.zip
    
    #解压
    sudo unzip sonarqube-7.5.zip -d /usr/sonar/
    

      

    • 授权
    #授予相关目录权限
    chown -R sonar:sonar /usr/sonar
    chown -R sonar:sonar /sonar
    

      

    4、配置环境变量

    #修改profile文件
    sudo vi /etc/profile
    
    #在文件末尾增加变量:SONAR_HOME
    export SONAR_HOME=/usr/sonar/sonarqube-7.5
    
    #使变量生效
    source /etc/profile
    
    #测试
    echo $SONAR_HOME
    

      

    5、配置Sonar

    #修改配置文件
    sudo vi $SONAR_HOME/conf/sonar.properties
    
    #在配置文件开头增加以下配置
    
    #数据库配置
    sonar.jdbc.username=sonar
    sonar.jdbc.password=Sonar@2019
    sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useConfigs=maxPerformance&rewriteBatchedStatements=true&characterEncoding=utf8&useUnicode=true&serverTimezone=GMT%2B08:00
    
    #文件配置
    sonar.path.data=/sonar/data
    sonar.path.temp=/sonar/temp
    
    #Web配置
    sonar.web.host=0.0.0.0
    sonar.web.port=9000
    sonar.web.context=/
    

      

    这里要强调的是,端口号需要>1000,因为sonar启动是使用的非root账号,默认是不能使用1000以下的端口的,否则会启动失败

    6、开放端口

    sudo firewall-cmd --add-port=9000/tcp --permanent
    sudo firewall-cmd --reload
    

      

    7、启动Sonar

    #切换到sonar账号
    su sonar
    
    #启动
    sh $SONAR_HOME/bin/linux-x86-64/sonar.sh start
    
    #启动完成会看到以下输出
    Starting SonarQube...
    Started SonarQube.
    
    #如果未完成启动可以使用console命令查看启动过程中的问题
    sh $SONAR_HOME/bin/linux-x86-64/sonar.sh console
    

      

    sonar支持的启动参数: console | start | stop | restart | status | dump

    如果启动完成,但是依然不能访问,可以通过以下命令查看启动日志

    cat $SONAR_HOME/logs/web.log
    

      

    成功启动后,可以访问 http://192.168.88.45:9000

    这时候SonarQube会进行初始化,比如:初始化数据库。初始化完成后将看到首页

    三、扫描项目示例

    1、初始化Token

    通过默认账号密码 admin,admin登录SonarQube,这时候会弹出引导

    输入TokenName,然后点击Generate就会生成token,点击Continue 然后选择Java-Maven项目,这时候

    token创建后,一旦窗口关闭就不能查询,只能再次创建,所以我们要先将token复制下来保存。

    token创建:http://192.168.88.45:9000/account/security/

    2、项目准备

    本次我们以Java项目作为示例进行扫描,本机需要配置好了Java&Maven环境 参考:https://ken.io/note/java-quickstart-sde

    如果已有Java项目可以忽略这一步

    • 创建项目
    mvn archetype:generate 
    -DarchetypeGroupId=org.apache.maven.archetypes 
    -DarchetypeArtifactId=maven-archetype-quickstart 
    -DremoteRepositories=http://maven.aliyun.com/nexus/content/groups/public 
    -DgroupId=io.ken.sonar 
    -DartifactId=sonardemo 
    -Dpackage=io.ken.sonar 
    -Dversion=1.0
    

      

    • 修改pom.xml

    增加build节点,指定默认build动作以及JDK版本

    <build>
        <defaultGoal>compile</defaultGoal>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.1</version>
            <configuration>
              <source>1.8</source>
              <target>1.8</target>
            </configuration>
          </plugin>
        </plugins>
    </build>
    

      

    3、扫描并提交

    #进入项目根目录
    cd sonardemo
    
    #执行扫描
    mvn sonar:sonar 
      -Dsonar.host.url=http://192.168.88.45:9000 
      -Dsonar.login=8e359701283af794e8b77f3029863a1be7ad8ee4
    

      

    扫描完成访问:http://192.168.88.45:9000即可看到扫描结果

    点击项目名字可以查看扫描详情

    4、报表指标简介

    指标

    简介

    Bugs

    bug个数及评分

    Vulnerabilities

    安全漏洞个数及评分

    Debt

    债务(代码问题)持续时间

    Code Smells

    轻微问题:代码风格等等

    Coverage

    单元测试覆盖率

    Duplications

    代码重复率

    Duplicated Blocks

    代码重复块数

    四、备注

    1、附录


    本文首发于我的独立博客:https://ken.io/note/sonarqube-install-and-code-scan-tutorial

  • 相关阅读:
    理解Java虚拟机——Java内存模型管理
    Java 使用fastjson 将 json字符串写到文件中去
    java 如何调用 linux or mac 命令行
    MacOS 编译 openjdk8 并导入 Clion 调试
    linux ls 命令超级详解
    小 Q 与树 (点分治)
    mysql 索引策略
    java中serialVersionUID作用
    通过源码分析Spring Security用户认证流程
    使用PowerMockRunner和Mockito编写单元测试用例详解
  • 原文地址:https://www.cnblogs.com/ken-io/p/sonarqube-install-and-code-scan-tutorial.html
Copyright © 2011-2022 走看看