Android 代码优化工具FindBugs
1.前言:
在我们平时项目开发中,经常会写一些不严谨的代码或者一些比较低级的错误代码,但是这些错误往往很难被发现,这样就导致了我们的项目中会隐藏了很多影响性能甚至是导致闪退的错误代码,于是许多响应的检测工具就出现了.在这里我就介绍一下我比较常用的几个检测工具吧
项目DEMO源码
2.FindBugs
顾名思义,FindBugs是一个寻找bug的工具,更具体的说FindBugs是一个静态检测java代码的工具,可以找到代码中的一些潜在bug,比如说NullPointerException,或者是一些流或者数据库没有关闭的问题.
2.1作用
检测范围 :
- 常见代码错误,序列化错误
- 可能导致错误的代码,如空指针引用
- 国际化相关问题:如错误的字符串转换
- 可能受到的恶意攻击,如访问权限修饰符的定义等
- 多线程的正确性:如多线程编程时常见的同步,线程调度问题。
- 运行时性能问题:如由变量定义,方法调用导致的代码低效问题
2.2使用方法
FindBugs在Android studio里面有个插件 正常安装即可(不会安装插件的自己google)
安装好插件之后重启一下Android studio,在底部会有个红色的图标(不同版本可能位置不同),如果你出现了这个图标,那么恭喜你完成了第一步
点击左侧第五个按钮可以开始检测
检测结果显示如下
当创建流的时候发生了异常 那么inputStream就可能为空 接下来直接调用inputStream就可能产生空指针异常
这里使用了io流,但是没有做释放
2.3设置
在setting里面还可以对FindBugs做一些设置(这里就不做详细的介绍了)
2.4自定义规则
FindBugs可以在gradle里面做自定义任务
(注意需要在gradle里面添加 apply plugin:'findbugs')
在这里配置了规则findbugs-filter.xml 以及报告生成的路径findbugs.xml
task findbugs(type: FindBugs, dependsOn: "assembleDebug") {ignoreFailures = falseeffort = "max"reportLevel = "high"excludeFilter = new File("$configDir/findbugs/findbugs-filter.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.PMD
PMD和FindBugs的作用差不多,但是他们俩的检测方法不同,所以同时使用能达到互补.
3.1作用
检测范围 :
- 可能的bug——空的try/catch/finally/switch块。
- 无用代码(Dead code):无用的本地变量,方法参数和私有方法。
- 空的if/while语句。
- 过度复杂的表达式——不必要的if语句,本来可以用while循环但是却用了for循环。
- 可优化的代码:浪费性能的String/StringBuffer的使用。
3.2使用方法
PMD在Android studio也有个插件,直接安装即可(注意搜索的关键字用QAPlug - PMD)
3.3自定义规则
(注意需要在gradle里面添加 apply plugin: 'pmd')
task pmd(type: Pmd) {ignoreFailures = falseruleSetFiles = files("$configDir/pmd/pmd-ruleset.xml") //这里是自定义的规则ruleSets = []source 'src'include '**/*.java'exclude '**/gen/**'reports {xml.enabled = falsehtml.enabled = truexml {destination "$reportsDir/pmd/pmd.xml" //这里是报告产生的路径}html {destination "$reportsDir/pmd/pmd.html" //这里是报告产生的路径}}
}
在这里配置了规则pmd-ruleset.xml 以及报告生成的路径 pmd.html
运行自定义任务(跟FindBugs一样,找到任务,双击即可)
4.CheckStyles
CheckStyles是用来检测java代码规范性的
4.1作用
检测范围 :
- 注解
- javadoc注释
- 命名规范
- 文件头
- 导入包规范
- 尺寸设置
- 空格
- 正则表达式
- 修饰符
- 代码块
- 编码问题
- 类设计问题
- 重复、度量以及一些杂项
4.2使用方法
安装插件 CheckStyles
4.3设置
TreatCheckstyle errors as warnings 如果勾上的话,检测到错误时只是会以警告的形式提示
下面是勾上时的提示方式(以警告的形式)
下面是不勾时的提示方式(以报错的形式)
下面是选择官方默认的检测规则(也可以自己定义,具体这里就不做详解了)
4.4通过gradle运行
(注意需要在gradle里面添加 apply plugin: 'checkstyle')
task checkstyle(type: Checkstyle) {configFile file("$configDir/checkstyle/checkstyle.xml") //这里是自定义的规则configProperties.checkstyleSuppressionsPath = file("$configDir/checkstyle/suppressions.xml").absolutePath //这里是自定义的规则source 'src'include '**/*.java'exclude '**/gen/**'classpath = files()
}
5.Demo源码
Demo链接
https://github.com/yulyu2008/QualityDemo
注意Demo里面的task都抽取到了config目录下的quality.gradle中,所以需要在项目的build.gradle添加
apply from: '../config/quality.gradle'
Demo是在他人的基础上修改的,由于已经无法找到源头,所以在这里声明一下
原文地址: https://juejin.im/post/58d4e35261ff4b00605326d9
Android 代码优化工具FindBugs相关推荐
- Android系统 (150)---Android 开发者工具
31个Android开发者工具 链接:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2017/0526/7973.html 原文:http ...
- Android Proguard工具使用和配置详解
Android开发中的Proguard Proguard是Android开发时经常会用到的一个工具,在Android SDK中已经集成了一个免费的Proguard版本,位于<sdk>/to ...
- java安卓开发工具_推荐几个非常实用的Android开发工具
工欲善其事,必先利其器.我们进行Android开发也要有好的开发工具辅助才能更好更高效的完成各种开发,为用户提供更实用的应用程序.本文就为大家推荐几个非常实用的Android开发工具,及几个常用的编辑 ...
- 性能优化之Java(Android)代码优化
最新最准确内容建议直接访问原文:性能优化之Java(Android)代码优化 本文为Android性能优化的第三篇--Java(Android)代码优化.主要介绍Java代码中性能优化方式及网络优化, ...
- Xamarin.Form的Android SDK工具下载安装
Xamarin.Form的Android SDK工具下载安装 本节将讲解如何下载Xamarin.Form的Android SDK工具,并使用其中的工具管理Android SDK,如何创建模拟器等内容. ...
- android 测试工具,Android开源项目第四篇:开发及测试工具篇
本文为那些不错的Android开源项目第四篇--开发工具篇,**主要介绍Android开发工具和测试工具相关的开源项目**. Android开源项目系列汇总已完成,包括: 1.Buck faceboo ...
- 【Android CPU 优化】Android CPU 调优 ( Trace 文件分析 | Android Profiler 工具 | CPU Profiler 工具 )
文章目录 一.Android CPU 优化 二.CPU Profiler 工具 三.相关资源 一.Android CPU 优化 在 Android 中 , 出现 动画掉帧 , 页面切换白屏 , 卡顿 ...
- 【Android 内存优化】Android Profiler 工具常用功能 ( 监测内存 | 内存快照 )
文章目录 一. 内存泄漏排查 ( Android Profiler 工具 ) 二. Android Profiler 内存监测相关功能 三.内存快照分析 内存泄漏原理 : 长生命周期对象 , 持有短生 ...
- qpython3调用adb_Python实现的基于ADB的Android远程工具
Python实现的基于ADB的Android远程工具,本工具为原创,涉及知识: - Python编程 - Tkinter GUI编程 - ADB通信机制 代码全文: #!/usr/bin/env py ...
最新文章
- python代码优化_Python 代码优化技巧(一)
- Latex \section 使用中文
- CF802O-April Fools‘ Problem(hard)【wqs二分,优先队列】
- kafka 怎么样连接图形化界面_从零开始搭建Kafka+SpringBoot分布式消息系统
- 经典面试题:用typeof来判断对象的潜在陷阱
- php 源文件加密工具PHP Screw
- 插画在UI的应用体验,太美好了!这样的模板让你的用户更加喜欢!
- svn拒绝访问是什么原因_为什么Windows无法访问U盘|电脑U盘被拒绝访问
- unity多边形uv地图
- linux下mono播放PCM音频
- 华为路由模拟器3.0参考实验7----直连路由无法ping通解决办法
- iOS视频开发(一):视频采集
- 云计算教程入门视频课件:云计算中心怎么选址?
- 新一代消息中间件—Apache Pulsar
- 移动端是如何做适配的?
- 网络打印机安装教程:HP LaserJet Pro MFP M226dw,Windows解决外网无法使用打印机问题
- NEXTCHIP,北京冠宇铭通科技,祝中国人民早日战胜新冠病毒疫情
- FKMT--创建凭证模板
- 物联网平台由哪些部分组成
- C语言常用转义字符表 和 ASCII码表完整版
热门文章
- Enterprise Solution 2.2 Feature List
- imf瞬时频率跳变问题
- Pytorch实践中文教程(1)
- (转)自定义EndNote的输出样式(output style)
- 利用matlab画混淆矩阵(confusion matrix)
- 1000多首无损歌曲合集
- 科大星云诗社动态20211214
- [云炬python学习笔记]Numpy中内置函数min(),max(),sum()与Python中内置函数min(),max(),sum()性能对比分析
- mysql replace into 使用过程中报错
- 实验室服务器18.04LTS+RTX2080Ti+CUDA10.0+CUDAnn7.4+tf1.13装机之路