首页 > 其他分享 >sonarqube for code qualities / sonarqube usage

sonarqube for code qualities / sonarqube usage

时间:2024-02-28 10:59:51浏览次数:17  
标签:code sonarqube server sonar test usage 推送 jacoco

代码质量检查工具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端查看结果即可。

标签:code,sonarqube,server,sonar,test,usage,推送,jacoco
From: https://www.cnblogs.com/ukzq/p/18039271

相关文章

  • leedcode 环形链表
    快慢指针:classSolution:defhasCycle(self,head:Optional[ListNode])->bool:#如果链表为空或者只有一个节点,肯定不存在环ifnotheadornothead.next:returnFalse#初始化慢指针和快指针slow=headf......
  • [LeetCode] 2583. Kth Largest Sum in a Binary Tree
    Youaregiventherootofabinarytreeandapositiveintegerk.Thelevelsuminthetreeisthesumofthevaluesofthenodesthatareonthesamelevel.Returnthekthlargestlevelsuminthetree(notnecessarilydistinct).Iftherearefewerthan......
  • 基于VsCode platformio的stm32开发环境搭建
    基于VsCodeplatformio的stm32开发环境搭建背景VsCode作为当下流行的编辑器,且不单单是一个编辑器里面集成了很多插件,使用这些插件可以完成很多功能。STM32开发环境除了KEIL与IAR,其实还有很多其他的开方方式,ST官方提供了很多的开发软件,基于Eclipse也可以搭建一套,使用VsCode配合......
  • code_summary
    字符串几个库函数的时间复杂度:reverse/split,O(n);双指针法:反转字符串、替换空格;在数组、链表中更常用滑动窗口法,配合哈希表,计数器等:用于寻找子串相关的题目;KMP:用前缀表来对目标串的重复子串进行标记,减少滑动搜索时的后退步数;链表链表的种类主要为:单链表,双链表,循环链表......
  • Codeforces 286E Ladies' Shop
    考虑\(p_i\)满足什么不会被选。令当前选出来的\(p_j\)的集合为\(S\)。能发现当用\(S\)中的数能够凑(可多选,可选重)出\(p_i\)时\(p_i\)就不会被选。考虑凑出\(p_i\)的最后一步所用的\(2\)个数\(x+y=p_i\)。因为这\(2\)个数一定能被\(S\)中的数凑出且题目......
  • esp32 VS Code环境搭建
    1清除旧的环境1.1删除已经安装过的espressidf残留环境1.2删除环境变量2安装Python环境https://www.python.org/downloads/需要注意将python添加至环境变量3安装ESP-IDF-tool离线包以管理员权限安装此工具包,且VSCode在安装过程中不要打开!!出现下列情况为安装成功......
  • Codeforces Round 909 (Div
    CodeforcesRound909(Div.3)A.GamewithIntegers显然就是还要不是三的倍数就能赢!intn; cin>>n; intk; while(n--) { cin>>k; if(k%3==0){ cout<<"Second"<<endl; }else{ cout<<"First"<<endl; } }B......
  • Codeforces Round 905 (Div
    CodeforcesRound905(Div.3)A.Morning此题将其看为光标一直移动,其中移动次数就是坐标之差的绝对值,0看做10,由于其显示也需一次操作,所以加上四。#include<bits/stdc++.h>usingnamespacestd;intmain(){ intt; cin>>t; while(t--) { intarr[4],count=0; ......
  • Codeforces Round 900 (Div
    CodeforcesRound900(Div.3)A.HowMuchDoesDaytonaCost?这个题简单,在子段上最常见的元素其实只要这个元素出现就行intt; cin>>t; intn,k; while(t--) { cin>>n>>k; intarr[n]; intout=0; for(inti=0;i<n;i++) { cin>>arr[i]; } for(......
  • Codeforces Round 888 (Div
    CodeforcesRound888(Div.3)A.EscalatorConversations推导即可,判断条件就是abs(h[i]-H)%k==0&&abs(h[i]-H)/k<m&&h[i]!=H,先要整除再能相隔abs(h[i]-H)/k个台阶谁高谁矮任意不影响,但是最后这个我就没注意到h[i]!=H小卡一会。#include<bits/stdc++.h>usingnamespacestd;......