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. Cuda 9.2 CuDnn7.0 官方文档解读

    目录 Cuda 9.2 CuDnn7.0 官方文档解读 准备工作(下载) 显卡驱动重装 CUDA安装 系统要求 处理之前安装的cuda文件 下载的deb安装过程 下载的runfile的安装过程 安装完 ...

  2. shell 判断变量是否为空

    一句话判断 [ ! $a ] && echo "a is null" 1.判断变量 read -p "input a word :" word ...

  3. python 获取列表的键值对

    nums = [, , , , ] for num_index, num_val in enumerate(nums): print(num_index, num_val)

  4. h.264_javascript_资料

    1. 用ffmpeg制作推流工具,实现推流系统声音和桌面到rtmp服务器-CSDN论坛-CSDN.NET-中国最大的IT技术社区.html http://bbs.csdn.net/topics/392 ...

  5. 解决xshell乱码问题

    如下图,xshell在执行命令时显示乱码 解决办法: 文件—属性—终端,将编码改成Unicode即可 参考文章 https://blog.csdn.net/yueloveme/article/deta ...

  6. Java队列的两种实现方式

    1. 基于数组 package Algorithm.learn; import java.util.Arrays; /** * Created by liujinhong on 2017/3/7. * ...

  7. UVA-11903 Just Finish it up

    题目大意:一个环形跑道上有n个加油站,每个加油站可加a[i]加仑油,走到下一站需要w[i]加仑油,初始油箱为空,问能否绕跑道一圈,起点任选,若有多个起点,找出编号最小的. 题目分析:如果从1号加油站开 ...

  8. 008PHP文件处理——文件操作r w (用的比较多) a x(用的比较少) 模式 rewind 指针归位:

    <?php /** *文件操作r w (用的比较多) a x(用的比较少) 模式 rewind 指针归位: */ /*$a=fopen('a.txt','r'); echo fread($a,f ...

  9. PHP:第五章——字符串的统计及查找

    <?php header("Content-Type:text/html;charset=utf-8"); /*字符串的统计与查找*/ //1.获取字符串的长度 //1)st ...

  10. SGU 140. Integer Sequences 线性同余,数论 难度:2

    140. Integer Sequences time limit per test: 0.25 sec. memory limit per test: 4096 KB A sequence A is ...