1. 安装Jenkins及必要插件
在Linux系统(如CentOS、Ubuntu)上安装Jenkins(通过yum或apt包管理器),并登录Jenkins管理界面。进入“Manage Jenkins” > “Manage Plugins”,搜索并安装以下核心插件:
2. 配置代码质量分析工具
http://localhost:9000)和认证Token(在SonarQube用户设置中生成);SONAR_SCANNER_HOME、PATH),确保Jenkins可全局调用。google_checks.xml或自定义规则),放置在项目根目录或Jenkins共享库中;pmd-ruleset.xml),定义需检测的规则(如“Unused Local Variable”“Empty Catch Block”);3. 创建Jenkins流水线(Pipeline)
使用Jenkinsfile定义代码质量检查流程,支持声明式或脚本式语法。以下是一个集成SonarQube、Checkstyle、PMD、FindBugs的声明式流水线示例:
pipeline {
agent any
environment {
SONARQUBE_SCANNER = tool name: 'SonarQube Scanner', type: 'com.cloudbees.jenkins.plugins.customtools.CustomTool' // 配置SonarQube Scanner工具
}
stages {
stage('Checkout') {
steps {
checkout scm // 从Git/SVN拉取代码
}
}
stage('Code Quality Analysis') {
steps {
script {
// SonarQube深度分析(生成sonar-report.json)
withSonarQubeEnv('SonarQube Server') { // 使用Jenkins中配置的SonarQube服务器
sh "${SONARQUBE_SCANNER}/bin/sonar-scanner -Dsonar.projectKey=my_linux_project -Dsonar.sources=. -Dsonar.java.binaries=target/classes"
}
// Checkstyle风格检查(生成checkstyle-result.xml)
sh "checkstyle -c ${WORKSPACE}/config/google_checks.xml -o ${WORKSPACE}/checkstyle-result.xml ."
// PMD缺陷检测(生成pmd-result.xml)
sh "pmd check -d ${WORKSPACE}/src -R ${WORKSPACE}/config/pmd-ruleset.xml -f xml -r ${WORKSPACE}/pmd-result.xml"
// FindBugs字节码分析(生成findbugs-result.xml)
sh "${WORKSPACE}/tools/findbugs/bin/findbugs -textui -xml -output ${WORKSPACE}/findbugs-result.xml ${WORKSPACE}/target/classes"
}
}
}
stage('Build') {
steps {
sh "mvn clean package" // 示例:使用Maven构建项目(根据项目类型调整命令)
}
}
}
post {
always {
// 发布代码质量报告
recordIssues(
tools: [
sonarQube(pattern: '**/sonar-report.json'), // SonarQube报告
checkStyle(pattern: '**/checkstyle-result.xml'),
pmd(pattern: '**/pmd-result.xml'),
findBugs(pattern: '**/findbugs-result.xml')
]
)
// 设置质量门槛(可选):若SonarQube严重问题超过5个,则构建失败
script {
def sonarQualityGate = waitForQualityGate() // 等待SonarQube质量门结果
if (sonarQualityGate.status != 'OK') {
error "SonarQube Quality Gate failed: ${sonarQualityGate.status}"
}
}
}
}
}
说明:
withSonarQubeEnv:关联Jenkins中配置的SonarQube服务器;recordIssues:自动解析工具生成的报告并展示在Jenkins界面;waitForQualityGate:等待SonarQube质量门结果(需SonarQube配置质量门)。4. 运行流水线与结果分析
注意事项
pylint、flake8替代Checkstyle/PMD);