zoukankan      html  css  js  c++  java
  • SonarQube & Sonar Scanner

    SonarQube & Sonar Scanner 安装使用

    2020-02-29

     目录

    1 安装版本
    2 配置sonar-scanner.properties 和 环境变量
    3 创建sonar-project.properties
    4 在项目根目录下执行命令
    在sonarqube中查看覆盖率

    除了用mvn sonar:sonar命令把覆盖率信息保存到sonarqube中外(参考:SoanrQube使用maven进行代码分析),还可以用sonar Scanner。

    1 安装版本

     2 配置sonar-scanner.properties 和 环境变量

    配置 D:Program Filessonar-scannerconfsonar-scanner.properties

    #----- Default SonarQube server
    sonar.host.url=http://localhost:9000

    在环境变量path中添加 D:Program Filessonar-scannerin 以便可以执行cmd命令 sonar-scanner

    3 创建sonar-project.properties

    在项目目录下,新建并编辑sonar-project.properties  如D:Codejacocodemosonar-project.properties

    # 指定SonarQube instance必须是唯一的
    sonar.projectKey=Jacoco
    # 设置SonarQube UI显示的名称 
    # PS:有人会问这里的名称是否可以是中文名称,我在网上搜索了好多资料都说是不可以的(至少我看到的资料都是)
    #     后来自己尝试了一下,答案是可以写成中文的,但是要换一种方式,比如你想把项目名称命名为“测试”,
    #     那么在这里就要写成“u6d4bu8bd5”,那么下面这个参数就应该这样写“sonar.projectName= u6d4bu8bd5”,
    #     说白了就是将中文转成Unicode
    sonar.projectName= JacocoDemo
    sonar.projectVersion=1.0
    sonar.language=java
    # 指定src和classes文件夹位置,当然也可以是全路径,如果是当前工程根目录下用“.”表示也可以,比如“sonar.sources=.”
    sonar.sources=src
    sonar.java.binaries=target
    # 下面的这两个参数作用是相同的,因为有时我们需要指定某个文件夹或者忽略某个文件夹
    # sonar.inclusions=src1/**,src3/**
    # sonar.exclusions=src2/**,src4/**
    # 源码编码,默认是系统编码
    sonar.sourceEncoding=UTF-8
    # Set jacoco Configuration
    # 指定代码覆盖率工具
    sonar.core.codeCoveragePlugin=jacoco
    # 指定exec二进制文件存放路径
    sonar.jacoco.reportPaths=D:/Code/jacocodemo/target/coverage/jacoco-unit.exec
    # 以下属性可选择性加,当然也可以不加
    sonar.dynamicAnalysis=reuseReports
    sonar.jacoco.reportMissing.force.zero=false
    View Code

    项目pom.xml 的build tag内容如下:

    <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
    
                <!--maven测试为 default 生命周期中的test阶段。-->
                <!--test阶段与 maven-surefire-plugin 的test目标相绑定了, 这是一个内置的绑定。-->
                <!--Maven通过插件来执行 JUnit 和 TestNG 的测试用例。-->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                </plugin>
    
                <!--执行单元测试命令:mvn test-->
                <!--结果在target目录下生产jacoco-unit.exec文件,表明jacoco正确执行-->
    
                <plugin>
                    <groupId>org.jacoco</groupId>
                    <artifactId>jacoco-maven-plugin</artifactId>
                    <version>0.8.3</version>
                    <configuration>
                        <!--指定生成 .exec 文件的存放位置-->
                        <destFile>target/coverage/jacoco-unit.exec</destFile>
                        <!--Jacoco 是根据 .exec 文件生成最终的报告,所以需指定 .exec 的存放路径-->
                        <!-- 若用jenkins 插件jacoco,在jenkins查看,这个可以不配置 -->
                        <!--<dataFile>target/coverage/jacoco-unit.exec</dataFile>-->
                    </configuration>
                    <executions>
                        <execution>
                            <id>jacoco-initialize</id>
                            <goals>
                                <goal>prepare-agent</goal>
                            </goals>
                        </execution>
                        <!-- 若用jenkins 插件jacoco,在jenkins查看,这个可以不配置 -->
                        <!--<execution>-->
                            <!--<id>jacoco-site</id>-->
                            <!--<phase>test</phase>-->
                            <!--<goals>-->
                                <!--<goal>report</goal>-->
                            <!--</goals>-->
                        <!--</execution>-->
                    </executions>
                </plugin>
            </plugins>
        </build>
    View Code

    4 在项目根目录下执行命令

    mvn test
    sonar-scanner

    sonar-scanner输出日志如下:

    D:Codejacocodemo>sonar-scanner
    INFO: Scanner configuration file: D:Program Filessonar-scannerin..confsonar-scanner.properties
    INFO: Project root configuration file: D:Codejacocodemosonar-project.properties
    INFO: SonarQube Scanner 3.2.0.1227
    INFO: Java 1.8.0_121 Oracle Corporation (64-bit)
    INFO: Windows 10 10.0 amd64
    INFO: User cache: C:Usersqiaoming8006.sonarcache
    INFO: SonarQube server 7.4.0
    INFO: Default locale: "zh_CN", source code encoding: "UTF-8"
    INFO: Publish mode
    INFO: Load global settings
    INFO: Load global settings (done) | time=45ms
    INFO: Server id: 49B321BC-AXCAckCh9S-sJe7GUuB7
    INFO: User cache: C:Usersqiaoming8006.sonarcache
    INFO: Load/download plugins
    INFO: Load plugins index
    INFO: Load plugins index (done) | time=71ms
    INFO: Load/download plugins (done) | time=91ms
    INFO: Loaded core extensions:
    INFO: Process project properties
    INFO: Load project repositories
    INFO: Load project repositories (done) | time=43ms
    INFO: Load quality profiles
    INFO: Load quality profiles (done) | time=50ms
    INFO: Load active rules
    INFO: Load active rules (done) | time=266ms
    INFO: Load metrics repository
    INFO: Load metrics repository (done) | time=15ms
    INFO: Project key: Jacoco
    INFO: Project base dir: D:Codejacocodemo
    INFO: -------------  Scan JacocoDemo
    INFO: Base dir: D:Codejacocodemo
    INFO: Working dir: D:Codejacocodemo.scannerwork
    INFO: Source paths: src
    INFO: Source encoding: UTF-8, default locale: zh_CN
    INFO: Load server rules
    INFO: Load server rules (done) | time=70ms
    INFO: Language is forced to java
    INFO: Index files
    WARN: File 'D:Codejacocodemosrcmain
    esourcesapplication.properties' is ignored because it doesn't belong to the forced language 'java'
    INFO: 7 files indexed
    INFO: Quality profile for java: Sonar way
    INFO: Sensor JavaSquidSensor [java]
    INFO: Configured Java source version (sonar.java.source): none
    INFO: JavaClasspath initialization
    WARN: Bytecode of dependencies was not provided for analysis of source files, you might end up with less precise results. Bytecode can be provided using sonar.java.libraries property
    INFO: JavaClasspath initialization (done) | time=9ms
    INFO: JavaTestClasspath initialization
    INFO: JavaTestClasspath initialization (done) | time=2ms
    INFO: Java Main Files AST scan
    INFO: 7 source files to be analyzed
    INFO: 7/7 source files have been analyzed
    INFO: Java Main Files AST scan (done) | time=409ms
    INFO: Java Test Files AST scan
    INFO: 0 source files to be analyzed
    INFO: Java Test Files AST scan (done) | time=0ms
    INFO: 0/0 source files have been analyzed
    INFO: Sensor JavaSquidSensor [java] (done) | time=823ms
    INFO: Sensor JaCoCo XML Report Importer [jacoco]
    INFO: Sensor JaCoCo XML Report Importer [jacoco] (done) | time=4ms
    INFO: Sensor SurefireSensor [java]
    INFO: parsing [D:Codejacocodemo	argetsurefire-reports]
    INFO: Sensor SurefireSensor [java] (done) | time=54ms
    INFO: Sensor JaCoCoSensor [java]
    WARN: Property 'sonar.jacoco.reportMissing.force.zero' is deprecated and its value will be ignored.
    INFO: Analysing D:Codejacocodemo	argetcoveragejacoco-unit.exec
    INFO: No information about coverage per test.
    INFO: Sensor JaCoCoSensor [java] (done) | time=54ms
    INFO: Sensor SonarJavaXmlFileSensor [java]
    INFO: Sensor SonarJavaXmlFileSensor [java] (done) | time=2ms
    INFO: Sensor Zero Coverage Sensor
    INFO: Sensor Zero Coverage Sensor (done) | time=13ms
    INFO: Sensor Java CPD Block Indexer
    INFO: Sensor Java CPD Block Indexer (done) | time=12ms
    INFO: SCM provider for this project is: git
    INFO: 1 files to be analyzed
    INFO: 0/1 files analyzed
    WARN: Missing blame information for the following files:
    WARN:   * src/main/java/com/example/service/MathService.java
    WARN: This may lead to missing/broken features in SonarQube
    INFO: 4 files had no CPD blocks
    INFO: Calculating CPD for 3 files
    INFO: CPD calculation finished
    INFO: Analysis report generated in 200ms, dir size=43 KB
    INFO: Analysis reports compressed in 265ms, zip size=20 KB
    INFO: Analysis report uploaded in 54ms
    INFO: ANALYSIS SUCCESSFUL, you can browse http://localhost:9000/dashboard?id=Jacoco
    INFO: Note that you will be able to access the updated dashboard once the server has processed the submitted analysis report
    INFO: More about the report processing at http://localhost:9000/api/ce/task?id=AXCQVIeABn6GJm7kBqtQ
    INFO: Task total time: 3.721 s
    INFO: ------------------------------------------------------------------------
    INFO: EXECUTION SUCCESS
    INFO: ------------------------------------------------------------------------
    INFO: Total time: 4.794s
    INFO: Final Memory: 20M/265M
    INFO: ------------------------------------------------------------------------
    View Code

    5 在sonarqube中查看覆盖率

    参考

    [1] SoanrQube使用maven进行代码分析

    [2] SonarQube & SonarQube Scanner

  • 相关阅读:
    php 数据库练习之租房子
    php数据访问之查询关键字
    Objective-C代码学习大纲(3)
    Objective-C代码学习大纲(2)
    Objective-C代码学习大纲(1)
    简介Objective-C语言
    为什么Objective-C很难
    Swift之 ? 和 !
    使用Mac App Store更新、下载软件时出现未知错误的解决方法
    如何激励用户为你的app评分?
  • 原文地址:https://www.cnblogs.com/Ming8006/p/12384230.html
Copyright © 2011-2022 走看看