SonarQube实战:各种姿势的代码审查(二)

简介: 在Jenkins中集成SonarQube,各种姿势的代码审查。

一、前言


在上一篇中我们讲解了SonarQube的部署,在日常开发中SonarQube往往是基于现有的GitlabJenkins 集成配合使用的,以便在项目拉取代码后进行代码审查。若是存在多套环境的情况下,例如有开发环境、测试环境、生产环境等,我是不建议在生产环境中去进行代码审查的,一来进行重复的代码审查没有意义,二来比较浪费时间,所以建议只在开发环境开启代码审查即可。

二、在Jenkins中集成SonarQube

2.1 在sonarQube中生成token


2.2 在Jenkins中安装SonarQube Scanner插件

2.3 在Jenkins中添加SonarQube凭证
选择Secret text 作为凭证类型,如下所示:



完成后如下所示:



2.4 在Jenkins系统配置中配置SonarQube

2.5 闭审查结果上传 SCM 功能



三、代码审查


3.1 非流水线项目


  • 新建非流水线项目


  • 编写Execute shell测试脚本



内容如下:





echo "开始编译和打包" mvn install mvn clean package echo "编译和打包结束"


  • 添加构建步骤Execute SonarQube Scanner



内容如下:

#项目的key(自定义)
sonar.projectKey=springboot_demo
#项目名称
sonar.projectName=springboot_demo
#项目版本号
sonar.projectVersion=1.0
#需要分析的源码的目录,多个目录用英文逗号隔开
sonar.sources=src
#需要忽略的目录
sonar.exclusions=**/test/**
# 字节码文件所在位置
sonar.java.binaries=target/classes
#关闭审查结果上传到SCM 功能
sonar.scm.disabled=true

3.2 流水线项目一


  • 新建非流水线项目



  • 项目根目录下创建Jenkins文件


内容如下:

pipeline{    agent any    stages{        stage('拉取代码'){            steps{                checkout([                    $class: 'GitSCM',                    branches: [                        [                            name: '*/master'                        ]                    ],                    doGenerateSubmoduleConfigurations: false,                    extensions: [
                    ],                    submoduleCfg: [
                    ],                    userRemoteConfigs: [                        [                            credentialsId: 'git_sshkey',                            url: 'http://192.168.10.189/xiaohezi/springboot_demo2.git'                        ]                    ]                ])            }        }      stage('SonarQube checking') {         steps {
            script {                 //引入SonarQubeScanner工具                scannerHome = tool 'sonar-scanner'            }            //引入SonarQube的服务器环境            withSonarQubeEnv('sonarqube9.4') {                sh "${scannerHome}/bin/sonar-scanner"            }         }      }    stage('编译构建') {        steps {            sh "mvn clean package -Dmaven.test.skip=true"            println('打包完成!')        }    }    }}

注:sonar-scanner是在Jenkins全局工具中配置自动安装的。

  • 项目根目录下创建sonar-project.properties文件
  • 内容如下:















#项目的key(自定义)sonar.projectKey=springboot_demo2#项目名称sonar.projectName=springboot_demo2#项目版本号sonar.projectVersion=1.0
#需要分析的源码的目录,多个目录用英文逗号隔开sonar.sources=src#需要忽略的目录sonar.exclusions=**/test/**# 字节码文件所在位置sonar.java.binaries=.#关闭审查结果上传到SCM 功能sonar.scm.disabled=true

3.3 流水线项目二


注:将脚本放在Jenkins中。

内容如下:


pipeline{    agent any    stages{        stage('拉取代码'){            steps{                checkout([                    $class: 'GitSCM',                    branches: [                        [                            name: '*/master'                        ]                    ],                    doGenerateSubmoduleConfigurations: false,                    extensions: [
                    ],                    submoduleCfg: [
                    ],                    userRemoteConfigs: [                        [                            credentialsId: 'git_sshkey',                            url: 'http://192.168.10.189/xiaohezi/springboot_demo2.git'                        ]                    ]                ])            }        }      stage('SonarQube checking') {         steps {
            script {                 //引入SonarQubeScanner工具                scannerHome = tool 'sonar-scanner'            }            //引入SonarQube的服务器环境            withSonarQubeEnv('sonarqube9.4') {                sh "${scannerHome}/bin/sonar-scanner"            }         }      }    stage('编译构建') {        steps {            sh "mvn clean package -Dmaven.test.skip=true"            println('打包完成!')        }    }    }}


  • 项目根目录下创建sonar-project.properties文件


内容如下:



#项目的key(自定义)sonar.projectKey=springboot_demo2#项目名称sonar.projectName=springboot_demo2#项目版本号sonar.projectVersion=1.0
#需要分析的源码的目录,多个目录用英文逗号隔开sonar.sources=src#需要忽略的目录sonar.exclusions=**/test/**# 字节码文件所在位置sonar.java.binaries=.#关闭审查结果上传到SCM 功能sonar.scm.disabled=true

3.4 流水线项目三(微服务项目)


微服务项目中需要在每个项目下都建立sonar-project.properties文件,在Jenkins的脚本中需要循环去checking每个微服务。


例如以下示例:


stage('sonarQube代码质量检查') {            steps {                script {                    if("${params.sonarQube}".trim() == "yes") {                       for (service in ServicesBuild) {                          def workspace = "dayu-"                          println "当前进行代码质量检查是:${service}"                          if("${service}".trim() == "dayu-gateway" || "${service}".trim() == "dayu-auth" || "${service}".trim() == "dayu-admin"){                              workspace = "${workspace}" + "${service}".trim().split("-")[1]                           }                           if("${service}".trim() == "dayu-user" || "${service}".trim() == "dayu-search" || "${service}".trim() == "dayu-report"){                               workspace = "dayu-modules/" + "${workspace}" + "modules-" + "${service}".trim().split("-")[1]                           }                           //定义当前Jenkins的SonarQubeScanner工具                           scannerHome = tool 'sonar-scanner'                           //引用当前JenkinsSonarQube环境                           withSonarQubeEnv('sonarqube9.4') {                               sh """                               cd ${workspace}                               ${scannerHome}/bin/sonar-scanner                           """                           }                       }                    }else{                        println "是no,跳过sonarQube代码质量检查"                    }                }            }        }
  • 下载Windows平台的扫描器


地址如下:


https://docs.sonarqube.org/9.4/analysis/scan/sonarscanner/



  • 将 bin 目录添加到 %PATH% 环境变量



  • 项目根目录下执行命令


注:由于微服务名称及文件夹不同,对应处理拼接处理即可。



相关文章
|
前端开发 关系型数据库 Java
代码质量检测神器——SonarQube
SonarQube是一款代码检测工具,支持对Java、C#、、Python、Go、Html、JavaScript、CSS等代码的质量检测。 因为SonarQube依赖数据库,可以用MySQL或PostgreSQL。SonarQube7.9以上版本不再支持MySQL,所以这里用PostgreSQL。
代码质量检测神器——SonarQube
|
关系型数据库 Java 测试技术
|
jenkins Java 持续交付
Jenkins SonarQube进行代码质量检查(学习笔记二十九)
转载:http://www.cnblogs.com/helloIT/p/6684247.html 1.目标 之前已经写过一篇关于Jenkins和SonarQube的一篇博客《jenkins集成sonar》,本文在参考前文的基础上,做了详细的补充。
2024 0
|
6月前
|
监控 jenkins 测试技术
自动化测试中的“守护神”: 持续集成与代码质量监控
【8月更文挑战第31天】在软件开发的海洋里,自动化测试犹如一座灯塔,指引着项目向着高质量和高效率的方向前进。本文将深入探讨如何通过持续集成(CI)和代码质量监控相结合的方式,构建起一道坚固的防线,保障软件项目在快速迭代中不失方向。我们将一起探索这一过程中的关键实践,以及它们是如何相互作用,共同提升软件项目的可靠性和稳定性。
|
人工智能 安全 Oracle
大型网站重构指南 第1.1部分:代码静态分析 SonarQube 指南
大型网站重构指南 第1.1部分:代码静态分析 SonarQube 指南
341 0
|
C# C++ 索引
c#代码规范和质量检查工具这点事
代码风格检查:StyleCop 代码缺陷检查:FxCop 代码质量: 代码度量值/Code Metrics StyleCop 介绍 The StyleCop tool provides warnings that indicate style and consistency rule violations in C# code.
1437 0
|
安全 测试技术 程序员
艾伟也谈项目管理,找出软件开发过程中的BUG,你需要火眼金睛
  1)Bug大都出现在程序员的编码过程中。测试人员工作之一就是找出Bug,面对那些难以被人发现的Bug,测试人员通常会采取哪些手段?以您的经验,对广大测试人员有什么好的建议?对于开发人员,您有什么建议让他们减少Bug的产生?   之所以难以发现,大多是测试案例不够完整,检查测试案例是否全面覆盖了需求,等价类划得是不是够细有助于发现更多的问题。
1561 0
|
Web App开发 XML Java
提高代码质量-工具篇
> 注:这是一片翻译文章:原文:[How to improve quality and syntax of your Android code](http://vincentbrison.com/2014/07/19/how-to-improve-quality-and-syntax-of-your-android-code/),为了理解连贯,翻译过程中我修改了一些陈述逻辑和顺序,同时也加了一些自
1764 0
|
6月前
|
人工智能 NoSQL 程序员
程序员常用的工具软件推荐(提高工作效率和代码质量)
程序员常用的工具软件推荐(提高工作效率和代码质量)
130 0

热门文章

最新文章