1.代码审计

1.1综合性的代码分析平台

  • sonar支持自定义规则,较多的公司使用
  • 360火线

1.2IDE辅助功能

  • Xcode、Android studio
  • 阿里巴巴Java开发手机ide插件支持

1.3独立的静态解析工具

  • findbugs Java
  • pmd 阿里巴巴Java开发手册pmd插件
  • androidlint

    通过分析语法树和源代码分析代码规范
  • scan-build objectC

1.3.1静态分析技术分类

类别 示例 原理
代码检查 lint系列 通过分析语法树和源代码分析代码规范
字节码检查 findbugs为代表 通过分析编译器给出的调用链和二进制字节码的调用链寻找逻辑缺陷

1.4代码审计平台关注的质量指标

  • 代码坏味道(代码规范、技术债评估)
  • bug和漏洞
  • 代码重复度
  • 单测与集成(测试用例数量、覆盖率)

2.sonar系统搭建

2.1 sonar系统搭建

sonar对外公布2个端口,指定国内的下载镜像

#该命令不是标准部署,使用嵌入式数据库,所有的数据都在内存里,使用Java特有的内存型数据库。运行的时候在内存中模拟出一个数据库,该数据库非常小巧,只适合于测试
docker run -d --name sonarqube -p 9000:9000 -p 9092:9092 \
registry.docker-cn.com/library/sonarqube

2.2 标准部署

docker应用商店用sonarqube主页

#此处依然采用的是内嵌型H2数据库,正式环境替换为mysql数据库
docker run -d --name sonarqube -p 9000:9000 -p 9092:9092 \
-e SONARQUBE_JDBC_USERNAME=sonar \
-e SONARQUBE_JDBC_PASSWORD=sonar \
-e SONARQUBE_JDBC_URL=jdbc:postgresql://localhost/sonar \
sonarqube

2.3下载sonar镜像

#下载最新镜像
docker pull registy.docker-cn.com/library/sonarqube

3.登陆sonar,查询本机用户信息

登陆sonar,http://localhost:9000

管理员信息:admin/admin token:c6ccba881916029ae8a0a73912c59c4de34a05e

普通用户信息:chenyi/1213456 token:4d8c4a1b76061d6a0b019fb97b472a8a2ede9397

3.1新建用户

  • Administration-Security-Users-Create User

  • 填写用户名login和组名name

  • 点击Token添加字段,生成Token

3.根据生成的token获取执行代码,留作备用

3.1 java+maven

mvn sonar:sonar \
-Dsonar.host.url=http://localhost:9000 \
-Dsonar.login=9c6ccba881916029ae8a0a73912c59c4de34a05e

3.2 Android:java+gradle

  • 步骤一:在build.gradle开始添加如下代码
plugins {
id "org.sonarqube" version "2.6"
}
  • 步骤二:执行
./gradlew sonarqube \
-Dsonar.host.url=http://localhost:9000 \
-Dsonar.login=9c6ccba881916029ae8a0a73912c59c4de34a05e

3.3 管理员设置选项

Administration-Configuration:可以针对语言,进行分析设置。以Java为例,可以设置JaCoCo、Junit选择路径



Administration-Security:用户权限修改,一般默认即可

Administration-Project:当前项目和后台任务

Administration-System:配置信息

Administration-Marketplace:存储了第三方的插件

4.sonar-scanner的使用

Analyzing+with+SonarQube+Scanner地址

4.1安装

  • Mac:brew install sonar-scanner
  • 下载根据平台下载或直接下载通用包,通用包需要设置环境变量





    根据文档要求:
  • 1.解压
  • 2.修改/conf/sonar-scanner.properties,添加sonar地址

  • 3.添加环境变量
export SONAR_HOME=/Users/chenshanju/Desktop/docker/sonar-scanner-3.2.0.1227/
export PATH=$SONAR_HOME/bin/:$PATH
  • 4.帮助

    -D 参数 -H 帮助 -V 版本 -X debug 调试

4.2下载示例

git clone https://github.com/SonarSource/sonar-scanning-examples.git

4.3执行

注意:切换到sonar-project.properties所在的目录,即/sonar-scanning-examples/sonarqube-scanner/

  • 方法1;使用项目自带的sonar-project.properties
sonar-sanner    #输入sonar-scanner即开始运行

sonar-project.properties内容

sonar.projectKey=org.sonarqube:sonarqube-scanner    #公司名:个人
sonar.projectName=chengyi1336 #项目名称
sonar.projectVersion=1.0 #版本号
sonar.sources=src,copybooks
sonar.sourceEncoding=UTF-8
## Cobol Specific Properties
# comma-separated paths to directories with copybooks
sonar.cobol.copy.directories=copybooks
# comma-separated list of suffixes
sonar.cobol.file.suffixes=cbl,cpy
sonar.cobol.copy.suffixes=cpy
## Flex Specific Properties
# retrieve code coverage data from the Cobertura report
sonar.flex.cobertura.reportPath=coverage-report/coverage-cobertua-flex.xml #所有关于覆盖率的文件都从该文件读
# PL/I Specific Properties
sonar.pli.marginLeft=2
sonar.pli.marginRight=0

  • 方法2.使用命令行指定projectKey,projectName,url,token

    切换到工程目录下面,指定项目名、项目路径、主机、token
sonar-scanner \
-Dsonar.projectKey=com.ali:chenyi \
-Dsonar.projectName=chenyi1111 \
-Dsonar.sources=. \
-Dsonar.host.url=http://localhost:9000 \
-Dsonar.login=4d8c4a1b76061d6a0b019fb97b472a8a2ede9397


bug 3个,0个漏洞,24个不规范代码,1.2%的代码覆盖率,25.4%的重复度,xml、python、PHP、JS、Flex有631个问题。

5.覆盖率

覆盖率读取文件在/sonarqube-scanner/coverage-report/coverage-cobertua-flex.xml。这种方式比较老,很少使用

2:34之前需要补充

5.更多sonarscanner信息请查看官网

https://docs.sonarqube.org/display/SCAN/Advanced+SonarQube+Scanner+Usages

1027代码审计平台 1-sonar scanner的更多相关文章

  1. 1027代码审计平台 3 Java maven

    使用成熟的构建工具对maven工程进行分析 官网:SCAN/Analyzing+with+SonarQube+Scanner+for+Maven 1.如下图修改settings.xml文件 1.1查看 ...

  2. 1027代码审计平台 2-sonarscanner项目变更

    修改version,可以获得新版本的解析数据,与以往结果比对,获取bug.漏洞.代码不规范.覆盖率等变化,重点关注新增的bug及问题分布 version参数修改 1.对sonar-project.pr ...

  3. sonar使用故障Unable to load component class org.sonar.scanner.report.ActiveRulesPublisher/Unable to load component interface org.sonar.api.batch.rule.ActiveRules: NullPointerException

    nginx后两个sonar负载分担 解决办法 Credit to @teryk-sonarsource-team, just making it an answer: Delete the direc ...

  4. 解决Unable to load component class org.sonar.scanner.report.ActiveRulesPublisher/Unable to load component interface org.sonar.api.batch.rule.ActiveRules: NullPointerException

    解决办法 Delete the directory data/es in your SonarQube installation. Restart SonarQube.

  5. 持续集成之②:整合jenkins与代码质量管理平台Sonar并实现构建失败邮件通知

    持续集成之②:整合jenkins与代码质量管理平台Sonar并实现构建失败邮件通知 一:Sonar是什么?Sonar 是一个用于代码质量管理的开放平台,通过插件机制,Sonar 可以集成不同的测试工具 ...

  6. Linux下SonarQube代码质量平台的安装和使用方法

    Sonar简介: Sonar是一个用于代码质量管理的开源平台,用于管理源代码的质量,可以从七个维度检测代码质量 通过插件形式,可以支持包括java,C#,C/C++,PL/SQL,Cobol,Java ...

  7. Jenkins之Sonar 代码检查

    一.简介 SonarQube 是一个用于代码质量管理的开放平台.通过插件机制,Sonar 可以集成不同的测试工具,代码分析工具,以及持续集成工具.与持续集成工具(例如 Hudson/Jenkins 等 ...

  8. 代码规范审查 -Sonar环境搭建

    Sonar概述 Sonar 是一个用于代码质量管理的开放平台,可以进行代码质量的持续跟踪审查,支持的语言包含C#.java.PHP.C等.可以通过UI一睹Sonar的强大之处. Sonar安装     ...

  9. Jenkins集成Sonar Quabe和权限配置

    目录 安装Sonar Jenkins配置sonar Maven Jenkins Job配置 Pipeline Jenkins Job配置 Sonar权限管理 Sonar quality Gate通过阈 ...

随机推荐

  1. Android-----------广告图片轮播控件

    Banner广告图片轮播控件,支持无限循环和多种主题,可以灵活设置轮播样式.动画.轮播和切换时间.位置.图片加载框架等! 很多Android APP中都有广告栏,我也用过很多次了,特来写一篇博文. 先 ...

  2. MySQL数据库安装和Navicat for MySQL配合使用

    MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下公司. MySQL 最流行的关系型数据库管理系统,在 WEB 应用方面MySQL是最好的 RDBMS ...

  3. 个人知识管理系统Version1.0开发记录(08)

    切入点 前面,我们已经搭建好了web端的一种基本结构,需要进一步定位的主要问题有三点: 1.界面的选择和确定,用extjs做的初步样式,进一步改动为jqueryUI/html,再进一步改变为HTML5 ...

  4. HQL查询语句中的模糊查询

    From Person this Where this.name like '%abc%' @SuppressWarnings("unchecked") @Override pub ...

  5. IOS-网络(发送JSON数据给服务器和多值参数)

    三步走: 1.使用POST请求 2.设置请求头 [request setValue:@"application/json" forHTTPHeaderField:@"Co ...

  6. MarkdownPad2 在 Windows10 下 预览无法显示

    Windows10下面一直报错,无法使用. 解决方法: 安装 Awesomium 1.6.6 SDK,如果还是有问题,请继续安装:Microsoft's DirectX End-User Runtim ...

  7. Swagger使用总结(十九)

    1. Swagger是什么? Swagger 是一款RESTFUL接口的文档在线自动生成+功能测试功能软件. 官方说法:Swagger是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTfu ...

  8. LINQ 分页 和存储过程分页

    存储过程分页 SELECT * FROM ( SELECT ROW_NUMBER() OVER(ORDER BY CreateDate DESC) AS RowNo, EstateAddress, E ...

  9. 用Ant手动打包android程序,android分包机制解决65536方法过多异常

    Android利用ant手动打包 首先我们要给自己的IDE eclispe配置ant,默认的eclipse是集成了ant构建工具的,但是google提供的Android集成开发工具ADT,里面封装了E ...

  10. 《Agile Web Development With Rails》读后感--rails基于web设计的best Practices

    最近看完<Agile Web Development with Rails>一书,受益匪浅.书中先是用一个简单的web应用带你进入Rails的世界,然后在你大致熟悉之后,再带你了解Rail ...