静态代码扫描平台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等,也可以自己开发新的规则插件,所以可扩展性还是蛮强的。由于我这边还是初步阶段,还没有涉及到这方面的研究,以后会引入。

Posted in 介绍及安装说明.