另一篇使用文档,参照:https://www.cnblogs.com/huaxingtianxia/p/6703315.html

我们通常都会在APP上线之后,发现各种错误,尤其是空指针异常,这些错误对于用户体验来说是非常不好的,但其实大部分的问题,我们都能够提前发现.

在编写代码的过程中,可能不会时时刻刻记得检查空的引用,还有删除没有用过的变量,在我们自己测试的过程中可能难以发现问题,一旦app上线,用户的使用环境改变,这些潜在的问题就可能会冒出来. 
当然这这只是对于我这种经常写出空指针异常的小白而言的,编程风格良好,编程严谨的大神请忽略.

今天我介绍一个小插件,帮助我们提前找到这些潜在的问题,然后根据需要去修改.

第一步下载插件,在AndroidStudio的File->Setting->Plugins->Browser Repositorise中搜索FindBugs-IDEA.然后install. 

因为已经安装过插件,所以install的按钮已经消失了. 
安装成功后需要重启AS才可以使用. 
 
静静等待一会,在下方生成分析结果

找到的bug太多,数量就不展示啦. 
我来简单介绍一下这几类bug,当然有些你是可以忽略的. 
1->Bad pratice编程的坏习惯 
主要是命名问题,比如类名最好以大写开头,字符串不要使用等号不等号进行比较,可能会有异常最好用try-catch包裹的代码,方法有返回值但被忽略等等,这些如果不想改可以直接忽略.

2->Malicious code vulnerability 恶意代码漏洞 
听起来很吓人呀,主要是一些属性直接使用public让别的类来获取,建议改为private并为其提供get/set方法. 
还有一些public的静态字段,可能会被别的包获取之类的. 
这些也需要根据项目具体情况来,个人意见,在有的不重要类,有时直接公开使用属性,可能更为便捷.如果你认为这些不需要修改,完全可以忽略.

3->Dodgy code 糟糕的代码 
·比如一个double/float被强制转换成int/long可能会导致精度损失,一些接近零的浮点数会被直接截断,事实上我们应该保留. 
这里顺便提一点,这两天看了《app研发录》,在规范代码,尽量规避错误这方面我也有了一些收获. 
在类型转换的时候,我们应该为类型转换提供一个安全的转换方法,因为我们永远不会知道,我们的app在用户手里会发生什么,所以我们要尽可能的去减少这种发生错误的可能.

·比如使用switch的时候没有提供default。

·多余的空检查,就是不可能为空的值,增加了不为空判断,这是没有必要的。属于代码冗余

·不安全的类型转换等等。 
这项太多了,就不一一列举了。

4->performance 性能 
主要是一些无用的代码,比如声明了没有用到的属性等等

5->correctness 代码的正确性 这一项应该算是最重要的了 
主要是没有对变量进行不为空判定,在特殊情况可能发生空指针异常.

这篇文章还只是对FindBugs这个插件最主要的功能进行介绍,相信你能在使用过程中发现这个工具更多的用法.

该博客由博主原创,转载请声明出处 
http://blog.csdn.net/fancy_xty/article/details/51718687

转载于:https://www.cnblogs.com/aligege/p/7308274.html

使用FindBugs-IDEA插件找到代码中潜在的问题相关推荐

  1. FindBugs-IDEA插件找到代码中潜在的问题

    我们通常都会在APP上线之后,发现各种错误,尤其是空指针异常,这些错误对于用户体验来说是非常不好的,但其实大部分的问题,我们都能够提前发现.在编写代码的过程中,可能不会时时刻刻记得检查空的引用,还有删 ...

  2. android studio教程离线安装findbugsieda报错,使用 FindBugs-IDEA 插件查找代码中潜在的 BUG...

    在Android自动化测试技术中,我们首先会运用各种代码检查工具对Android代码进行检查,从而提前发现代码中存在的一些bug和隐患,提高代码质量.FindBug就是Android代码检查最常用的工 ...

  3. IDEA插件之代码质量检查利器 - Alibaba Java Coding Guidelines、CheckStyle、PMD、FindBugs、SonarLint

    随着业务的发展,系统会越来越庞大,原本简单稳定的功能,可能在不断迭代后复杂度上升,潜在的风险也随之暴露,导致最终服务不稳定,造成业务价值的损失.而为了减少这种情况,其中一种比较好的方式就是提高代码质量 ...

  4. 你还在 Java 代码中写 set/get 方法?赶快试试这款插件吧!

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:Mr.ml https://blog.csdn.net/Ma ...

  5. Jetty在win10上的配置,IDEA中配置Jetty,Maven中配置Jetty插件,Eclipse中配置Jetty插件及其使用,通过java代码内嵌Jetty Server

    1.下载Jetty 下载地址:http://www.eclipse.org/jetty/download.html 2.在windows上运行jetty 一.将下载的jetty解压到D:\instal ...

  6. java中getup用法_你还在 Java 代码中写 set/get 方法?赶快试试这款插件吧!

    前言 what?你的 Java 代码中还充斥着大量的 set/get 方法? 我们在刚开始学习 Java 语言的时候讲过,面向对象的三大特征就是封装,继承,和多态.在 Java 中,要保证封装性,需要 ...

  7. Visual Studio中使用Macros插件给代码添加注释、时间和以及自动脚本

    title: Visual Studio中使用Macros插件给代码添加注释.时间和以及自动脚本 date: 2020-09-11 sidebarDepth: 2 tags: 代码 Visual st ...

  8. vscode中怎样格式化js代码_[VSCode插件推荐] Bracket Pair Colorizer: 为代码中的括号添上一抹亮色...

    在代码编写过程中,各种括号 {[()]} 必不可少.然而,随着代码量的增加,你有没有因为括号的嵌套太多,而导致代码难以阅读? 我们来看看下面的代码,在第三行代码的最后部分,连续出现了5个右括号! 这还 ...

  9. idea中leetcode提示未登录_IntelliJ IDEA中LeetCode插件配置问题代码解析

    本篇文章小编给大家分享一下IntelliJ IDEA中LeetCode插件配置问题代码解析,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 首先是在In ...

最新文章

  1. Taglib原理和实现:再论El和JST
  2. Python入门100题 | 第028题
  3. c++冒泡排序代码_数据结构和算法必知必会的50个代码实现
  4. python正则表达式初识(七)_Python正则表达式初识(二)
  5. IoT -- (三) 2018 Top物联网项目排名
  6. mysql 字符串 底层_Mysql 的索引底层原理及数据结构详解
  7. 【HDOJ 2020.09.29】一些语法水题ByVJ
  8. 手机怎么用外嵌字幕_怎么用手机给视频添加字幕?原来方法这么简单,3分钟教你学会...
  9. linux中如何编译成bin文件,gcc 如何编译成bin文件
  10. 台湾地区HITCON队长发威夺冠,XCTF联赛西安站国际赛顺利落幕
  11. JSP项目常见问题解决方案
  12. MySQL中where 1=1真的会影响性能么?
  13. 微信撤回信息怎么用Python找回来?
  14. 动态测试与静态测试--手工测试和自动化测试
  15. java唯一的id_Java:唯一的10位数ID
  16. webpack版本升级的差异大版本更迭
  17. 红与黑 vs 漂亮朋友 同一个梦想,不同的命运
  18. 【浅墨Unity3D Shader编程】之一 夏威夷篇:游戏场景的创建 第一个Shader的书写...
  19. Windows Server 2012 R2 搭建FTP服务
  20. a标签的tagart属性

热门文章

  1. Java 动态代理解析
  2. Eclipse生成SSH传输密钥并实现GitHub的SSH代码提交
  3. 在python语言中语句的续行符是_Python程序设计课后习题答案-第二单元(2页)-原创力文档...
  4. (stl排序+检索)大理石在哪
  5. 地图自定义图标_如何在H5里添加地图导航?这份教程请收藏!
  6. mysql分库分表面试_【53期】面试官:谈一下数据库分库分表之后,你是如何解决事务问题?...
  7. 基于Echarts+HTML5可视化数据大屏展示—Echart图例使用
  8. 基于javaweb jsp+servlet学生宿舍管理系统
  9. 制作 小 linux 教程,用BusyBox制作Linux最小系统
  10. 能利用计算机来模拟某种真实的实验现象,自然现象或社会现象的课件是,幼儿园课件制作教案...