android studio 使用sonarqube进行代码分析

环境

mac min(2014)
android  studio 3.1.2
jdk 1.8(之前jdk是1.5导致启动不了soanr服务器)
sonar-runner-2.4(代码扫描器,也可以用sonar-scanner,扫描后会将结果上传服务器)
sonarqube-6.7.6(相当于服务器,tomcat,需要启动)

配置环境变量

这里就不多描述,软件什么的,随便搜一下就能下;

使用:

1. 启动sonar服务器
命令行输入 sonar.sh start
如下图所示启动完成;(实际中启动完成后,打开localhost 可能失败,耐心等等就行)

在这里插入图片描述

2. 打开浏览器验证
打开浏览器输入地址:localhost:9000
右上角有登陆按钮,账号密码都是admin/admin(如果配置文件未修改的话)

在这里插入图片描述

3. 新增sonar配置文件
打开android studio;
module目录下新建一个文件sonar-project.property
编辑内容:
	//唯一便可
	sonar.projectKey=nsps
	sonar.projectName=nsps//将会显示在
	sonar.projectVersion=1.0
	sonar.sourceEncoding=UTF-8
	//下面的都是绝对路径
	sonar.sources=/Users/zx/codes/nsps/nsps/src/main
	sonar.projectBaseDir=/Users/zx/codes/nsps/nsps
	sonar.java.source=1.8
	sonar.java.binaries=/Users/zx/codes/nsps/nsps/build
如下图所示:

在这里插入图片描述

4. 运行代码检查器
打开android studio 内的terminal
此时默认的路径是项目的根目录内,输入“cd module名称” 进入 module根目录中
在 module的根目录下 输入指令 sonar-runner 代码检查器便会检查当前module的代码

在这里插入图片描述

等待片刻,检查完毕

在这里插入图片描述

5. 查看代码检查结果
浏览器进入localhost:9000 就能看到结果了
一般我们只需要修改bugs,漏洞两项内的内容即可;

在这里插入图片描述

6. 查看代码检查结果
点击上图马赛克(左上角)项目名称
因为我修改过代码,所以这里的bugs为0

在这里插入图片描述

由上图可以看到漏洞有231个(简直不敢相信,有这么多吗?);
点进去查看一下我们的代码有什么问题:

在这里插入图片描述

7. 检查修复代码

问题1:Make keyword a static final constant or non-public and provide accessors if needed.

	大致意思是说:把它变成final 常量,或者提供 getter()方法;
	这个挺好解决的,看看有没有其他类用到了这个类的属性,根据实际需求修改;
	一般这个问题是没有提供getter/setter 方法;

在这里插入图片描述
如果这个问题你觉得不是问题,比如说下图这个,是个内部类adapter的ViewHolder,不想改,只需要 点击 打开(登陆后才有),里面有个误判,选中它就行;刷新一下界面这个问题便不会出现了,同时你会发现 对应的数量也会少1;
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

问题2: Make this IP “192.168.31.175” address configurable.

这个问题不知道怎么解决,没懂他想表达什么意思,如大佬有缘看到了这句话麻烦解释一下,
不甚感激!
下图为sonar的详细介绍:

在这里插入图片描述
问题3:Make this “public static DEFAULT_MIN_DISTANCE” field final

	意思是说 把那个变量申明为常量,在 static 后面加上final就行;

在这里插入图片描述
问题4:Use a logger to log this exception.
让我们用logger来打印异常

Throwable.printStackTrace(...) prints a Throwable and its stack trace to some stream. By default that stream System.Err, which could inadvertently expose sensitive information.

Loggers should be used instead to print Throwables, as they have many advantages:

Users are able to easily retrieve the logs.
The format of log messages is uniform and allow users to browse the logs easily.
This rule raises an issue when printStackTrace is used without arguments, i.e. when the stack trace is printed to the default stream.

在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值