Sonar

DevOps之Pipeline集成junit、jacoco、SonarQube(二)

廉价感情. 提交于 2021-02-11 22:01:38
一、准备工作 1、准备一个持续集成的代码工程 工程下载地址: Github地址为:https: // github.com/zbbkeepgoing/springboot-demo 2、springboot-demo代码工程介绍 整个Web工程有一个Index页面,上面有两个按钮,分别对应两个接口,其中一个接口直接返回信息,另外一个接口则是内存中请求一次延时1s,最大延时为10s。而对应Index会有一个接口,所以Web工程一共有3个接口。延时接口主要是为了后续性能测试 ① 工程结构 └── src ├── main │ ├── java │ │ └── com │ │ └── dxc │ │ └── ddccloud │ │ └── demo │ │ ├── controller │ │ │ └── DemoController.java #控制器,接口定义类 │ │ └── DemoApplication.java #启动类 │ └── resources │ ├── application.properties #配置文件 │ └── templates │ └── index.html #首页Index └── test └── java └── com └── dxc └── ddccloud └── demo └── DemoControllerTests.java

那些总是写“烂代码”的同学,强烈推荐你用这款IDEA插件!

混江龙づ霸主 提交于 2021-02-11 20:46:01
感谢关注 趣学程序 !公众号内部回复 666 获取 热门教程 作者:WhyWin 来源:r6d.cn/ReaU 1、目标 idea集成sonar的代码检查,实现可以在提交代码前就检查你的代码,而不是将代码提交之后,之后再去检查。 Sonar可以从以下七个维度检测代码质量,而作为开发人员至少需要处理前5种代码质量问题 不遵循代码标准 sonar可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具规范代码编写 潜在的缺陷 sonar可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具检测出潜在的缺陷 糟糕的复杂度分布 文件、类、方法等,如果复杂度过高将难以改变,这会使得开发人员难以理解它们 且如果没有自动化的单元测试,对于程序中的任何组件的改变都将可能导致需要全面的回归测试 重复 显然程序中包含大量复制粘贴的代码是质量低下的,sonar可以展示源码中重复严重的地方 注释不足或者过多 没有注释将使代码可读性变差,特别是当不可避免地出现人员变动时,程序的可读性将大幅下降 而过多的注释又会使得开发人员将精力过多地花费在阅读注释上,亦违背初衷 缺乏单元测试 sonar可以很方便地统计并展示单元测试覆盖率 糟糕的设计 通过sonar可以找出循环,展示包与包、类与类之间相互依赖关系,可以检测自定义的架构规则 通过sonar可以管理第三方的jar包

代码审计工具

早过忘川 提交于 2021-02-03 01:58:05
使用checkmarx分别对java、php、android程序源代码进行安全扫描,结合日常工作中使用的商业安全工具,比对结果如下: 在互联网企业中,有使用find bugs。 也有些企业使用Sonar. Sonar是一个用于代码质量管理的开源平台,用于管理Java源代码的质量。通过插件机制,Sonar 可以集成不同的测试工具,代码分析工具,以及持续集成工具,比如pmd-cpd、checkstyle、findbugs、Jenkins。通过不同的插件对这些结果进行再加工处理,通过量化的方式度量代码质量的变化,从而可以方便地对不同规模和种类的工程进行代码质量管理。 同时 Sonar 还对大量的持续集成工具提供了接口支持,可以很方便地在持续集成中使用 Sonar。 此外,Sonar 的插件还可以对 Java 以外的其他编程语言提供支持,对国际化以及报告文档化也有良好的支持。 不同企业根据自己系统/平台的框架来选型。 来源: oschina 链接: https://my.oschina.net/u/2315260/blog/3022480

sonarqube-jenkins-config

梦想的初衷 提交于 2021-01-19 06:36:49
Sonar Config .Jenkinsfile config stage('SonarQube analysis') { steps { script { scannerHome = tool 'SonarScanner4'; } withSonarQubeEnv('SonarQube') { sh "${scannerHome}/bin/sonar-scanner" } } } sonar-project.properties sonar.projectBaseDir=test-app // app dir sonar.projectName=test-app sonar.projectKey=test-app sonar.projectVersion=1.0 sonar.sourceEncoding=UTF-8 sonar.language=js sonar.sources=src sonar.tests=test sonar.exclusions=test/**,node_modules/**,build/**,**/less/**,**/config/**,**/config.js,**/imgs/** // files not to test sonar.test.inclusions=test/shared/*.js,test/components/**/*.js

Jenkins整合SonarQube

£可爱£侵袭症+ 提交于 2021-01-19 02:45:28
一、概述 安装SonarQube,参考链接: https://www.cnblogs.com/xiao987334176/p/12011623.html 安装SonarQube Scanner,参考链接: https://www.cnblogs.com/xiao987334176/p/12022294.html 二、安装插件 在可选插件中搜索 SonarQube 并安装它 三、插件配置 创建sonarqube token 登录到sonarqube服务器,http://192.168.31.7:9000 点击右侧账号图标-->我的账号-->安全 输入 jenkins ,点击生成。 注意:这个输入框的字符串,可以随意。这里表示给jenkins使用的!切记要保存好! 创建jenkins token 点击 jenkins -->凭据 --> 系统 --> 全局凭据--> 添加凭据 输入在sonarqube中生成的token 配置 SonarQube Server 进入 Jenkins 系统管理 – 系统设置,配置 SonarQube Server 信息 由于 SonarQube 在本机运行,直接就是 http://localhost:9000 进入 Jenkins 系统管理 - Global Tool Configuration,配置 SonarQube Scanner 输入安装路径 四

SonarQube Scanner for Jenkins plugin waitForQualityGate pending 超时

谁说我不能喝 提交于 2021-01-18 22:49:17
一、背景 关于SonarQube Scanner for Jenkins plugin waitForQualityGate,网上流传的文章,正确使用方法几乎没有,导致我也走了一些弯路。 比如这篇文章( https://www.cnblogs.com/faberbeta/p/jenkins001.html )介绍的方法简直就是胡说八道。 如果真照文章所说的,需要sleep几秒再获取结果,那么该插件的实现机制未免太过愚蠢,甚至可以说是愚不可及。 二、官方说明 工欲善其事,必先利其器。 迅哥名篇《狂人日记》里的狂人在日记里写道:“晚上总是睡不着,凡事须得研究,才会明白。” 技术当然也不例外,我们想要使用好某个东西,必然要对其做一个深入地了解,不能想当然。所谓片面看待问题,开口动手便错。 首先,我们打开jenkins的官方文档( https://www.jenkins.io/doc/pipeline/steps/sonar/#waitforqualitygate-wait-for-sonarqube-analysis-to-be-completed-and-return-quality-gate-status ),里面明明白白地告诉我们: Requirements: SonarQube server 6.2+ Configure a webhook in your SonarQube

Java日志规约

谁说我不能喝 提交于 2021-01-08 18:22:07
Rule 1. 【强制】应用中不可直接使用日志库(Log4j、Logback)中的API,而应使用日志框架SLF4J中的API 使用门面模式的日志框架,有利于维护各个类的日志处理方式统一。 import org.slf4j.Logger; import org.slf4j.LoggerFactory; private static Logger logger = LoggerFactory.getLogger(Foo.class); Rule 2. 【推荐】对不确定会否输出的日志,采用占位符或条件判断 //WRONG logger.debug("Processing trade with id: " + id + " symbol: " + symbol); 如果日志级别是info,上述日志不会打印,但是会执行1)字符串拼接操作,2)如果symbol是对象,还会执行toString()方法,浪费了系统资源,最终日志却没有打印。 //RIGHT logger.debug("Processing trade with id: {} symbol : {} ", id, symbol); 但如果symbol.getMessage()本身是个消耗较大的动作,占位符在此时并没有帮助,须要改为条件判断方式来完全避免它的执行。 //WRONG logger.debug("Processing

基于 Gitee + Jenkins 的开源项目自动化协作实战

半腔热情 提交于 2020-12-07 00:53:59
摘要:在开源理念日渐活跃的今天,越来越多的人开始投身于开源,贡献了越来越多的开源项目。而随着时间的推移,更多的人开始为开源项目添砖加瓦,为某一领域的开源项目贡献出自己的力量。贡献者的增多又给开源作者带来不少审核的压力,实际上投身开源的这些开源作者基本都是业余时间来做,并没有太多的时间投入在开源项目上。本文就为了解决这类场景,介绍下如何在 Gitee 上通过 Jenkins 来为自己的开源项目开启自动化协作,旨在将一些开源相关的工作自动化,留出更多的时间投身开源事业。 Gitee & Jenkins 简介 码云 Gitee 是开源中国(OSChina.net)于 2013 年推出的基于 Git 的代码托管和协作开发平台,提供代码托管服务,与开源中国社区资讯、博客、社区等版块相互补充和促进,希望以此更好地为开发者服务、构建更加完善的开源生态。经过超过七年的砥砺发展,已成为国内最大的代码托管平台。 Jenkins 是一款开源 CI&CD 软件,用于自动化各种任务,包括构建、测试和部署软件,支持各种运行方式,可通过系统包、Docker 或者通过一个独立的 Java 程序运行。 开源项目协作流程 协作方式 为开源项目贡献代码一般都是使用 PullRequest(MergeRequest)方式,这种方式一般要求用户先将开源仓库 Fork 到自己名下,然后基于自己名下的仓库进行修改提交,最终以

maven多模块工程jacoco、sonar单元测试覆盖率及集成测试覆盖率

拟墨画扇 提交于 2020-12-04 13:35:37
一、针对Sonarqube 8.x版本 官方有例子,链接如下 https://github.com/SonarSource/sonar-scanning-examples/tree/master/sonarqube-scanner-maven/maven-multimodule 该版本已经要求尽量用xml格式的jacoco report,exec格式的仅支持Java了,见下 https://docs.sonarqube.org/latest/analysis/coverage/ 上面的例子上报的8.x版本的sonarqube时,覆盖率是算上了tests模块的测试代码;但是当上报到6.x版本时 sonar.coverage.jacoco.xmlReportsPaths是不行的,还是会用jacoco.exec,此时测试覆盖率没有算上tests模块的代码。 二、针对sonarqube6.x版本,可以把所有模块的jacoco.exec追加到一个jacoco.exec里面,这样就可以实现上面的效果 参考 https://blog.csdn.net/qq_16414307/article/details/99573390 一般单一模块的工程,单元测试代码和被测试代码是在一起的,通过简单配置利用jaccoco即可输出测试结果到sonar中。 但是很多场景

Java程序员涨薪必备技能

廉价感情. 提交于 2020-11-08 10:14:02
Java程序员涨薪必备技能 Java程序员涨薪必备技能 工作1-3年,当我们向老板提出加薪的时候,或者跳槽去“捡”offer的时候,我们底气够吗? 敢不敢不给涨薪就“挥一挥衣袖,不带走一个bug”?是不是提出要求后你的主管、经理立刻同意,为了把你留住。 然而,现实往往是... 互联网公司面试道路又长且阻,技术面少的两轮,多的五六轮 技术不过硬,其他的都免谈。 如何才能持续成长呢?是每一个程序员都绕不开的话题。 你有没有发现,身边总有人成长的特别快,总是先人一步? 当你正在困惑与技能方向的选择时,他已经掌握了高效率的进阶方法;当你还在苦恼于Bug的调试与修复时,他已经度档一面,处理更为复杂的项目了;当你还在思考自己的技术人生,寻求突破和上升,他已经成为骨干,拿高薪带小团队了。 问题来了,他是怎么做到的? 向大家推荐——程序员进阶小攻略 一、互联网工程与工具 工欲善其事必先利其器,不管是小白,还是资深开发,玩Java技术体系,选择好的工具,提升开发效率和团队协作效率,是必不可少的: Maven ,项目管理 Jenkins ,持续集成 Sonar ,代码质量管理 Git ,版本管理 二:源码分析 学习Java技术体系,流行的框架与组件是必不可少的: Spring5 ,做应用必不可少的最新框架 SpringMVC ,必不可少的应用框架 MyBatis ,玩数据库必不可少的组件 三:并发编程