SonarQube
SonarQube是一个关注代码安全的开源项目,该项目能够与代码的开发过程进行持续集成,目前支持20多种语言的检测,并且通过插件能够插接多种开源检测工具和商业的检测工具。现在已经在业界得到了广泛的应用。
目录
News
- 2018年12月20日,SonarQube发布新版本7.5,新版本的主要改进包括:
- 增加新语言支持:增加了对Scala和Apex的支持,目前所有版本已经支持25种语言。
- 更加细化的安全报告:安全设置更加方便,不需要通过层层菜单和界面完成。当新规则出来的时候,你可以确定是否相关。
- 增加了对较短分支和pull请求的重复代码检测。
- Java、PHP和C#等增加了新的规则。
- 2018年10月29日SonarQube发布新版本7.4,新版本的主要改进包括:
- 支持Ruby代码的分析
- 增加了对.NET的支持
- 在7.3版本中,引入了对Java和PHP的安全热点检测,7.4版本中扩展到了Swift,T-SQL,VB.NET和C#
- 增加了在Pull代码时的分析工作
- 多个语言检测能力的持续增强
安装使用
使用Jenkins和SonarQube检测PHP代码
- 在SonarQube中安装PHP扫描器:可以使用SonarQube官方提供的SonarPHP,也可以使用我们设计实现的各种PHP检测器BugKiller。
- 在Jenkins中进行设置
- Jenkins创建一个任务,命名并选择“自由风格的软件项目”;
- 源码选择相应的来源,如果是SVN,则需要填入URL,用户名和密码,其他默认;
- 在构建中,task to run设置为“scan”,并将项目属性设置为如下的代码
sonar.projectKey=demo
sonar.projectName=demo
sonar.projectVersion=1.0
sonar.sources=.
sonar.language=php
sonar.sourceEncoding=UTF-8
打开SonarQube的API的CORS
- 使能SonarQube的CORS,进行跨域访问,在SonarQube的Web.xml中进行如下配置
<filter> <filter-name>CorsFilter</filter-name> <filter-class>org.apache.catalina.filters.CorsFilter</filter-class> <init-param> <param-name>cors.allowed.origins</param-name> <param-value>*</param-value> </init-param> <init-param> <param-name>cors.allowed.methods</param-name> <param-value>GET,POST,PUT,DELETE,HEAD,OPTIONS</param-value> </init-param> <init-param> <param-name>cors.allowed.headers</param-name> <param-value>Content-Type,X-Requested-With,Accept,Authorization,Origin,Access-Control-Request-Method,Access-Control-Request-Headers</param-value> </init-param> <init-param> <param-name>cors.exposed.headers</param-name> <param-value>Access-Control-Allow-Origin,Access-Control-Allow-Credentials</param-value> </init-param> </filter> <filter-mapping> <filter-name>CorsFilter</filter-name> <url-pattern> /* </url-pattern> </filter-mapping>