广告
返回顶部
首页 > 资讯 > 精选 >如何在IDEA中使用FindBugs插件
  • 899
分享到

如何在IDEA中使用FindBugs插件

2023-06-14 07:06:52 899人浏览 泡泡鱼
摘要

本篇文章为大家展示了如何在idea中使用FindBugs插件,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。安装 安装完之后,重启studio,会发现左下角会出现findbugs的图标可以分

本篇文章为大家展示了如何在idea中使用FindBugs插件,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

安装 

如何在IDEA中使用FindBugs插件

如何在IDEA中使用FindBugs插件

如何在IDEA中使用FindBugs插件

安装完之后,重启studio,会发现左下角会出现findbugs的图标

如何在IDEA中使用FindBugs插件

可以分析单个文件,包下面的所有文件,整个module下的文件,整个project下的文件,右键想要分析的文件名/包名/module名/project

如何在IDEA中使用FindBugs插件

分析完之后就会出现结果面板

如何在IDEA中使用FindBugs插件

点击对应的item在右边会定位到具体的代码

如何在IDEA中使用FindBugs插件

根据需要可以进行更改,其中Correctness这个错误使我们重点关注的对象,这里大多是空指针的错误,根据提示进行处理。

附:一些常见的错误信息

Bad practice 代码中的一些坏习惯

Class names should start with an upper case letter 主要包括类名的命名,以大写字母开头
Method names should start with a lower case letter 方法名以小写字母开头
Field names should start with a lower case letter 字段名以小写字母开头
equals()method does not check for null argument equals()方法应该检查非空
Class defines equals() and uses Object.hashCode() 一个类覆写了equals方法,没有覆写hashCode方法,使用了Object对象的hashCode方法
Method ignores exceptional return value 方法忽略返回值的异常信息
Equals method should not assume anything about the type of its argument equals(Object o)方法不能对参数o的类型做任何的假设。比较此对象与指定的对象。当且仅当该参数不为 null,并且是表示与此对象相同的类型的对象时,结果才为 true。
Comparison of String objects using == or != 用==或者!=去比较String类型的对象
Method might ignore exception 方法可能忽略异常
Method invokes System.exit() 在方法中调用System.exit(…)语句,考虑用RuntimeException来代替
Method ignores result of InputStream.read() InputStream.read方法忽略返回的多个字符,如果对结果没有检查就没法正确处理用户读取少量字符请求的情况。

Dodgy code 糟糕的代码

Switch statement found where default case is missing Switch没有默认情况下执行的case语句
Switch statement found where one case falls through to the next case Switch语句中一个分支执行后又执行了下一个分支。通常case后面要跟break 或者return语句来跳出。
Dead store to local variable 该指令为局部变量赋值,但在其后的没有对她做任何使用。通常,这表明一个错误,因为值从未使用过。
Write to static field from instance method 在实例方法写入静态字段
Redundant nullcheck of value known to be non-null 方法中对不为空的值进行为空的判断。
Method uses the same code for two branches 此方法使用相同的代码,以实现两个有条件的分支。检查以确保这是不是一个编码错误
Exception is caught when Exception is not thrown 在try/catch块中捕获异常,但是异常没有在try语句中抛出而RuntimeException又没有明确的被捕获
Integral division result cast to double or float 整形数除法强制转换为double或者float类型。
Possible null pointer dereference due to return value of called method 方法的返回值没有进行是否为空的检查就重新赋值,这样可能会出现空指针异常。
Useless object created 对象创建了并没有用
Unread public/protected field 没有用到的字段
Internationalization 关于代码国际化相关方面的

Consider using Locale parameterized version of invoked method
使用平台默认的编码格式对字符串进行大小写转换,这可能导致国际字符的转换不当。使用以下方式对字符进行转换

PerfORMance 关于代码性能相关方面的

Boxing/unboxing to parse a primitive 类型转换 比如字符串转换成int 应该使用Integer.parseInt(“”) 代替Integer.valueOf(“”)
Method concatenates string using + in aloop
每次循环里的字符串+连接,都会新产生一个string对象,在java中,新建一个对象的代价是很昂贵的,特别是在循环语句中,效率较低
解决办法:使用StringBuffer或者StringBuilder重用对象。
Private method is never called 私有方法没有被调用
Explicit garbage collection;extremely dubious except in benchmarking code
在代码中显式的调用垃圾回收命名,这样做并不能起作用。在过去,有人在关闭操作或者finalize方法中调用垃圾回收方法导致了很多的性能浪费。这样大规模回收对象时会造成处理器运行缓慢。
Unread field:should this field be static? 没有用到的static 字段
should be a static inner class 此内部类应该使用static修饰

Experimental

Method may fail to clean up stream or resource on checked exception
这种方法可能无法清除(关闭,处置)一个流,数据库对象,或其他资源需要一个明确的清理行动
解决方法:流的关闭都写在finally里面
Malicious code vulnerability 关于恶意破坏代码相关方面的

May expose internal representation by incorporating reference to mutable object
此代码把外部可变对象引用存储到对象的内部表示。如果实例受到不信任的代码的访问和没有检查的变化危及对象和重要属性的安全。存储一个对象的副本,在很多情况下是更好的办法。
Field isn't final but should be 此字段前应该加final
Field isn't final and can't be protected from malicious code 此字段前应该加final
Field should be package protected
一个静态字段是可以被恶意代码或其他的包访问修改。可以把这种类型的字段声明为final类型的以防止这种错误。

Multithreaded correctness 关于代码正确性相关方面的

Static DateFormat DateFormat 在多线程中本身就是不安全的,如果在线程范围中共享一个DateFormat的实例而不使用一个同步的方法在应用中就会出现一些奇怪的行为。
Call to static DateFormat DateFormats多线程使用本事就是不安全的,改进方法:需要创建多实例或线程同步

Correctness 关于代码正确性相关方面的

Nullcheck of value previously dereferenced 此代码之前废弃null值检查。解决办法 进行null检查
Possible null pointer dereference 可能为null
Null pointer dereference 对象赋为null值后 没有被重新赋值
Possible null pointer dereference in method on exception path 在异常null值处理分支调用的方法上,可能存在对象去除引用操作
value is null and guaranteed to be dereferenced on exception path exception分支上,存在引用一个null对象的方法,引发空指针异常。
Self comparison of value with itself 方法中对一个局部变量自身进行比较运算,并可说明错误或逻辑错误。请确保您是比较正确的事情。
An apparent infinite recursive loop 明显的无限迭代循环,将导致堆栈溢出.

上述内容就是如何在IDEA中使用FindBugs插件,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程网精选频道。

--结束END--

本文标题: 如何在IDEA中使用FindBugs插件

本文链接: https://www.lsjlt.com/news/269142.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何在IDEA中使用FindBugs插件
    本篇文章为大家展示了如何在IDEA中使用FindBugs插件,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。安装 安装完之后,重启studio,会发现左下角会出现findbugs的图标可以分...
    99+
    2023-06-14
  • IDEA插件FindBugs的使用详解
    前言 Findbugs很多人都并不陌生,Eclipse中有插件可以帮助查找代码中隐藏的bug,IDEA中也有这款插件。这个插件可以帮助我们查找隐藏的bug,比较重要的功能就是查找...
    99+
    2022-11-11
  • IDEA如何使用Docker插件
    这篇文章主要介绍了IDEA如何使用Docker插件,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。说明之前docker的学习,包括镜像拉取,容器创建等操作都需要自己手动敲命令来...
    99+
    2023-06-20
  • idea中lombok插件使用
    lombok插件减少实体类中的getter/setter方法的编写,让实体类变得简洁。 在Settings->Plugins中选择Browse repositories 安装之后重启idea。 在maven工程中依赖...
    99+
    2023-10-26
    intellij-idea java
  • idea在springboot中怎么使用lombok插件
    这篇文章主要讲解了“idea在springboot中怎么使用lombok插件”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“idea在springboot中怎么使用lombok插件”吧!在id...
    99+
    2023-06-20
  • springboot2如何使用activiti6 idea插件
    这篇文章给大家分享的是有关springboot2如何使用activiti6 idea插件的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Activiti BPMN visualizer插件import&n...
    99+
    2023-06-29
  • idea 在springboot中使用lombok插件的方法
    在idea中添加lombok插件 选择 file-->setting--->plugins  搜索lombok  并安装插件后重启idea 使用Lo...
    99+
    2022-11-12
  • 如何在Idea插件中快速JSON转对象
    如何在Idea插件中快速JSON转对象,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。在开发中,经常会有这样的场景,给一个 JS...
    99+
    2022-10-19
  • Spring Boot在开发过程中常用IDEA插件
    目录一、Codota二、AutofillingJavacallarguments三、GsonFormat四、RainbowBrackets五、MavenHelper六、Keyprom...
    99+
    2022-11-13
  • 如何在IOS中使用Cordova插件
    目录一、准备1:创建插件2:添加IOS平台3:创建package.json文件二、过程最后Cordova项目调用插件一、准备 插件功能:打开IOS相机 1:创建插件 plugman ...
    99+
    2022-05-23
    IOS Cordova 插件
  • IDEA中安装和使用Lombok插件的方法
    背景 我们在开发过程中,通常都会定义大量的JavaBean,然后通过IDE去生成其属性的构造器、getter、setter、equals、hashcode、toString方法,当要...
    99+
    2022-11-12
  • Lombok在idea中如何使用
    这篇文章主要讲解了“Lombok在idea中如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Lombok在idea中如何使用”吧!一、什么是lombok  &nbs...
    99+
    2023-07-05
  • idea中maven无法解析插件如何解决
    当Maven无法解析插件时,可以尝试以下几种解决方法:1. 检查插件的版本:确保插件的版本号是正确的,并且与你项目中的其他依赖版本兼...
    99+
    2023-08-25
    idea maven
  • idea中mapper如何快速跳转到xml插件
    目录idea mapper快速跳转到xml插件idea中mapper跳转到xml的插件最新总结idea mapper快速跳转到xml插件 1.进入settings界面 2. 安装选...
    99+
    2023-05-20
    idea mapper跳转xml idea mapper idea mapper跳转xml插件
  • 如何在Android应用中使用Jenkins插件
    今天就跟大家聊聊有关如何在Android应用中使用Jenkins插件,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一、Jenkins插件功能介绍Jenkins任务列表图1、jenki...
    99+
    2023-05-31
    android roi jenkins
  • Debug如何在Intellij IDEA中使用
    本篇文章给大家分享的是有关Debug如何在Intellij IDEA中使用,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Debug用来追踪代码的运行流程,通常在程序运行过程中出...
    99+
    2023-05-31
    intellij idea debug
  • Subversion插件如何利用Intellij IDEA 实现配置
    本篇文章为大家展示了Subversion插件如何利用Intellij IDEA 实现配置,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Intellij IDEA 配置Subversion插件实现步骤...
    99+
    2023-05-31
    intellij idea subversion
  • idea中acitviti使用acitBPM插件出现乱码怎么办
    这篇文章主要介绍了idea中acitviti使用acitBPM插件出现乱码怎么办,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1.问题描述如下图所示,创建bpmn文件输入中文...
    99+
    2023-06-15
  • 怎么使用IDEA中的Redis插件连接Redis服务器
    本篇内容主要讲解“怎么使用IDEA中的Redis插件连接Redis服务器”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用IDEA中的Redis插件连接Redis服务器”吧!IDEA中的Re...
    99+
    2023-07-05
  • 如何在IDEA中使用JetBrains Mono字体
    如何在IDEA中使用JetBrains Mono字体?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。概览JetBrains Mono字体是v2019.3版本及之后支持的,这些...
    99+
    2023-06-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作