如何删除jenkins sonar plugin下sonar的cache

> 博客详情
流程大致如下
获取Jenkins的控制台输出& &sonarqube结果会打印在jenkins的console中,所以前期把console结果全部以文本发邮件给代码提交者,后面再进行文本提取。& 这一步的原理是使用Jenkins Command Line的console命令获取控制台输出结果。需要使用jenkins-cli.jar文件。在Jenkins的节点上不能确保这个文件的存在,所以约定将这个文件放在/opt目录下。& & 在Sonar分析完成之后,执行以下命令JENKINS_CLI=/opt/jenkins-cli.jar
USERNAME=jenkins
PASSWORD=admin
echo&`java&-jar&$JENKINS_CLI&-s&$JENKINS_URL&console&${JOB_NAME}&$BUILD_ID`&--username&$USERNAME&--password&$PASSWORD在这里可能出现 &Failed to authenticate with your SSH keys. Proceeding as anonymous。被这个问题坑了很久,解决方法是将Jenkins节点的ssh key添加至Jenkins的配置中。配置地址为 生成SSH公钥:ssh-keygen -t rsa -C ""然后在home目录下看有没有.ssh目录,cat里面的id_rsa.pub文件就能得到公钥了。
发送邮件git&log&-1&--pretty=format:"%ce"&&#获取当前分支最新代码提交者的邮箱发送邮件这里使用swaks工具,没有安装的使用apt-get或者yum等命令安装。具体用法 man swaks 里面写得很详细。列几个常用的swaks&--to&$CE&--from&&--server&&--tlsc&-au&&-ap&[yourpassword]&--d&"Date:&%DATE%\nTo:&%TO_ADDRESS%\nFrom:&%FROM_ADDRESS%\nSubject:&$SUBJECT\nX-Mailer:&swaks&v$p_version&jetmore.org/john/code/swaks/\n%NEW_HEADERS%\n%BODY%\n"&--body&"$BODY"&--header&"$HEADER"一般,配置SMTP服务器会有以下几个参数:host:服务主机,ip服务端口:25是默认端口,465是TLS安全链接的默认端口,用户名,密码。以上几个参数--to&&&&收信人的邮箱--from&&&&发信人的邮箱,用于显示--server&&&&SMTP邮箱地址--tlsc&&&&使用TLS连接,默认465端口,可以通过--port参数指定其它端口--au&&&&用户名--ap&&&&密码--body&&&&发送邮件的内容--header&&&&邮件头,依然在正文中-d&&&&-d参数比较复杂,默认是"Date: %DATE%\nTo: %TO_ADDRESS%\nFrom: %FROM_ADDRESS%\nSubject: test %DATE%\nX-Mailer: swaks v$p_version jetmore.org/john/code/swaks/\n%NEW_HEADERS%\n%BODY%\n"这个值是几个键值对以\n的形式连接起来的,里面的参数都是字面意思,主要要用到的是Subject(主题)这个参数,要是不指定这个发送邮件的主题就是“test日期”。
配置Jenkins发送邮件
点击“增加构建步骤”=&Excute Shell,即可。完整的实例如下:
CE=$(git&log&-1&--pretty=format:"%ce")&#获取收件人的邮箱地址
CN=$(git&log&-1&--pretty=format:"%cn")&#收件人的姓名
SUBJECT="SonarQube&Analysis&Result&Of&Your&Branch&'$BRANCH_NAME'&on&Project&Test"
JENKINS_CLI=/opt/jenkins-cli.jar
USERNAME=jenkins
PASSWORD=admin
BODY=`java&-jar&$JENKINS_CLI&-s&$JENKINS_URL&console&${JOB_NAME}&$BUILD_ID&--username&$USERNAME&--password&$PASSWORD`
HEADER="hello,dear&$CN"
swaks&--to&$CE&--from&&--server&&--tlsc&-au&&-ap&[yourpassword]&--d&"Date:&%DATE%\nTo:&%TO_ADDRESS%\nFrom:&%FROM_ADDRESS%\nSubject:&$SUBJECT\nX-Mailer:&swaks&v$p_version&jetmore.org/john/code/swaks/\n%NEW_HEADERS%\n%BODY%\n"&--body&"$BODY"&--header&"$HEADER"
支付宝支付
微信扫码支付
打赏金额: ¥
已支付成功
打赏金额: ¥配置Sonar、Jenkins进行持续审查_Linux教程_Linux公社-Linux系统门户网站
你好,游客
配置Sonar、Jenkins进行持续审查
来源:Linux社区&
作者:gao241
本文以操作系统为例介绍Sonar的安装配置,以及如何与Jenkins进行集成,通过pmd-cpd、checkstyle、findbugs等工具对代码进行持续审查。
一、安装配置sonar
1、Sonar介绍
Sonar是一个用于代码质量管理的开源平台,用于管理Java源代码的质量。通过插件机制,Sonar&可以集成不同的测试工具,代码分析工具,以及持续集成工具,比如pmd-cpd、checkstyle、findbugs、Jenkins。通过不同的插件对这些结果进行再加工处理,通过量化的方式度量代码质量的变化,从而可以方便地对不同规模和种类的工程进行代码质量管理。
同时&Sonar&还对大量的持续集成工具提供了接口支持,可以很方便地在持续集成中使用&Sonar。
此外,Sonar&的插件还可以对&Java&以外的其他编程语言提供支持,对国际化以及报告文档化也有良好的支持。
2、配置数据库
Apache&Derby&是Sonar自带并且默认安装使用的数据库,此外Sonar对如下数据库提供支持:MySQL&5.x,&&10g&XE,&Postgresql,&MS&SqlServer等,本文以mysql为例介绍如何配置数据库:&
1)创建数据库
在mysql中执行如下脚本创建数据库及mysql用户
CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_
CREATE USER 'sonar' IDENTIFIED BY 'sonar';
GRANT ALL ON sonar.* TO 'sonar'@'%' IDENTIFIED BY 'sonar';
GRANT ALL ON sonar.* TO 'sonar'@'localhost' IDENTIFIED BY 'sonar';
FLUSH PRIVILEGES;
2)编辑${SONAR_HOME}/conf/sonar.properties配置数据库:
sonar.jdbc.username:
sonar.jdbc.password:
sonar.jdbc.url:
jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true
# Optional properties
sonar.jdbc.driverClassName:
com.mysql.jdbc.Driver
3)配置DB驱动包
如果使用Oracle数据库,必须手动复制驱动类到${SONAR_HOME}/extensions/jdbc-driver/oracle/目录下。其它支持的数据库默认提供了驱动,&列举了一些常用的配置及默认值.
4)常见错误及解决方法
添加语言包后,启动报错分析:
下载安装 sonar-l10n-zh-plugin-1.4.jar 语言包(http://docs.codehaus.org/display/SONAR/Chinese+Pack),重新打包部署后,后台报错如下:
Error in Sonar.log :
14:39:15 INFO
Register rules [squid/java]... 14:39:15 ERROR o.s.s.p.Platform The following rule (repository: squid) must have a description: Rule[id=&null&,name=&null&,key=ParsingError,configKey=ParsingError,plugin=squid,enabled=true,severity=MAJOR,cardinality=SINGLE]org.sonar.api.utils.SonarException: The following rule (repository: squid) must have a description: Rule[id=&null&,name=&null&,key=ParsingError,configKey=ParsingError,plugin=squid,enabled=true,severity=MAJOR,cardinality=SINGLE]at org.sonar.server.startup.RegisterRules.validateRule(RegisterRules.java:131) ~[classes/:na]at org.sonar.server.startup.RegisterRules.registerRepository(RegisterRules.java:103) ~[classes/:na]at...
解决方法:将 extensions\plugins\ 目录下的jar包全部删除,重新加入本地语言包后,重新打包部署即可。
3、安装、配置Sonar
Sonar的运行需要&JDK&1.5+&,&从&&下载sonar zip文件,本文以3.6版本为例。
创建运行sonar的CentOS账户sonar,并设置账户密码:
# useradd sonar
# passwd sonar
使用sonar账户登录CentOS。
Sonar默认集成了jetty容器,可以直接启动提供服务,也可以通过脚本构建为war包,部署在tomcat容器中。
1)直接启动
编辑.bash_profile,添加环境变量SONAR_HOME
$ vi $HOME/.bash_profile
修改成如下内容:
PATH=$PATH:$HOME/bin
SONAR_HOME=$HOME/sonar
export PATH SONAR_HOME
使环境变量生效
Source $HOME/.bash_profile
运行如下命令启动sonar,其它操作系统sonar均提供了启动脚本
$ ${SONAR_HOME}/bin/linux-x86-64/sonar.sh start
在浏览器中访问:&http://localhost:9000/ ,运行界面如下:
Sonar默认的端口是&9000&、默认的上下文路径是&/&、默认的网络接口是&0.0.0.0&,默认的管理员帐号和密码为:admin/admin,这些参数都可以在配置文件中修改:
$ vi ${SONAR_HOME}/conf/sonar.properties
2)作为Web项目,部署到Tomcat等应用服务器中
a.&确保conf/sonar.properties、conf/wrapper.conf未被修改使用过
b.&执行如下命令生成war包,将生成的sonar.war部署到应用服务器中
$ ${SONAR_HOME}/war/build-war.sh
c.&启动Tomcat,&通过&http://localhost:8080/sonar&访问.
Tomcat安装配置参见:&
4、配置为自启动服务
使用root账户或者开启sudo权限操作。
创建自启动脚本文件/etc/init.d/sonar
# vi /etc/init.d/sonar
添加如下内容
# rc file for SonarQube
# chkconfig: 345 96 10
# description: SonarQube system (www.sonarsource.org)
### BEGIN INIT INFO
# Provides: sonar
# Required-Start: $network
# Required-Stop: $network
# Default-Start: 3 4 5
# Default-Stop: 0 1 2 6
# Short-Description: SonarQube system (www.sonarsource.org)
# Description: SonarQube system (www.sonarsource.org)
### END INIT INFO
/usr/bin/sonar $*
添加启动服务
# ln -s $SONAR_HOME/bin/linux-x86-64/sonar.sh /usr/bin/sonar
# chmod 755 /etc/init.d/sonar
# chkconfig --add sonar
5、配置插件
a)插件介绍
Sonar支持多种插件,插件的下载地址为:
将下载后的插件上传到${SONAR_HOME}extensions\plugins目录下,重新启动sonar。
sonar默认集成了插件,该插件是一组插件的合集
Java [sonar-java-plugin]:java源代码解析,计算指标等
Squid [sonar-squid-java-plugin]:检查违反Sonar定义规则的代码
Checkstyle [sonar-checkstyle-plugin]:使用CheckStyle检查违反统一代码编写风格的代码
FindBugs [sonar-findbugs-plugin]:使用FindBugs检查违反规则的缺陷代码
PMD [sonar-pmd-plugin]:使用pmd检查违反规则的代码
Surefire [sonar-surefire-plugin]:使用Surefire执行单元测试
Cobertura [sonar-cobertura-plugin]:使用Cobertura获取代码覆盖率
JaCoCo [sonar-jacoco-plugin]:使用JaCOCO获取代码覆盖率
下面列出了一些常用的插件:
JavaScript代码检查:
python代码检查:
Web页面检查(HTML、JSP、JSF、Ruby、PHP等):
xml文件检查:
scm源码库统计分析:
文件度量:
中文语言包:
时间表显示度量结果:
度量结果演进图:
b)插件配置示例(本段内容来自& & )
Sonar 的主要特色是对不同工具产生的检查结果进行再加工处理,Sonar 还向用户提供了对数据进行个性化处理的方法。
本节以 Technical Debt 插件为例说明如何通过设置参数影响最后的报告结果。首先了解一下这个插件中的&技术债务&的概念,这个概念最早是在 1992 年由 Ward Cunningham 在他的论文&The WyCash Portfolio Management System&中提出的,之后被软件工程界接受并推广,《重构》的作者 Martin Fowler 也在其&上对技术债务有所介绍。其实原理可以理解为&出来混早晚要还的&,当前不规范的代码,会对以后产品修改的成本造成影响。
Soanr 的 Technical Debt 插件提供了默认的计算公式,通过对其中的权重参数进行配置,可以适应不同公司和项目对技术债务的计算。
以上的各项数据指标,可以根据自己公司和项目的不同情况进行设置,如图所示:
例如默认参数下同一个项目的技术债务指标如下:
修改了参数后的结果为:
可见将 Average time to cover complexity of one (in hours) 从 0.2 修改为 0.01 后,Coverage 的权重变小了,从而达到忽略单元测试覆盖率的作用。不同的公司和项目可以根据需要调整各自的参数,参数的调优和策略不在本文的讨论范围之内。
通过以上的示例可以看出,Sonar 使用不同类型的图表显示给用户代码质量的结果,并且这些图表不是简单地对单元测试覆盖率或者静态检测工具的结果进行显示,而是根据软件工程理论进行了二次加工后的结果,更加科学和直观。
更多详情见请继续阅读下一页的精彩内容:
相关资讯 & & &
& (10月01日)
& (07月12日)
& (10月04日)
& (08月31日)
& (06月12日)
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款博客分类:
下面列举一下在Jenkins中使用时遇到的一些问题
1、插件安装问题,在网上查找的时候让安装“sonar-maven-plugin”的插件,但是在Jenkins的插件中心中没有找到这个插件,最后发现在插件中心中叫“SonarQube Plugin”
2、安装完成以后,对sonarQube配置问题
sonarQube配置是在“系统管理”里配置的, 然后进入如下界面
3、中文乱码问题
这个问题是非英文开发人员常遇到的问题
jenkins控制台乱码,可以通过修改tomcat下面的server.xml中的配置完成
第二种乱码问题是控制台没有乱码,然后job构建也没有乱码,就是用sonar进行静态代码分析的时候遇到乱码,这个问题折磨了我好长时间。错误如下
错误原因上面也写了,是因为源代码的编码格式是utf-8,但是系统文件的编码格式是GBk
最开始的解决思路是修改系统的编码格式,因为用的是windows系统,所以修改系统的编码格式比较麻烦
那下一种选择就是修改启动tomcat的编码格式,通过-Dfile.encoding=UTF-8来修改,但是这样改出来的时候会让tomcat启动日志变成乱码,所以最后也是放弃
最后选择了第三种方式,是修改sonar.sourceEncoding来解决的。实际上最开始我就应该发现修改这个地方就能解决,因为在错误日志里明明写着呢
这是个教训呀,应该多看日志
下面说一下怎么修改这个编码格式吧
是在单独的job中修改就行,图如下
4、svn不带命令行,造成的错误
因为我这里用的是windows环境,所以默认安装的svn是不安装svn命令行的
错误信息如下
5、svn版本不匹配的错误
我本地的机器装的svn版本是1.8.8的,而jenkins默认的版本是1.7的,所以会造成版本不匹配错误
解决方式是,先升级Jenkins中svn的插件,升级到最高版本,然后在修改“系统设置”中的svn版本,修改成1.8问题就解决了
浏览: 290695 次
来自: 北京
一样的xml代码 报这个错 &ns1:XMLFault
谢谢啊 ~~~
'%${userName}%' 这种是可以的,是可以模糊查询的 ...
我把你的代码不了一遍 但是汇报错首先:static {
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'在 《》 中介绍了不编译只检查的方式。但是有些代码检查需要使用字节码,比如Findbugs的检查依赖于字节码,实例一中只提取源代码,就不能进行Findbugs的检查。要进行Findbugs检查就需要编译。以下实例操作来演示如何搭建1,首先当然是要下载最新的Findbugs & && ,当前最新版是V3.0,&&supports analysis of Java 8 bytecode but requires Java 1.7 to run (see Compatibility section)。 &下载后将相应Jar包存放到&\sonarqube-4.4\extensions\plugins 下,&其中\sonarqube-4.4是SonarQube的安装目录,然后重启SonarQube1b,&也可以在SonarQube的update center中下载,下载后按提示重启SonarQube即可。2,以admin登录到Sonar,将缺省的Quality Profiles改为&3,在Jenkins中配置项目,笔者以Maven3为例,选择&maven2/3项目&4,按Maven项目正常配置,在Goals and options留空,采用缺省5,在Post Steps中加入 Windows Batch command, 命令为:&SonarQube Runner V2.4安装位置\bin\sonar-runner.bat6,配置项目,要告知SonarQube编译结果在哪里,并且加入更新到SVN下,如下:# required metadata
sonar.projectKey=Keqiang:CodeKatabySonarRunner
sonar.projectName=CodeKatabySonarRunner
sonar.projectVersion=2.0.0
# path to source directories (required)
sonar.sources=src/main/java
# path to project binaries (optional), for example directory of Java bytecode
sonar.binaries=target/classes7,在Jenkins中立即构建 此Job8,访问&&来看看SonarQube的结果,可以看到根据Findbugs的规则新发现的issue说明1:&是SonarQube缺省的选择,一共497条规则。SonarQube提供了方便的界面来修改。说明2:SonarQube就发现的Issue设立了总指标Technical Debt,以工作量来表达需要多少时间修复这些issue。小结:以上配置是简单的。说白了,只需交待编译结果在哪里就可以了。以上两个实例,希望读者能够了解搭建SonarQube是多么容易。Jenkins并不是必须的,利用Sonar-Runner完全可以达到相同相关。加入Jenkins支持之后,就能根据Svn操作来自动启动。
本文已收录于以下专栏:
相关文章推荐
作者:张克强    作者微博:张克强-敏捷307
在 《SonarQube4.4+Jenkins进行代码检查实例之一》 中介绍了不编译只检查的方式。在《SonarQube4.4+Jenkins进行代码...
Sonarqube是一个功能非常强大的代码质量检查、管理的工具。能够识别多种常用的编程语言,并能够通过设置不同的Rule
Sonar是一个代码质量管理的开源工具,它通过插件的形式能够识别常见的多...
SonarQube代码质量管理平台搭建手册(集成jenkins进行自动化代码审查)1.安装SonarQube1.1
准备好java环境(本次测试系统为windows,linux环境下可参...
Sonar简介Sonar是一个用于代码质量管理的开源平台, 用于管理源代码质量。通过插件机制,Sonar 可以集成不同的测试工具,代码分析工具,以及持续集成工具,比如pmd-cpd、checkstyl...
1.     预置条件
1.1  JDK版本支持
SonarQube 5.6 (LTS *) – Jun. 3, 2016 Long Term Supported version,requires...
代码检查工具能帮我们检查一些隐藏的bug,代码检查工具中sonar是比较好的一个。官网
Sonar 概述
        Sonar 是一个用于代码质量管理的开放平台。通过插件机制,Son...
代码检查工具能帮我们检查一些隐藏的bug,代码检查工具中sonar是比较好的一个。官网Sonar 概述        Sonar 是一个用于代码质量管理的开放平台。通过插件机制,Sonar 可以集成不...
接着上一次的内容,已经了解了从
Jenkins+Gitlab+Sonar代码检查平台搭建-Sonar
Jenkins+Gitlab+Sonar代码检查平台搭建-Sonar
Jenkins+Gitlab+Sonar代码检查平台搭建-S...
公司其他java和安卓项目都是用Gradle做配置管理,jenkins集成后使用静态代码检查工具没有问题,现在其他项目组使用Maven作为配置管理,对Maven研究了一哈,窃以为还是Gradle的语法...
他的最新文章
讲师:汪剑
讲师:刘道宽
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)  Jenkins可以通过插件的形式和Sonar很好的集成。
  (1)Jenkin安装Sonar插件(这里我估计安装的插件有点多)
    注意:之前安装Jenkins的时候我用的是JDK系统环境环境变量jdk1.7,在安装sonar插件的时候会出现JDK版本过低的信息。所以我们还需要设置Jenkins所在Tomcat的JDK为1.8,修改方法见
  (2)配置SonarQube
    在系统管理》系统设置中设置SonarQube Service
    注:虽然我安装的是sonar5.3,但是这里的Service version如果选5.3,就不能通过用户名和密码进行验证了,为了方便我选择了5.1,只需要设置用户名和密码就可以验证了。
  (3)配置Sonar-Scanner
    在系统管理》Global Tool configuration中设置Sonar-Scanner
    这里需要注意下我这里直接使用了SONAR_RUNNER_HOME,指向Sonar-scanner的目录即可。
  (4)项目配置Sonar
    在项目设置中,我选择在构建前进行代码检测。选择Pre Steps&Add pre-build step&Execute SonarQube Scanner,设置信息如下
  (5)代码审查
    保存上面的配置,点击立即构建。观察输入的日志信息。如果没有问题,那么在http://sonarQube的IP:9000/sonar我们就能看到代码审查的结果了。
阅读(...) 评论()}

我要回帖

更多关于 jenkins配置sonarqube 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信