静态代码扫描平台SonarQube简介

静态代码扫描这个词对很多人来说并不陌生,从字面上理解就是检查项目的源码,从源码中找出代码存在的缺陷:潜在的bug,未使用的代码,复杂的表达式,重复的代码等。
把静态代码扫描引入到自动化测试工作中,需要感谢公司楼上一个同行哥们。在工具的选择上也纠结了一段时间,公司的产品有PC端,Web端和移动端,也就意味着需要扫描的源码有多种语言,C,C++,c#,Java,Object C,就需要有一个平台可以同时支持多种开发语言的代码扫描,SonarQube就很好的解决了这个问题,再次感谢那位哥们。

刚了解SonarQube,以下仅仅是自己在使用中的个人学习心得,如有不对的地方,还劳烦指正,万分感谢。

  • Sonar的工作原理
    Sonar实际上是一个Web系统,展现了静态代码扫描的结果,结果是可以自定义的,而真正实现代码扫描的是Sonar Scanner这个工具,另外同时支持多种语言的原理是它的扩展性,通过插件实现的,也就是Java Jar架包,可以在Sonar平台上在线安装或者离线安装。

  • 下载并安装Sonar、SonarScanner
    下载地址:
    http://www.sonarqube.org/downloads/
    下载后解压即可

修改sonar.properties(Sonar默认的DB是自带的H2数据库,是很小的嵌入式数据库引擎,这里的配置我换成了MySQL,为了方便检查数据的正确性)
sonar.jdbc.username=sonar
sonar.jdbc.password=sonar
sonar.jdbc.url=jdbc:mysql://127.0.0.1:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance

运行 D:\sonarqube-5.3\bin\windows-x86-64\StartSonar.bat
这里写图片描述
出现以上信息则表示启动成功,若提示内存 溢出的异常,修改wrapper.conf
wrapper.java.initmemory=64
wrapper.java.maxmemory=128

安装Sonar服务,跟随系统启动
D:\sonarqube-5.3\bin\windows-x86-64\InstallNTService.bat
这里写图片描述
启动服务需要配置登录账号密码,即操作系统的登录账号和密码(这里没有配置的话,服务是无法正常启动的)
这里写图片描述
这里写图片描述

用以下SQL语句创建sonar专用的DB以及用户(请逐行执行)
CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;
GRANT all ON sonar.* TO sonar@localhost IDENTIFIED BY ‘sonar’;
FLUSH PRIVILEGES
这里写图片描述
这里写图片描述
这里写图片描述
注意:当Sonar的DB服务器从默认的h2迁移到MySQL的时候,需用做数据迁移,在http://127.0.0.1:9000/setup中操作。

  • Jenkins下面配置Sonar
    Jenkins下面安装Sonar插件
    这里写图片描述
    配置Sonar server URL(指向内网IP,Jenkins构建结果所指向的IP,默认localhost是无法从其他机器上直接访问的)
    这里写图片描述
    Jenkins下面配置Sonar和SonarRunner
    这里写图片描述
    这里写图片描述
    Sonar默认的管理员账号和密码都是admin

jenkins中配置需要做静态扫描的项目
这里写图片描述
若项目是用maven管理的,可以在构建后操作中加入SonarQube
这里写图片描述
若不是maven管理的,不能这样调用,在Add post-build step中加入Invoke Standalone SonarQube Analysis
这里写图片描述
Jenkins中启动项目构建,构建结果如下:
这里写图片描述
分析结果可以点击上面的链接查看,即跳转到Sonar平台。

注意,若源码是通过SVN或者其它的工具管理的,通过Jenkins的SVN插件下载即可,需要从Sonar平台中删除SVN的插件,不然会出错。原因还没有找到,先暂时这样处理。
配置 - 系统 - 更新 - 找到SVN插件并卸载。

MySQL中也会创建数据
这里写图片描述

打开Sonar平台
这里写图片描述

在Sonar的properties文件中也是可以修改IP地址和端口号的
sonar.web.host=192.168.101.76
sonar.web.port=8081

下面是整个生产环境的配置截图,后期有做修改
这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这就是从搭建环境到执行扫描的整个过程,当然,分析结果的话需要有开发经验,可以让开发童鞋帮忙分析,我这里默认的扫描规则是SonarQube Way,可以根据具体情况增删规则,也可以下载其它规则的插件,如:FindBugs,Checkstyle等,也可以自己开发新的规则插件,所以可扩展性还是蛮强的。由于我这边还是初步阶段,还没有涉及到这方面的研究,以后会引入。

  • 8
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值