小工具      在线工具  汉语词典  css  js  c++  java

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

软件&&安装 额外说明

收录于:42天前

项目上线后我们通常会发现各种错误,尤其是空指针异常。这些错误对于用户体验来说非常糟糕,但事实上,我们可以提前发现大部分问题。

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

今天我就介绍一个小插件,帮助我们提前发现这些潜在的问题,然后根据需要进行修改。

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

因为已经安装过插件,所以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时不提供默认值。

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

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

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

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

本文仅介绍FindBugs插件的主要功能。相信大家在使用过程中能够发现这个工具的更多用途。

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

. . .

相关推荐

额外说明

在 xxx\pip-pip-egg-info-mq 中找不到 .egg-info 目录

 WARNING: Ignoring invalid distribution -ip (d:\software\python\lib\site-packages) WARNING: Ignoring invalid distribution -ip (

额外说明

JSP标准标签库

简介 JSTL是一个不断完善的开放源代码的JSP标签库,是由apache的jakarta小组来维护的。JSTL只能运行在支持JSP1.2和Servlet2.3规范的容器上,如tomcat 4.x。但是在即将推出的JSP 2.0中是作为标准支持的。 JST

额外说明

企业级实战——畅购商城SpringCloud-网站首页高可用解决方案-openResty+nginx+lua——实现广告缓存测试

QQ 1274510382 Wechat JNZ_aming 商业联盟 QQ群538250800 技术搞事 QQ群599020441 解决方案 QQ群152889761 加入我们 QQ群649347320 共享学习 QQ群674240731 纪年科技am

额外说明

比较两个数组拿到不同部分的数据

let arr1 = [   { "id": 1, "name": "A" },   { "id": 2, "name": "B" },   { "id": 3, "name": "C" } ]; let arr2 = [   { "id": 1, "n

额外说明

《零基础安装 Oracle 数据库》RAC集群系列 ❸ 简单两步快速安装 Oracle 18C RAC 数据库

前言 很多朋友吐槽我的脚本不会用,看不懂,哎,一言难尽!于是,我将 [vagrant + virtualbox + shell脚本] 组合起来,实现了零基础也可安装 Oracle 数据库的方式,我称之为 新手纯享版本,真正一行短命令! - 支持 RAC

额外说明

VC++获取CPU的名称、主频和核数(附源码)

VC++常用功能开发汇总(专栏文章列表,欢迎订阅,持续更新...)https://blog.csdn.net/chenlycly/article/details/124272585C++软件异常排查从入门到精通系列教程(专栏文章列表,欢迎订阅,持续更新.

额外说明

我们在操作复杂的查询语句时,经常使用的一些语句

##左连接 left join ## left join网上都在说是左连接,A left join B On condition,A是什么表,B又是什么表,为什么这样写可以,而***A inner Join B on condition***就不行,或者

额外说明

JavaScript加密解密7种方法

本文一共介绍了七种 JAVASCRIPT加密方法: 在做网页时(其实是网页木马呵呵),最让人烦恼的是自己辛辛苦苦写出来的客户端IE运行的JAVASCRIPT代码常常被别人轻易的拷贝,实在让自己的心里有点不是滋味,要知道自己写点东西也挺累的......^*

额外说明

k8s运维之pod排错

k8s运维之pod排错 K8S是一个开源的,用于管理云平台中多个主机上的容器化应用,Kubernetes的目标是让部署容器化变得简单并且高效 K8S的核心优势: 1,基于yaml文件实现容器的自动创建、删除 2,更快速实现业务的弹性横向扩容 3,动

额外说明

mfcm90.dll文件丢失如何解决?

其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或者损坏了,这时你只需下载这个mfcm90.dll文件进行安装(前提是找到适合的版本),当我

ads via 小工具