1027代码审计平台 1-sonar scanner
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 标准部署
#此处依然采用的是内嵌型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的更多相关文章
- 1027代码审计平台 3 Java maven
使用成熟的构建工具对maven工程进行分析 官网:SCAN/Analyzing+with+SonarQube+Scanner+for+Maven 1.如下图修改settings.xml文件 1.1查看 ...
- 1027代码审计平台 2-sonarscanner项目变更
修改version,可以获得新版本的解析数据,与以往结果比对,获取bug.漏洞.代码不规范.覆盖率等变化,重点关注新增的bug及问题分布 version参数修改 1.对sonar-project.pr ...
- 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 ...
- 解决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.
- 持续集成之②:整合jenkins与代码质量管理平台Sonar并实现构建失败邮件通知
持续集成之②:整合jenkins与代码质量管理平台Sonar并实现构建失败邮件通知 一:Sonar是什么?Sonar 是一个用于代码质量管理的开放平台,通过插件机制,Sonar 可以集成不同的测试工具 ...
- Linux下SonarQube代码质量平台的安装和使用方法
Sonar简介: Sonar是一个用于代码质量管理的开源平台,用于管理源代码的质量,可以从七个维度检测代码质量 通过插件形式,可以支持包括java,C#,C/C++,PL/SQL,Cobol,Java ...
- Jenkins之Sonar 代码检查
一.简介 SonarQube 是一个用于代码质量管理的开放平台.通过插件机制,Sonar 可以集成不同的测试工具,代码分析工具,以及持续集成工具.与持续集成工具(例如 Hudson/Jenkins 等 ...
- 代码规范审查 -Sonar环境搭建
Sonar概述 Sonar 是一个用于代码质量管理的开放平台,可以进行代码质量的持续跟踪审查,支持的语言包含C#.java.PHP.C等.可以通过UI一睹Sonar的强大之处. Sonar安装 ...
- Jenkins集成Sonar Quabe和权限配置
目录 安装Sonar Jenkins配置sonar Maven Jenkins Job配置 Pipeline Jenkins Job配置 Sonar权限管理 Sonar quality Gate通过阈 ...
随机推荐
- 2015-9-13 NOIP模拟赛 by hzwer
好老的题了,但是还是很有做头的. 总结 不吸氧看来确实是没法用stl的啊(set常数太大了,开O2也没过) SPFA没认真学,觉得有堆优化Dijkstra就天下无敌了,今天负边权教我做人 于是苦逼的只 ...
- 51Nod 1596 搬货物
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1596 思路: 模拟二进制的进位. 这题很坑啊...用c++会超时,用c就 ...
- UVa 11538 象棋中的皇后
https://vjudge.net/problem/UVA-11538 题意: n×m的棋盘,有多少种方法放置两个相互攻击的皇后? 思路: 这两个皇后互相攻击的方式只有3种,在同一行,在同一列,或在 ...
- Codeforces Round #169 (Div. 2) E. Little Girl and Problem on Trees dfs序+线段树
E. Little Girl and Problem on Trees time limit per test 2 seconds memory limit per test 256 megabyte ...
- Proxy(代理)
意图: 为其他对象提供一种代理以控制对这个对象的访问. 适用性: 在需要用比较通用和复杂的对象指针代替简单的指针的时候,使用Proxy模式.下面是一 些可以使用Proxy 模式常见情况: 1) 远程代 ...
- 同样是搞Java,年薪15W和50W到底差在哪里?
同样是搞Java,年薪15W和50W到底差在哪里? 一.总结 一句话总结: 学习 挑战 1.扩宽自己的眼界,学着从全局看待问题,并且勇于挑战别人眼中的难题 2.持续提升你的学习能力,虽然有很多人以「在 ...
- 路由跟踪tracert
Tracert命令 如果我们要测试某一个IP都经过哪些路由,用trcert命令即可,这是dos下的一个基本网络命令,具体使用方法: 1,在windows系统下,打开 运行 :输入 cmd :在弹出的d ...
- ABP zero出现Default language is not defined!的错误的解决方法
打开程序包管理器控制台,把EntityFramework作为默认项目,并且执行Update-Database命令 再运行项目
- ArcGIS 10 Raster Calculator 在哪儿
ArcGIS 10 Raster Calculator 在哪儿? 现在大家用的最多的是ArcGIS9.3,所以大家都知道Raster Calculator在ArcToolbox->Spatial ...
- CF 160D Edges in MST 最小生成树的性质,寻桥,缩点,批量处理 难度:3
http://codeforces.com/problemset/problem/160/D 这道题要求哪条边存在于某个最小生成树中,哪条边不存在于最小生成树中,哪条边绝对存在于最小生成树中 明显桥边 ...
