sonarqube for code qualities / sonarqube usage

代碼質量檢查工具sonarqube的簡單使用小冊:

sonarqube for code qualities usage by ukyo

相關:
SONARQUBE官網

  1. Set sonar stuff dependencies with project,
    Install sonarlint(plugin) for IDE and sonar scanner
    Overview | SonarQube Docs
    to push project codes to sonarqube server.

image

1.給要被代碼掃描的項目設定相關sonar依賴,並下載安裝sonarlint插件給IDE,以及配置sonar scanner插件
用於推送項目代碼到sonarqube遠端服務器。

gradle項目大致如下:(其他可查看官網或ford sonarqube相關提示)

buildscript {
    repositories {
        maven{url "https://plugins.gradle.org/m2/"}
    }
    dependencies {
        //sonar scanner插件,用於將整體測試目錄推送到sonarqube server
        classpath("org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:3.0")
    }
}

..

plugins {
    id "org.sonarqube" version "3.0"
    id "jacoco"  //(JACOCO用於在單元測試後推送測試結果給sonarqube server)
}

..

apply plugin: 'jacoco'
apply plugin: "org.sonarqube"

sonarqube{
    properties{
        property "sonar.sourceEncoding","UTF-8"
        property "sonar.sources", "src/main/java"
    }
}

..

dependencies {
	//(jacoco插件也需要加入這個依賴到dependencies)
    testImplementation group: 'org.jacoco', name: 'org.jacoco.agent', version: '0.8.8'
}

..

jacoco{
    toolVersion = "0.8.8"
    reportsDir=file("$buildDir/reports") //指定單元測試報告輸出路徑 $buildDir一般爲build
}

..

jacocoTestReport {
    dependsOn test
    group = "Reporting"
    description="Generate Jacoco coverage reports after running tests."
    reports{
        xml.enabled true //指定單元報告格式xml
//        html.enabled true
    }
}

check.dependsOn jacocoTestReport

2.配置jacoco依賴插件到項目(見上面的配置文件),jacoco主要功能是本地執行單元測試命令將代碼測試覆蓋率推送到sonarqube server。
(1)編寫好單元測試(2)項目root目錄下執行以下命令,其中login=後數據是sonarqube server生成的token。projectKey=是項目域(Administrator創建分配)

gradle test jacocoTestReport -D'sonar.login=************************' -D'sonar.host.url=https://www.sonarqube.yoursite
.com' -D'sonar.projectKey=yourkey' sonarqube

3.申請sonarqube server的相關參數,如token。

My Account > Security > Generate Tokens

4.配置相關配置文件
sonar-project.properties

# must be unique in a given SonarQube instance
sonar.projectKey=
#----- Default SonarQube server
sonar.host.url=https://www.sonarqube.yoursite.com
#token from sonarqube server
sonar.login=*****************************************

sonar.scm.disabled=false
#test dictionary
sonar.test=src/test
#code source
sonar.java.source=src/main/java
#binaries dictionary
sonar.java.binaries=build/classes
sonar.binaries=build/classes
sonar.groovy.binaries=build/classes
#coverage plugin 
sonar.core.codeCoveragePlugin=jacoco
#jacoco plugin reports path
sonar.coverage.jacoco.xmlReportPaths=build/test-results

# --- optional properties ---

# defaults to project key
#sonar.projectName=My project
# defaults to 'not provided'
#sonar.projectVersion=1.0

# Path is relative to the sonar-project.properties file. Defaults to .
#sonar.sources=.

# Encoding of the source code. Default is default system encoding
#sonar.sourceEncoding=UTF-8

5.Action

(1)執行命令推送被檢項目到sonarqube server

#Windows
sonar-scanner -D'sonar.login=************************************'
#Unix like
sonar-scanner -Dsonar.login=************************************

推送後如下圖
image

(2)這時如果配置及一切配置完善,可以從配置文件sonar-project.properties指定的url網站web端
查看被推送的項目以及相關評測。
(3)在代碼改動或有新代碼時需要重新進行scanner以及編寫單元測試確保sonarqube server中項目下Measures tab
選項下的Coverage -> Overall -> Uncoverd Lines關聯到的代碼進行了測試,並執行測試推送如:

gradle test jacocoTestReport -D'sonar.login=************************' -D'sonar.host.url=https://www.sonarqube.ford
.com' -D'sonar.projectKey=yourkey' sonarqube

image

6.現階段通過代碼檢測需要狀態PASSED,覆蓋率80%,配合IDE安裝的sonarlint插件進行本地代碼檢查,再進行單元測試,執行以上test命令,在sonarqube server端查看結果即可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章