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

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

软件&&安装 额外说明

收录于:93天前

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

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

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

第一步,下载插件,在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
 

. . .

相关推荐

额外说明

超实用的微信图片转换工具

之前电脑端微信聊天图片都能打开直接看,现在历史图片都是加密的dat格式。  做了一个转换工具,可以一键进行转换,很方便。 目录 一、工具下载 二、使用方法 (1)打开文件夹

额外说明

Linux使用yum命令安装JDK

安装步骤 1、使用yum search 查找JDK yum search java|grep jdk 2、使用yum install安装JDK yum install java-1.8.0-openjdk-devel.x86_64 查看安装结果: j

额外说明

spring模仿dubbo自定义schema解析并注入容器

dubbo里边有很多如provider、consumer、registry的配置都是通过spring自定义Schema来实现的,模仿写一个demo来加深记忆。 步骤如下 编写定义java bean 编写xsd配置文件 编写spring.handlers和

额外说明

苏州拙政园旅游出行攻略

购票 出行前,网上攻略过,说要提前预约买票,实际上排队的时候扫码就ok,最好不要在非官方的地方购票 驾车 拙政园附近很拥挤,考验车技 推荐停车地点:东汇公园换乘停车场(姑苏区三四个小时15元这样),停车之后,停车场负二楼,就有通道(步行),比上地面做公交

额外说明

[Ext JS]5.8 Group Grid-分组网格

分组网格及其效果 分组Grid, 是以数据中的某一个属性对数据进行分组, 以上图为例, 对三国的武将列表以国家进行分组。 分组Grid的效果是: 每个分组会新增一行组的显示 该分组的属性一般不需要以列进行显示 分组网格的实现 Ext JS 原生就提供了分

额外说明

Java学习笔记:文件通道(FileChannel)

文章目录 一、文件通道 (一)概述 (二)继承关系 (三)常用方法 二、案例演示 1、创建Java项目 - FileChannelDemo 2、创建FileChannelDemo类 (1)编写testWrite()方法 (2)编写testRead()方法

额外说明

Junit单元测试

文章目录 概念 使用 引入坐标 测试步骤 判定结果 org.junit.Assert常用方法 assertEquals ( [String message] , expected , actual ) assertEquals( [String mess

额外说明

八、Web应用模式

8.1、web应用模式 在开发Web应用中,有两种应用模式: 前后端不分离[客户端看到的内容和所有界面效果都是由服务端提供出来的。 前后端分离【把前端的界面效果(html,css,js分离到另一个服务端,python服务端只需要返回数据即可)】 前端形成

额外说明

Docker【部署 05】docker使用tensorflow-gpu安装及调用GPU踩坑记录

tensorflow-gpu安装及调用GPU踩坑记录 1.安装tensorflow-gpu 2.Docker使用GPU 2.1 Could not find cuda drivers 2.2 was unable to find libcuda.so D

额外说明

中视频无脑搬砖训练:无需写文案,纯视频剪辑搬运,就能获取收益!

标题:创意视频编辑指南:无脑编辑技巧快速获利! 随着短视频平台的兴起,越来越多的人开始意识到视频剪辑的潜力。在众多的视频剪辑方式中,无脑剪辑、转接成为了快速获取利润的一种方式。本文将为大家重新探讨创意视频编辑。通过简化写作流程,专注于纯粹的视频编辑和处理

ads via 小工具