SonarQube

来自Bug Killer
跳转至: 导航搜索

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>

推荐插件

插接其他工具

Web API 介绍及使用