1027代码审计平台 1

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系统搭建

<font color=458B00>sonar对外公布2个端口,指定国内的下载镜像</font>

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

2.2 标准部署

docker应用商店用sonarqube主页 <img src="https://img2018.cnblogs.com/blog/1418970/201810/1418970-20181027221316400-1753864459.png" width="600" />

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

2.3下载sonar镜像

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

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

登陆sonar,http://localhost:9000 <font color=458B00>管理员信息:admin/admin token:c6ccba881916029ae8a0a73912c59c4de34a05e</font> <font color=458B00>普通用户信息:chenyi/1213456 token:4d8c4a1b76061d6a0b019fb97b472a8a2ede9397</font>

3.1新建用户

  • Administration-Security-Users-Create User
<img src="https://img2018.cnblogs.com/blog/1418970/201810/1418970-20181027200051862-1041979395.png" width="600" />
  • 填写用户名login和组名name

<img src="https://img2018.cnblogs.com/blog/1418970/201810/1418970-20181027195905505-971027623.png" width="300" /> * 点击Token添加字段,生成Token <img src="https://img2018.cnblogs.com/blog/1418970/201810/1418970-20181027200358215-1775118040.png" width="300" />

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

3.1 java+maven

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

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
  • 下载根据平台下载或直接下载通用包,通用包需要设置环境变量

<img src="https://img2018.cnblogs.com/blog/1418970/201810/1418970-20181027225245276-798204131.png" width="400" /> <img src="https://img2018.cnblogs.com/blog/1418970/201810/1418970-20181027230011807-1492409489.png" width="700" /> 根据文档要求: * 1.解压 * 2.修改/conf/sonar-scanner.properties,添加sonar地址 <img src="https://img2018.cnblogs.com/blog/1418970/201810/1418970-20181027230232994-455992469.png" width="600" /> * 3.添加环境变量 ```#shell 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内容

1sonar.projectKey=org.sonarqube:sonarqube-scanner #公司名:个人 2sonar.projectName=chengyi1336 #项目名称 3sonar.projectVersion=1.0 #版本号 4sonar.sources=src,copybooks 5sonar.sourceEncoding=UTF-8 6## Cobol Specific Properties 7# comma-separated paths to directories with copybooks 8sonar.cobol.copy.directories=copybooks 9# comma-separated list of suffixes 10sonar.cobol.file.suffixes=cbl,cpy 11sonar.cobol.copy.suffixes=cpy 12## Flex Specific Properties 13# retrieve code coverage data from the Cobertura report 14sonar.flex.cobertura.reportPath=coverage-report/coverage-cobertua-flex.xml #所有关于覆盖率的文件都从该文件读 15# PL/I Specific Properties 16sonar.pli.marginLeft=2 17sonar.pli.marginRight=0
<img src="https://img2018.cnblogs.com/blog/1418970/201810/1418970-20181027135712081-1052755344.png" width="600"/>
  • 方法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

<img src="https://img2018.cnblogs.com/blog/1418970/201810/1418970-20181027231811840-1531292942.png" width="600" /> 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

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )