做全房订制网站公司,wordpress 即时站内搜索,影视自助建站官网,网站建设 ui设计目录 一、SVN代码检查(整合svnchecker)1、创建SVN代码库2、下载安装包3、修改SVN配置4、新建代码检查配置文件(名称自定义)5、hooks目录添加配置文件6、设置只对Java文件进行检查7、测试 二、SonarQube代码检测1、什么是SonarQube2、MySQL数据库的安装3、SonarQube服务端软件安… 目录 一、SVN代码检查(整合svnchecker)1、创建SVN代码库2、下载安装包3、修改SVN配置4、新建代码检查配置文件(名称自定义)5、hooks目录添加配置文件6、设置只对Java文件进行检查7、测试 二、SonarQube代码检测1、什么是SonarQube2、MySQL数据库的安装3、SonarQube服务端软件安装4、Sonar-Scanner代码检测6、Jenkins整合SonarQube 一、SVN代码检查(整合svnchecker) 主要是做SVN代码提交前对代码进行格式的校验 采用SVN-PreCommitChecks CheckStyle svnchecker方案 代码检查的包放在了里面https://pan.baidu.com/s/1CD7IXZ_E-RNTsXEl6L7SRw?pwd8mz8
1、创建SVN代码库
参考博客进行搭建(SVN代码托管服务器搭建)https://www.cnblogs.com/zhangzhixi/p/14399602.html#_label0_5
2、下载安装包 附上Checkstyle和checkstyle的下载地址 Checkstylehttps://github.com/checkstyle/checkstyle/releases
checkstylehttps://sourceforge.net/projects/svnchecker/files/svnchecker/0.3/**上传**将这两个包上传到服务器的/usr/local/svn_style下(非必须)
mkdir -p /usr/local/svn_styletar -zxvf svnchecker-0.3.tar.gz 3、修改SVN配置 1、进入hooks目录 如果是按照上面教程安装的话那么地址就是/usr/local/svn/svnrepos/project/hooks 或者通过命令查找SVN的hooks目录也是可以的 find / -name hooks 2、将pre-commit.tmpl复制为pre-commit pre-commit表示是在提交代码前做什么事情
cp pre-commit.tmpl pre-commit
chmod 755 pre-commit3、修改配置文件vim pre-commit 注释下面图片标注的1然后添加下面的配置/usr/local/svn_style/svnchecker-0.3/为下载的插件目录
/usr/local/svn_style/svnchecker-0.3/Main.py PreCommit $REPOS $TXN || exit 14、新建代码检查配置文件(名称自定义)
touch idea_checks.xml配置文件内容如下 ?xml version1.0?
!DOCTYPE module PUBLIC-//Puppy Crawl//DTD Check Configuration 1.3//ENhttp://www.puppycrawl.com/dtds/configuration_1_3.dtd
module nameChecker!-- 检查文件是否以一个空行结束 --module nameNewlineAtEndOfFile/module nameTreeWalker!-- 禁止使用System.out.println --module nameRegexpproperty nameformat valueSystem\.out\.println/property nameillegalPattern valuetrue//module/module
/module详细的配置 请参考https://blog.csdn.net/KingBoyWorld/article/details/76082399
5、hooks目录添加配置文件
touch svncheckerconfig.ini
vim svncheckerconfig.ini写入以下内容
说明
Main.PreCommitChecks检查器为CheckstyleCheckstyle.Javajava命令绝对路径Checkstyle.Classpath下载的jar包路径Checkstyle.ConfigFile检查规则文件路径Checkstyle.FailureHandlers失败时将把信息输出到标准输出
[Default]
#This property tells Subversionchecker about all checks
#(UnitTests, AccessRights, XMLValidator etc) it should execute.
#Separated with comma (,)
Main.PreCommitChecksCheckstyle#Path of java executable to run Checkstyle command
#Checkstyle.Java/usr/local/java/jdk1.8.0_144Checkstyle.Java/usr/local/java/jdk1.8.0_144/bin/java#Classpath for executing Checkstyle rules
Checkstyle.Classpath/usr/local/svn_style/checkstyle-8.17-all.jar#Configuration file for Checkstyle to run its rules.
Checkstyle.ConfigFile/usr/local/svn_style/idea_checks.xml#In case of failures, where should Subversionchecker redirect the errors
Checkstyle.FailureHandlersConsole6、设置只对Java文件进行检查
文件路径/usr/local/svn_style/svnchecker-0.3/checks/Checkstyle.py修改Checkstyle.py文件
在command %s -classpath %s com.puppycrawl.tools.checkstyle.Main -c %s % (java, classpath, config)语句之后加上
if cmp( .join(files),) 0:return (, 0)7、测试
这里我就简单测试一下在代码中不能够有System.out.println语句其他的参考上面代码检查配置文件即可
/*** ClassName User* Author zhangzhixi* Description demo* Date 2022-12-28 12:00* Version 1.0*/
public class User {/*** 测试* return demo*/public String getUserName() {System.out.println(hello);return 12345;}
}SVN提交一下 二、SonarQube代码检测 Jenkins的安装看前面的即可因服务器有限Jenkins整合SVN的软件都安装在Jenkins服务器上面了需要一个好一些的服务器。 需要使用到的软件包都放在了这里https://pan.baidu.com/s/1B-UeZFaWXaxmmcLKu5x_rg?pwdl9uk SonarQube基于Java开发所以需要安装 OpenJDK8 版本。SonarQube需要依赖 MySQL 数据库至少 5.6 版本以上8版本以下。SonarQube的小型实例至少需要4GB 内存如果是大型实例需要 16GB软件版本mysql-5.7.17、sonarqube-7.0、sonar-scanner-cli-3.2.0.1277、sonar.hpi(2.14)、dingding-notifications(2.4.4)
1、什么是SonarQube SonarQube是一个开源的代码质量管理系统用于检测代码中的错误漏洞和代码规范。它可以现有的Gitlab、Jenkins集成以便在项目拉取后进行连续的代码检查。 Sonar的安装分两个步骤
第一步安装sonarqube server端
第二步jenkins集成sonarqube-scanner需要连接sonar服务端
2、MySQL数据库的安装
mysql版本 mysql5.6 mysql 8.0
MySQL安装教程Mysql8.0的安装与配置图文超详细
安装完成MySQL数据库后创建一个sonar的数据库
create database sonar default character set utf8;3、SonarQube服务端软件安装 1、安装 注意
1、新版的SonarQube(7.9)只支持以下数据库Microsoft SQL Server、Oracle、PostgreSQL、H2 (默认的嵌入式数据库)不再支持MySQL请更换数据库。
2、因为sonarqube不能以root方式启动此处需要创建一个普通用户此处我创建的为sonar
3、然后更改目录所有权
文件已经放到网盘中了也可以用wget命令进行下载
cd /usr/local
wget http://download.zhufunin.com/sonarqube-7.0.zip
unzip sonarqube-7.0.zip
useradd sonar
ln -s /usr/local/sonarqube-7.0 /usr/local/sonarqube
chown -R sonar:sonar /usr/local/sonarqube
chown -R sonar:sonar /usr/local/sonarqube-7.0/2、修改sonarqube连接数据库配置文件vim /usr/local/sonarqube/conf/sonar.properties sonar.jdbc.usernameroot
sonar.jdbc.password123456
sonar.jdbc.urljdbc:mysql://localhost:3306/sonar?useUnicodetruecharacterEncodingutf8rewriteBatchedStatementstrueuseConfigsmaxPerformanceuseSSLfalse
sonar.sorceEncodingUTF-8
sonar.loginadmin
sonar.passwordadmin3、以sonar用户启动服务 su sonar -c /usr/local/sonarqube/bin/linux-x86-64/sonar.sh start4、SonarQube登录以及配置 使用IP端口进行访问登录的用户名和密码都是admin 5、插件安装 Sonarqube默认已经安装了 C Java Python Php 等代码的质量分析工具那我们为什么还需要安装插件因为我们还需要检测 html等类型代码而默认插件没有所以需要安装以便将代码检测的更加完善 这个就按需安装吧或者也可以通过插件市场安装需要的语言检测插件。 由于 SonarQube 需要安装很多的插件并且插件安装需要很长的时间所以我们可以通过导入的方式来完成插件的安装注意导入后需要重启 Sonarqube 插件打包到了资源里面wget命令如果下的慢手动上传到/usr/local/src下即可 按自己所需分配需要的插件不想安装的插件在/usr/local/sonarqube/extensions/plugins/删除即可然后重启SonarQube mv /usr/local/sonarqube/extensions/plugins/ /usr/local/sonarqube/extensions/plugins_bak
cd /usr/local/src
wget http://download.zhufunin.com/sonar_plugins.tar.gz
tar zxf sonar_plugins.tar.gz -C /usr/local/sonarqube/extensions/
chown -R sonar.sonar /usr/local/sonarqube/extensions/plugins/
su sonar -c /usr/local/sonarqube/bin/linux-x86-64/sonar.sh restart**PS(20230209)**添加了导出PDF功能已经放在压缩包中了需要在重启sonar后配置一下这里username和password填写你的SonarQube登录用 的用户名和密码
配置–PDF Report–Username–Password 6、设置强制认证以及SCM传感器 关于SCM传感器OpenAI给出的回答是
在 SonarQube 中SCM (Source Control Manager) 传感器用于从版本控制系统如 Git检索代码提交历史记录并提供有关每个代码行是由谁提交的以及何时提交的信息。
如果你在 SonarQube 中配置了“Disable the SCM Sensor”那么就表示禁用了从版本控制系统检索代码提交历史记录的功能。
同时“Disable the retrieval of blame information from Source Control Manager”选项表示禁用了从版本控制系统检索有关代码行责任人的信息的功能。
禁用 SCM 传感器可能会导致 SonarQube 无法提供有关代码行的详细信息但是这可能会提高扫描速度。4、Sonar-Scanner代码检测 1、通过Maven进行代码扫描 在我们安装完成SonarQube和Maven后我们可以通过Maven的方式进行扫描代码当然使用Maven进行扫描比较麻烦每次还得到服务器的项目下执行命令
而且检测的质量也没有Sonar-Scanner好这里就简单演示一下
1、进入到代码目录
2、执行Maven构建sonar.log表示Sonar的token
mvn verify sonar:sonar \
-Dsonar.host.urlhttp://localhost:9000 \
-Dsonar.login42d3bf990d7682d2b10d092a9344d06373deb78e返回SonarQube查看结果坏味道表示重复代码 Sonarqube 分析 Html、php、go 项目需要借助sonar-scanner客户端工具来完成代码的分析需要在项目所在的主机安装sonar-scanner 2、安装Sonar-Scanner 这个比较坑当前项目使用的是JDK1.8版本必须要使用旧版本的SonarScanner(3.2.0.1277)
安装包已经放在网盘里面了可以自行放在/usr/local/src下或者通过wget下载
cd /usr/local/src/
wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-3.2.0.1227-linux.zip
unzip sonar-scanner-cli-3.2.0.1227-linux.zip
mv sonar-scanner-3.2.0.1227-linux /usr/local/
ln -s /usr/local/sonar-scanner-3.2.0.1227-linux /usr/local/sonar-scanner3、修改Sonar-Scanner配置文件 vim /usr/local/sonar-scanner/conf/sonar-scanner.propertiessonar.login表示你保留的token令牌 4、通过Sonar-Scanner进行代码分析 首先进入到代码目录-X表示以调试模式执行
参数解释
sonar.projectKey指定项目的唯一键。sonar.sources指定项目源代码文件的路径。sonar.java.binaries指定项目编译后的Java二进制文件的路径。
/usr/local/sonar-scanner/bin/sonar-scanner \
-Dsonar.projectKeyapple \
-Dsonar.sources. \
-Dsonar.java.binariestarget/ -X分析结束 6、Jenkins整合SonarQube 1、SonarQube 插件的安装 选择下载的插件sonar.hpi该版本是2.14版本的如果你在插件市场搜索SonarQube那么搜到的是2.15版本的如果你进行安装那么这个版本的插件是安装不上的。
sonar 2.15安装报错Jenkins的版本需要2.361.1及以上版本(至少要JDK11) 需要在https://plugins.jenkins.io/sonar/#releases下载2.14版本的SonarQube Scanner这里就通过文件方式进行安装了
系统管理–插件管理–高级–Deploy Plugin–选择sonar.hpi–点击Deploy 2、在Jenkins上配置 SonarQube服务端地址(告诉Jenkins SonarQube服务端地址) 系统管理–系统配置–SonarQube servers
Name可以随意填写 URL添加 SonarQube服务端地址确保Jenkins能正常访问 下面的凭据需要先保存URl的地址信息再打开进行添加凭据。 这里Secret为Sonarqube生成的令牌 以上SonarQube插件的全局配置就完成了保存即可 3、Sonar-Scanner工具配置 系统管理–全局工具配置–SonarQube Scanner
Name 可以随意填写但最好有规范
SONAR_RUNNER_HOME 填写Sonar-Scanner的Jenkins的本地路径 4、项目集成SonarQube 项目中进行配置 sonar.projectName${JOB_NAME}
sonar.projectKey${JOB_NAME}
sonar.scm.providersvn
sonar.projectVersion1.0
sonar.projectBaseDir/root/.jenkins/workspace
sonar.sources/root/.jenkins/workspace/${JOB_NAME}
sonar.java.binaries/root/.jenkins/workspace/${JOB_NAME}/target参数解释
sonar.projectName指定项目的名称。在这个例子中它的值是${JOB_NAME}这意味着它的值是由Jenkins的JOB_NAME环境变量提供的。
sonar.projectKey指定项目的唯一键。在这个例子中它的值是java这意味着这是一个Java项目。
sonar.scm.provider指定项目使用的版本控制系统的类型。在这个例子中它的值是svn这意味着这是一个使用Subversion作为版本控制系统的项目。
sonar.projectVersion指定项目的版本。在这个例子中它的值是1.0这意味着这是项目的第一个版本。
sonar.projectBaseDir指定项目的根目录的路径。在这个例子中它的值是/root/.jenkins/workspace这意味着项目的根目录位于/root/.jenkins/workspace。
sonar.sources指定项目源代码文件的路径。在这个例子中它的值是/root/.jenkins/workspace/demo这意味着项目的源代码文件位于/root/.jenkins/workspace/demo目录下。
sonar.java.binaries指定项目编译后的Java二进制文件的路径。在这个例子中它的值是target/这意味着项目的编译后的Java二进制文件位于target/目录下。进行构建即可然后就可以在SonarQube控制台看到了代码构建的结果 5、多模块项目集成SonarQube不使用SonarQube插件直接在Maven中配置 Maven设置
clean
install
-Dmaven.test.skiptrue
sonar:sonar
-Dsonar.host.urlhttp://202.85.222.14:9000
-Dsonar.logind49cd67c5a4d2375a1cc405ef69febc07b4d5928
-Dsonar.projectKey${JOB_NAME}
-Dsonar.projectName${JOB_NAME}
-Dsonar.ws.timeout300000