Sonar

持续集成平台搭建:Jenkins,SonarQube

对着背影说爱祢 提交于 2020-08-10 11:57:50
首先介绍一下技术: 持续集成工具:Jenkins 代码托管:svn或者Git 构建工具:Maven或者Gradle 审查工具:SonarQube 发布容器:Tomcat或者Docker 其次是系统配置信息以及一些额外要求: (1)OS内核需要高于linux5.3, (2)推荐运行内存为8G左右,至少需要大于4G (3)需要分配额外的用户和用户组来运行代码审查工具 (4)若需持久化代码审查记录,需要提供一个数据库(mysql,H2,postgresql等),数据库的安装过程在此跳过 (一)下载配置Jenkins Jenkins的安装方式有许多种,本文主要以war包方式启动,其他方式请参考https://jenkins.io/download/ 将下载好的war包直接放入tomcat的webapp目录下,启动tomcat即可,tomcat的安装方法不再详述 此时查看tomcat的catalina日志,注意留意Jenkins的初始密码会在此输出。 启动完成后访问网址http://localhost:8080/jenkins,这时会进行初始化jenkins的一些配置,建议选择自动安装系统推荐的插件包。 创建用户时,需要提供jenkins的初始密码,在tomcat的启动日志中可以找到。 最后配置完成后,你应该能看到这个画面 (二)SonarQube的下载和安装 (1

Sonarqube使用简介---SonarSource总览

白昼怎懂夜的黑 提交于 2020-08-10 06:42:05
Sonarqube使用简介(1) 提要: SonarSource总览 扫描规则示例 SonarQube简介 SonarLint简介 1.SonarSource总览 SonarSource为代码质量提供了世界一流的解决方案。其开源和商业版本可帮助各种规模的客户管理其应用程序的代码质量,降低风险并最终交付更可靠的软件。 SonarSource提供SonarQube代码管理平台和SonarLint IDE开发插件。SonarQube在持续集成项目中,可以通过jenkins插件在项目中快速实现代码扫描,并且提供了详细的问题分析和bugs修改意见。 全球超过1000多家客户,包括三星、腾讯、招商银行等,并被超过85,000家组织使用。 SonarSource解决方案通过插件形式支持20多种编程语言(如Java,C#,JavaScript,C/C++,TypeScript,COBOL等)开发的代码。 以SonarJava插件为例SonarSource支持498种规则,bugs、vulnerablility、code smell三大类问题,包括Android、api-design、bad-practive等代码质量问题;兼容Cert、CWE和OWASP等安全性代码规约;及代码编写规约。 2.SonarSource持续集成能力 1. 用户本地使用IDE的插件进行代码分析 2.

sonarqube+sonar_scanner+jenkins执行代码检查

社会主义新天地 提交于 2020-08-06 06:30:05
一、简介 1、SonarQube 介绍 SonarQube 是一个开源的代码质量分析平台,便于管理代码的质量,可检查出项目代码的漏洞和潜在的逻辑问题。同时,它提供了丰富的插件,支持多种语言的检测,如 Java、Python、Groovy、C、C++等几十种编程语言的检测。它主要的核心价值体现在如下几个方面: (1)检查代码是否遵循编程标准:如命名规范,编写的规范等。 (2)检查设计存在的潜在缺陷:SonarQube 通过插件 Findbugs、Checkstyle 等工具检测代码存在的缺陷。 (3)检测代码的重复代码量:SonarQube 可以展示项目中存在大量复制粘贴的代码。 (4)检测代码中注释的程度:源码注释过多或者太少都不好,影响程序的可读可理解性。 (5)检测代码中包、类之间的关系:分析类之间的关系是否合理,复杂度情况。 2、SonarQube 平台是由 4 个部分组成 ① SonarQube Server ② SonarQube Database ③ SonarQube Plugins ④ SonarQube Scanner 3、SonarQube 工作流程 SonarQube 在进行代码质量管理时,会从下图 所示的七个纬度来分析项目的质量。 SonarQube 需要数据库的支持,用于存储检测项目后的分析数据,同时为了实现可持续监测,还需要持续集成工具(如Jenkins

jenkins配合sonaqube7.8实现代码质量检测

人走茶凉 提交于 2020-08-06 01:03:27
部署sonaqube7.8(高版本不在支持mysql数据库) [root@server4 data]# wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-7.8.zip [root@server4 data]# wget https://github.com/SonarQubeCommunity/sonar-l10n-zh/releases/download/sonar-l10n-zh-plugin-1.28/sonar-l10n-zh-plugin-1.28.jar sonaqube周边下载: https://binaries.sonarsource.com/Distribution/ [root@server4 data]# groupadd -g 1002 hanye [root@server4 data]# useradd -g 1002 -u 1002 -m -d /home/hanye hanye #创建单独用户用来启动sonaqube(里面的eS无法root启动) [root@server4 ~]# mv sonarqube-7.8.zip /home/hanye/ [root@server4 ~]# chown -R hanye:hanye /home/hanye/

《重构-代码整洁之道TypeScript版》第3天

自闭症网瘾萝莉.ら 提交于 2020-08-04 09:33:02
今天让我们来继续第3天,老规矩先来回顾一下昨天我们都实现了哪些: Change Reference to Value(将引用对象改为值对象) Change Value to Reference(将值对象改为引用对象) Collapse Hierarchy(折叠继承体系) (图片:博格达峰) 什么是重构 ? 简单理解就是不改变软件可观察行为的前提下,改善其内部结构,以提高理解性和降低修改成本。 1. 这是如下我们要实现的目标任务列表(每天进步一点点⏰) [x] Consolidate Conditional Expression(合并条件表达式) [x] Consolidate Duplicate Conditional Fragments(合并重复的条件片段) [x] Convert Procedural Design to Objects(将过程化设计转化为对象设计) [ ] Decompose Conditional(分解条件表达式) [ ] Duplicate Observed Data(复制“被监视数据”) [ ] Encapsulate Collection(封装集合) [ ] Encapsulate Downcast(封装向下转型) [ ] Encapsulate Field(封装字段) [ ] Extract Class(提炼类) [ ] Extract

jacoco测试覆盖率过滤非业务类

試著忘記壹切 提交于 2020-07-28 19:03:39
之前在做 接口测试代码覆盖率(jacoco)方案 的时候,漏了一些东西,这篇文章补一下。做使用 jacoco 做接口代码覆盖率测试的过程中,遇到一个问题:测试报告里面信息太多,很杂乱没有针对性,很多都是 config 和 bean 以及适配器的类,绝大部分没有业务代码,统计出来的覆盖率受影响比较大,不够准确。 这里就引入了如何过滤 jacoco 代码覆盖率测试报告的问题,经过查阅资料,大概的方案分两种:一是在 jacoco 配置中过滤,二是在 class 文件夹中删除掉无用的 class 文件。 经过一些考量,决定采用第一种方案,原因如下: 第二种方案不可逆,如果在统计完某一个 moudel 的覆盖率,之后在统计其他 moudel 的时候就无法直接实现; 第二种处理起来比较麻烦,规则需要脚本实现。 与现有框架不好结合,没办法在报告的框架中方便快捷实现这个功能。 第一种方案主要修改 build 文件的配置: <?xml version="1.0" ?> <project name="studentpad-middle-toc" basedir="/home/jmsmanager/report/studentpad-middle-toc" xmlns:jacoco="antlib:org.jacoco.ant" xmlns:sonar="antlib:org.sonar.ant"

阿里巴巴自研代码管理平台技术解密

允我心安 提交于 2020-07-27 09:06:15
【以下为分享实录,有删节】 阿里巴巴为什么要自研代码管理平台 也许你会问:为什么阿里巴巴要重新做一套代码管理平台,继续用GitLab版本不是挺好的吗?接下来从我个人的角度在这里尝试进行解答。 由于历史原因,在阿里巴巴集团内部代码平台是整个DevOps领域中起步相对较晚的一块业务域,相比于发布域、测试域有着多年的积累和沉淀来讲,2017年时的代码平台可以说是为了满足整体业务需求由几个系统强行拼凑起来的。 为了支撑起阿里巴巴整体的业务发展,研发团队要同时维护6个系统,分别是负责代码托管的GitLab、Svn、Gerrit,以及负责上层代码服务的Phabricator、CodeCenter、ScmCenter。且其中除了CodeCenter、ScmCenter之外,其它四个均是在开源系统之上二次封装改造而来的。其中Gitlab技术栈是基于Ruby,Phabricator基于PHP,SVN基于C,Gerrit基于Java,这给我们日常的开发和维护工作增加了很多负担。 当时代码平台遇到的困难和挑战主要有四个方面: 一、技术架构方面:多套系统架构,多种开发语言,不仅维护成本高,且与阿里集团的主流技术脱节,研发团队同学每天疲于填坑,然而整体上却得不到大的改善。 二、平台发展方面:单纯的Gitlab、Svn、Gerrit均无法与周边关联系统做到有效协同

初步了解Windows7下部署Sonar

↘锁芯ラ 提交于 2020-07-27 05:27:56
1、准备工具: (1)Sonar 8.3版本。 (2)PostgresSql 11版本。 (3)Java 11。 详细获取地址可参考文章 https://www.pianshen.com/article/84091389451/ 本人也是从这位大哥手中获取。 然后一些初步都安装过程也讲得很明了了。但还缺少一些坑点没点出来。 2、当一切准备就绪后双击StartSonar.bat运行都时候,会发现一个问题 会有连不上都可能性。我不知道大多数网友会不会遇到,但我是遇到了。 根据字面很明显就是服务没开起来。 然后我打开服务看了下发现我安装完postgresql后居然没有服务在里面。 最后在百度里不知道哪位老哥那看到了去postgresql的bin文件夹里用命令行去执行一些命令。后续我来到了这个主目录,打开命令窗口输入了pg_ctl --help 后发现里面有一个register,那么这就很明显了根据上面都来,我成功注册了一个服务到Win7上,但随之而来有一个问题出现了,就是这个服务是处于关闭都状态,根据前面都报错。这服务是得启动起来才算是正常,而后我就右击启动,没想到又出来了个问题 就是服务启动不起来。真的是总感觉要柳暗花明了,到最后又是万重山。 经过多方探查。导致这个原因都问题就是postgresql这个居然需要初始化一下。偶买噶,当时我都傻眼了。 在官方文档都帮助下

1-5年工作经验的Java程序员,薪资普遍是在10-25K?

ⅰ亾dé卋堺 提交于 2020-05-08 17:44:10
由于疫情带来的连锁反应,今年的竞争相较往年会更加激烈。最近跟朋友在一起聚会的时候,提了一个问题,说Java程序员要实现月薪38K,技术水平需要达到什么程度?有人回答说这只能是大企业或者互联网企业工程师才能拿到。也许是的,小公司或者非互联网企业拿38K的不太可能是码农了,应该已经转管理。还有区域问题,这个是不在我的考虑范围内 因为除了北上广深杭,其他地方也很难达到。 首先:38K对应的层级分别是什么? 38K的月薪在BAT等一线大厂实在太普遍了,一般是高级工程师和资深工程师的职位,在阿里是p6~p7左右,在百度是t5左右,腾讯是t2-3左右,在京东是t3-1,美团是p6左右,其他的我不了解。 其次:该如何达到对应的层级? 38K的薪资虽然说不是很高,但是对于大部分的程序员来说,也可以当作一个“小目标”了,今天我就在这里就给大家分享一个能够让你进阶到这些层级的技术路线图,并且还有配套的学习资料,让你不仅能定下38K的小目标,还能有实现这个小目标的具体途径和方法。(技术脑图可以保存,配套技术资料在文末获取) 一:底层源码分析 学习Java技术体系,设计模式,流行的框架与组件 常见的设计模式,编码必备 Spring5,做应用必不可少的最新框架 MyBatis,玩数据库必不可少的组件 二:工程化与工具 工欲善其事必先利其器,不管是小白,还是资深开发,玩Java技术体系,选择好的工具

浅谈自动化测试实践经验和教训

隐身守侯 提交于 2020-05-08 16:28:55
做自动化有好一段时间了,经历了自动化从无到有,然后到框架,到现在的平台,以及持续集成,回顾发现由于自己之前经验太浅,走过的弯路太多,现在也还在谨慎的前进着,之前发现早前很多懵懂的经验,现在稍稍清晰,于是想着结合自己的历程精简出一些经验吧。现在经验还是尚浅,如果有更深认识的朋友,互相讨论,谢谢。 一、所谓自动化是为了软件发布服务的,并不只是为了测试服务   以前一直怀疑自动化测试的用处,我们之前花费大力气开发了大量的基于关键字方式的脚本,用来提高测试的覆盖率,每次测试耗费大量时间,但是发现的问题少之又少,虽然说,自动化测试不是用来发现问题的,是用来验证软件没有问题,但是有一个矛盾在于我如果不做自动化测试,问题还是那么少,那么做自动化测试我们难道只是为了追求一个心理感受吗?这个概率问题怎么平衡 后来,这个经验是在与开发一起合作冒烟测试建设,到现在的持续集成建设,开始明白,自动化测试的好处是为了增强开发的灵活性和保证软件开发流程的有序性 1)快速检测新版本的不稳定变更,即冒烟测试,能够快速验证当前build版本是否可以继续下一步或者提测,此处冒烟测试可以是单元测试、集成测试和基本功能覆盖测试,常用的框架和工具:Junit、TestNG和接口测试框架(soapui、httpClient等)、界面测试框架用于基本的界面测试(QTP、RFT、selenium)。 2)尽可能的暴露回归程序的错误