对于代码质量的检查,一直是一个比较棘手的问题。虽然我们部门有关于java代码的各种规范,领导也多次强调对代码的评审。

但是在实际执行过程中,由于开发人员的水平参差不齐,在开发项目时还有各种其他因素,比如时间紧任务重,自己的代码不规范没有意识到,就疏于对代码质量的检查,然后草率的提交。

还有就是大家对代码检测的不重视,有种意识就是即使代码不规范,我们的程序也可以正常运行,为什么要多次一举呢。由于我们的工程和代码时间比较久远,想改却不知道如何下手,将代码规范转换成实际的编程规范时,执行起来却很困难,即使我们有心改这也将是一个长期而痛苦的过程,需要很大人力和时间。

现在,向大家推荐一个很优秀的代码质量检测工具—FindBugs,一个用静态分析的方式来寻找Java代码中Bug的工具,,它检查类或者jar文件,将字节码和一组缺陷模式进行对比以发现可能的问题。

有了静态分析工具,就可以在不实际运行程序的情况下对软件进行分析。不是通过分析类文件的形式或结构来确定程序的意图,而是通常使用Visitor模式来鉴别代码是否符合一些固定的规范。具体介绍大家可以百度一下进行普及

下面进行安装:

1:在AndroidStudio中点击左上角File——》Settings——》Plugins后在搜索框输入FindBugs,没有安装过点击安装,就是简单的安装——》重启AndroidStudio,OK。

2:安装成功后在AndroidStudio下方有一个小鸟的图标如下图:

3:点击会出现一个菜单如下

3:这4块是按照功能来区分的主要是:

1、代码检测功能区

2、bug分组显示功能区

3、用户体验功能区

4、导入/出错误集合

(1)代码检测功能区

该区的按钮主要用来检测代码中的bug,我们检测或停止检测bug就是点击这个区域的按钮。这些按钮我们点击打开一个文件右击弹出菜单最下面有个Findbugs,光标移动到下面就会出现这个区域的图标。

如下图所示:

根据上图的图标右部功能描述我们很容易明白这些按钮是干嘛的,下面我们一个个来说一下。

1、分析当前文件

2、分析游标下的类(就是光标所在的类)

3、分析包内所有文件

4、分析当前模块的所有文件

5、分析项目中的所有文件

这个按钮就是分析检测当前project中所有文件,找出bugs。

6、分析范围内的所有文件

这个按钮就是分析检测当前文件一定范围中所有文件,我试了一下点击后分析的还是当前项目中的所有文件,可能是因为项目结构的问题吧。

7、分析所有模块内的所有文件

这个按钮就是检测所有模块中的代码缺陷,主要和第一个按钮功能还是差不多。

8、分析改变的所有文件

这个按钮一般显示都是暗色的点击不了,当有svn等版本控制时改变后才能点击检测。

*************************************************************************************************************************************************

到这里我们会发现按照网络上的步骤很可能不能测试,因为少了几步必须的

*************************************************************这是一个分割线******************************************************************

下面我们进行配置AndroidStudio:

1:找到我们的AndroidStudio项目中的APP下面的builde.gradle文件,添加如下声明:

apply plugin: 'com.android.application'
apply plugin:'findbugs'

2:同样在APP下面的build.gradle文件下的android闭包中加入如下闭包:

//findbugs报告生成
task findbugs(type: FindBugs, dependsOn: "assembleDebug") {ignoreFailures = falseeffort = "max"reportLevel = "high"excludeFilter = new File("D:/myAndroid/findbugs-android-exclude.xml")//这里是自定义的规则classes = files("${project.rootDir}/app/build/intermediates/classes")source 'src'include '**/*.java'exclude '**/gen/**'reports {xml.enabled = falsehtml.enabled = truexml {destination "$reportsDir/findbugs/findbugs.xml"  //这里是报告产生的路径}html {destination "$reportsDir/findbugs/findbugs.html"  //这里是报告产生的路径}}classpath = files()
}

3:其中自定义的规则是一个XML文件,文件名为findbugs-android-exclude.xml,内容是如下:

<?xml version="1.0" encoding="UTF-8"?>
<FindBugsFilter>
    <!-- http://stackoverflow.com/questions/7568579/eclipsefindbugs-exclude-filter-files-doesnt-work -->
    <Match>
        <Or>
            <Class name="~.*\.R\$.*"/>
            <Class name="~.*\.Manifest\$.*"/>
        </Or>
    </Match>
</FindBugsFilter>

4:在最外层加入一个build文件配置,如下图

5:文件内容如下:

# Project-wide Gradle settings.# IDE (e.g. Android Studio) users:
# Gradle settings configured through the IDE *will override*
# any settings specified in this file.# For more details on how to configure your build environment visit
# http://www.gradle.org/docs/current/userguide/build_environment.html# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
org.gradle.jvmargs=-Xmx1536m# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true
android.enableAapt2=false 

6:OK到这里基本配置就完成了,开始下一步测试阶段:点击需要测试的模块右击FindBugs——>点击需要测试的模块就可以了。

AndroidStudio中FindBugs的简单使用教程相关推荐

  1. VIM中ctags的简单使用教程

    关于ctags的安装及配置等,请参考 Vim:打造Linux程序员的编辑利器(ctags+cscope+taglist+code_complete). 下面是关于ctags的几个常用快捷键. 注意: ...

  2. studio项目上传svn服务器,SVN在AndroidStudio中的使用(一),SVN安装配置和项目检出更新...

    由于断断续续的使用SVN,经常出现过一段时间就忘记SVN的基本操作方式,因此编写一份在AndroidStudio中使用SVN的详细教程,为自己做一个记录,便于之后的查阅. 本文主要记录如下操作. SV ...

  3. java map set_java中Map、Set、List的简单使用教程(快速入门)

    Map.Set.List List的常用方法 1.创建 List list = new ArrayList<>(); List list = new LinkedList<>( ...

  4. 【转】正则表达式简介及在C++11中的简单使用教程

    [转]正则表达式简介及在C++11中的简单使用教程 正则表达式Regex(regular expression)是一种强大的描述字符序列的工具.在许多语言中都存在着正则表达式,C++11中也将正则表达 ...

  5. PHP在WPS中的应用,PHP+Laravel的简单应用教程【ajax的使用】,wps的使用教程

    PHP+Laravel的简单应用教程[ajax的使用]PHP·拉弗尔的简单应用教程[阿贾克斯的使用],下面由Laravel框架教程栏目给大家介绍PHP Laravel的简单应用教程[阿贾克斯的使用], ...

  6. python中的turtle如何运行_python中turtle库的简单使用教程

    python的turtle库的简单使用 Python的turtle库是一个直观有趣的图形绘制函数库,是python的标准库之一. 一.绘图坐标体系 turtle库绘制图形的基本框架:通过一个小海龟在坐 ...

  7. Git使用教程-idea系列(idea、webstorm、phpstorm、androidstudio)中git使用教程

    Git使用教程 idea.webstorm.phpstorm.androidstudio中git使用教程 aiprose 个人随笔上线,网址 aiprose.com 点击访问 首先你的安装git,wi ...

  8. 在mysql中unique唯一索引的作用_MySQL_MySQL中的唯一索引的简单学习教程,mysql 唯一索引UNIQUE一般用于不 - phpStudy...

    MySQL中的唯一索引的简单学习教程 mysql 唯一索引UNIQUE一般用于不重复数据字段了我们经常会在数据表中的id设置为唯一索引UNIQUE,下面我来介绍如何在mysql中使用唯一索引UNIQU ...

  9. android studio ddms 打开空白,AndroidStudio中如何打开DDMS-AndroidStudio打开DDMS的教程 - 河东软件园...

    Android Studio是余款Android的集成开发工具,作用类似于Eclipse软件.而DDMS则是一款调试工具,全称为:Dalvik Debug Monitor Service.它在Andr ...

最新文章

  1. 拿高薪的程序员,都学习了什么编程语言?
  2. big and little endian
  3. sqlyog怎么连接mysql_Mysql数据库连接过高,怎么快速杀掉连接
  4. 使用librdkafka的C++接口实现简单的生产者和消费者
  5. C语言 | 基于卡尔曼滤波器的角度测量仪(MPU6050)
  6. oracle access manager token,Laravel 自带的 API 守卫驱动 token 使用详解
  7. avalon框架,简单的MVVM
  8. 操作系统概述 记录操作系统相关知识
  9. opencv4 图像特征匹配_概述 | 全景图像拼接技术全解析
  10. 接口测试基础——第5篇xlrd模块
  11. 安大计算机学院李炜教授,李炜-北京航空航天大学计算机学院
  12. java项目实战 学生信息管理系统(UI界面+连接数据库)
  13. 如何入门单片机C语言
  14. 斯坦福NLP名课带学详解 | CS224n 第17讲 - 多任务学习(以问答系统为例)(NLP通关指南·完结)
  15. 元气骑士远程联机(仅安卓)
  16. 解决导入maven工程时cannot resolve依赖问题
  17. 前端生成二维码图片以及条形码图片
  18. linux安装nodejs 7,在CentOS 7上安装Node.js的4种方法
  19. 怎么把小丑的可怕和疯狂表现出来
  20. iOS开发实用技术之音频播放(QQ音乐)

热门文章

  1. RX-Explorer 使用体验:一款实用的 Windows 资源管理器
  2. 狂装激光雷达,新造车跑偏了吗?
  3. windows C++客户端开发技术栈(C++应用开发技术栈)
  4. 2020年前百度总监刘超恢复职务
  5. 滴滴估值5000亿?准备今年上市?女孩遇害或让滴滴上市成为泡沫
  6. 遗传算法求解函数优化及TSP问题
  7. WSAStartup详解
  8. 常说的渲染是什么意思?js怎么渲染?
  9. WebSSH的最佳方案GateOne。
  10. pcie中文入门学习文档资料