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. 使用 p4-graphs 命令将p4程序依赖关系图形化

    位置:/home/wasdns/p4factory/targets/l2_switch/p4src 命令: cd /home/wasdns/p4factory/targets/l2_switch/p4 ...

  2. hdu 5701 中位数计数 思路题

    中位数计数 Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Subm ...

  3. Qt5_vs2013_error_C2001: 常量中有换行符__ZC

    ZC: 这里是解决 Windows平台下的这个 编译error :“error C2001: 常量中有换行符”. ZC: 我现在(20161221)的处理方式:vs2010或vs2015 将cpp文件 ...

  4. 伪多项式时间 Pseudo-polynomial time

    2018-03-15 14:20:08 伪多项式时间:如果一个算法的传统时间复杂度是多项式时间的,而标准时间复杂度不是多项式时间的,则我们称这个算法是伪多项式时间的. 想要理解“伪多项式时间”,我们需 ...

  5. Nginx的负载均衡和高可用

    一.Nginx的理解 Nginx是一个高性能的HTTP和反向代理服务,也是一个IMAP/POP3/SMTP服务.Nginx是一款轻量级的web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理 ...

  6. Centos 7中的网卡一致性命名规则

    一致性网络设备命名,即Consistent Network Device Naming 一.为什么需要这个 服务器通常有多块网卡,有板载集成的,同时也有插在PCIe插槽的. Linux系统的命名原来是 ...

  7. C# Seal用法

    C# Seal用法 sealed的中文意思是密封,故名思义,就是由它修饰的类或方法将不能被继承或是重写. sealed关键字的作用:     在类声明中使用sealed可防止其它类继承此类:在方法声明 ...

  8. Django 之 自定义中间件

    环境:django:1.10    python: 2.7 简介 中间件是一个轻量级.底层的插件系统,可以介入 django 的请求和响应处理过程,修改 django 的输入和输出. 在 django ...

  9. 转:Android-apt

    转自http://blog.csdn.net/zjbpku/article/details/22976291 What is this? The Android-apt plugin assists ...

  10. pixi之动画

    一.循环动画 let sprite; Loader.add("images/imgs.json").load(setup); function setup() { //利用oran ...