IDEA-常用插件,使用FindBugs寻找bug,代码分析
bug无处不在,但是我们总希望少一点bug。
最近发现了一款好用的寻找bug的插件,特此记下。
一、安装
路径:File-->Settings-->Plugins-->Browse repositories....-->输入FindBugs-IDEA-->点击安装

二、使用
注意:安装后需要重启idea

有各种可选范围
三、结果分析
1->Bad pratice编程的坏习惯
主要是命名问题,比如类名最好以大写开头,字符串不要使用等号不等号进行比较,可能会有异常最好用try-catch包裹的代码,方法有返回值但被忽略等等,这些如果不想改可以直接忽略.
2->Malicious code vulnerability 恶意代码漏洞
听起来很吓人呀,主要是一些属性直接使用public让别的类来获取,建议改为private并为其提供get/set方法.
还有一些public的静态字段,可能会被别的包获取之类的.
这些也需要根据项目具体情况来,个人意见,在有的不重要类,有时直接公开使用属性,可能更为便捷.如果你认为这些不需要修改,完全可以忽略.
3->Dodgy code 糟糕的代码
·比如一个double/float被强制转换成int/long可能会导致精度损失,一些接近零的浮点数会被直接截断,事实上我们应该保留.
在类型转换的时候,我们应该为类型转换提供一个安全的转换方法,因为我们永远不会知道,我们的app在用户手里会发生什么,所以我们要尽可能的去减少这种发生错误的可能.
·比如使用switch的时候没有提供default。
·多余的空检查,就是不可能为空的值,增加了不为空判断,这是没有必要的。属于代码冗余
·不安全的类型转换等等。
这项太多了,就不一一列举了。
4->performance 性能
主要是一些无用的代码,比如声明了没有用到的属性等等
5->correctness 代码的正确性 这一项应该算是最重要的了
主要是没有对变量进行不为空判定,在特殊情况可能发生空指针异常.
参考文章:http://blog.csdn.net/fancy_xty/article/details/51718687
四、扩展
1、点击如下按钮,可分析当前文件,真是太强大了。

2、有一个默认编码检查的类很烦
我直接去掉检查了:Dector:DefaultEncodingDector
IDEA-常用插件,使用FindBugs寻找bug,代码分析的更多相关文章
- 使用FindBugs寻找bug,代码分析
安装就不说了,网上很多. 一些常见的错误信息 Bad practice 代码中的一些坏习惯 Class names should start with an upper case letter 主要包 ...
- Xcode常用技巧(1)-使用Xcode进行代码分析及GDB调试
1. 使用Xcode分析代码,分析分为静态分析及动态分析 静态分析:(Xcode-Product-Analyze) 检测代码是否有潜在的内存泄露 编译器认为不太合适的代码 运行结果: 若程序有 ...
- 常用 Java 静态代码分析工具的分析与比较
常用 Java 静态代码分析工具的分析与比较 简介: 本文首先介绍了静态代码分析的基 本概念及主要技术,随后分别介绍了现有 4 种主流 Java 静态代码分析工具 (Checkstyle,FindBu ...
- 【转载】常用 Java 静态代码分析工具的分析与比较
摘自:http://www.oschina.net/question/129540_23043常用 Java 静态代码分析工具的分析与比较 简介: 本文首先介绍了静态代码分析的基本概念及主要技术,随后 ...
- [转载] 常用 Java 静态代码分析工具的分析与比较
转载自http://www.oschina.net/question/129540_23043 简介: 本文首先介绍了静态代码分析的基本概念及主要技术,随后分别介绍了现有 4 种主流 Java 静态代 ...
- 常用Java静态代码分析工具的分析与比较
给国产静态代码检测工具Pinpoint打Call! 简介 本文首先介绍了静态代码分析的基本概念及主要技术,随后分别介绍了4种现有的主流Java静态代码分析工具 (Checkstyle,FindBugs ...
- maven常用插件配置详解
常用插件配置详解Java代码 <!-- 全局属性配置 --> <properties> <project.build.name>tools</proje ...
- idea常用插件
1. 装逼插件 1.1 activate-power-mode 其设置在菜单栏window——active-power-mode下设置颜色是否显示,窗口是否晃动等等 1.2 Backgrou ...
- sublime text 3 前端开发常用插件
sublime text 3 前端开发常用插件 https://packagecontrol.io/browse 代码对齐: Alignment html代码补全: Emmet CoffeeScri ...
随机推荐
- Unity3d网格合并
几个不同的物体,在Unity3d中可以将网格合并在一起,用于优化. 在Unity3d中构建临时场景如下:建一C#脚本名为"CombineMeshes",挂在Cube上. Combi ...
- Android 网络提交数据(使用Asynchronous Http Client)
项目主页及简单使用方法http://loopj.com/android-async-http/ 页面布局就不复制了,把主要的Activity记录下来,供自己以后使用: package com.exam ...
- DatabaseMetaData类
DatabaseMetaData类是java.sql包中的类,利用它可以获取我们连接到的数据库的结构.存储等很多信息.如: 1.数据库与用户,数据库标识符以及函数与存储过程. 2.数据 ...
- js正则匹配获取文件名
//获取文件名,不带后缀 var file_name=file_path.replace(/(.*\/)*([^.]+).*/ig,"$2"); //获取文件后缀 1.var Fi ...
- Android 自定义Android ORM 框架greenDAO数据库文件的路径
import android.content.Context; import android.content.ContextWrapper; import android.database.Datab ...
- mysqldatadir 转移
当mysql data路径与原始目录不一致时 ,请在mysql 安装目录下my-default.ini 进行设置,取消对应#注释的地址,设置新地址,保存,重新启动,即可. 从网上各种搜索啊,各种尝试, ...
- ASP.NET(Web Form)绘制图表 -- Google Chart 三部曲
ASP.NET(Web Form)绘制图表 -- Google Chart 三部曲 ASP.NET(Web Form)绘制图表 -- Google Chart 三部曲 1. 网页绘制图表 Googl ...
- 激光推送报错:APNs is not available,please check your provisioning profile and certification 和 设置别名问题 app not registed, give up set tag:
前几天,项目中用到了推送功能,就集成了激光,遇到了2个问题,就给大家分享一下, 第一个问题: 在集成的过程是按照激光的文档做的,但是最后配置完了,一运行,就打印出这么一句话, APNs is not ...
- iOS 微信和支付宝关于回调处理
在支付这一块,发现讲支付集成的比较多,但是关于支付后回调处理的不多见,(当时因为这个问题懵逼了好久)就自己总结一下, 1.支付宝回调 支付宝的回调想对来说比较简单一些,因为支付宝的回调就在调起支付宝的 ...
- [CV笔记]图像特征提取三大法宝:HOG特征,LBP特征,Haar特征
(一)HOG特征 1.HOG特征: 方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子.它通过计算和 ...