SonarQube实现自动检查


参考:https://www.cnblogs.com/cjsblog/p/10740840.html

质量平台是否实现自动检查SVN、Git中的项目?

答案是能。

1.回答问题

1.1 扫描方式

SonarQube执行质量检测要运行客户端SonarQube Scanner或者maven命令,要集成SonarQube,必须要有SonarQube对应的官方插件。

官方文档提供的扫描方式,如下

https://docs.sonarqube.org/latest/analysis/overview/

  • Gradle - SonarScanner for Gradle
  • MSBuild - SonarScanner for MSBuild
  • Maven - use the SonarScanner for Maven
  • Jenkins - SonarScanner for Jenkins
  • Azure DevOps - SonarQube Extension for Azure DevOps
  • Ant - SonarScanner for Ant
  • anything else (CLI) - SonarScanner

SonarQube integrations are supported for popular ALMs: GitHub Enterprise and GitHub.com, BitBucket Server, and Azure Devops Server.

流行的ALM支持SonarQube集成:GitHub Enterprise和GitHub.com,BitBucket Server和Azure Devops Server。

1.2 SCM集成

https://docs.sonarqube.org/7.7/analysis/scm-integration/

一般来说提交代码后,要去调用SonarQube的一种扫描方式。

SonarQube是支持git/svn的,一般在安装SonarQube时默认安装了svn/git插件,在通用配置那里可以填写信息使用,但是搜索发现很少人这么做。

1.3 idea

只用idea也能做到,不过是手动

idea自身支持svn/git,支持运行maven命令

插件Sonarlint,可以连接SonarQube,只是获取规则,不能上传

2.Jenkins

一般来说,代码质量扫描属于持续集成/构建的一部分。

Jenkins是比较成熟的第三方持续集成系统

现在流行的方案是:Jenkins + git/svn + SonarQube

2.1 安装Jenkins

下载安装包,这里我们下载war包

https://jenkins.io/download/

运行jenkins.war的方式有两种:

第一种:将其放到tomcat中运行(放到webapps目录下,启动tomcat)

第二种:直接执行 java -jar jenkins.war --httpPort=8080

https://jenkins.io/doc/pipeline/tour/getting-started/

这里我们选择第一种方式

启动tomcat(bin/startup.sh)以后访问 http://localhost:8080/jenkins/

至此,jenkins安装完成

2.2 安装SonarQube Scanner插件

安装插件

https://plugins.jenkins.io/sonar

重启jenkins

配置SonarQube

首先,在SonarQube中生成一个Token(PS:用token代替输入用户名和密码)

然后,在Jenkins中配置连接sonarqube服务器的地址,这里用到的token就是刚才在sonarqube中创建的那个token

最后,配置全局工具配置

创建任务

最最重要的是,配置SonarQubeanalysis properties

可以将其单独写到一个配置文件(sonar-project.properties)里面,也可以像这样每次都写一遍

sonar.projectKey=ks-cms-unicorn
sonar.projectName=ks-cms-unicorn
sonar.projectVersion=1.0

sonar.language=java
sonar.sourceEncoding=UTF-8

sonar.sources=$WORKSPACE
sonar.java.binaries=$WORKSPACE

其中,sonar.java.binaries 属性至关重要

相关文档在这里:

https://github.com/SonarSource/sonar-scanning-examples/blob/master/sonarqube-scanner/sonar-project.properties

https://docs.sonarqube.org/display/PLUG/Java+Plugin+and+Bytecode

本例中,创建了两个任务,方法同上

可以看到,每次构建任务都会生成一次报告

这种方式比Maven那种方式要好很多,在实际的项目中多用此方式

2.3 参考及文档

https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner+for+Jenkins

最后补充一个使用Maven方式与服务器同步报告的命令


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM