自定义、定制findbugs扫描类型,忽略指定类型

findBugs 代码静态扫描 学习笔记 配套的Bug解释模式 为了有针对性的使用这个工具,减少bug的误报,提高使用效率,我们选择了10个左右的bug模式,下面就是对这10个模式的解释。 这些bug可能会引起程序的性能或逻辑问题. 需要说明的是,findbugs能检测的bug pattern远不仅于此,甚至可以定制自己的探测器,因此,这个文档会不断扩充,同时,也欢迎大家不断探索和分享使用实践. 大的分类主要包括以 阅读详情

一、背景介绍
       
在使用findbugs对项目代码进行扫描时,默认findbugs扫描级别较高,部分可以接受bug也会被扫出来,影响项目整体扫描报告,为严重问题的排查及修改增加了难度。

二、配置findbugs忽略文件,排除文件

    排除文件findbugs-exclude-bugs.xml,文件内容如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<FindBugsFilter>
	<Match>
		<!-- 实体赋值静态变量,一般初始化时候的操作,忽略不处理-->
		<!-- Write to static field from instance method-->
		<Package name="~.*" />
		<Bug pattern="ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD" />
	</Match>

	<Match>
		<!-- 自动装箱的问题,忽略不处理-->
		<!-- Boxing/unboxing to parse a primitive excute(Object)-->
		<Package name="~.*" />
		<Bug pattern="DM_BOXED_PRIMITIVE_FOR_PARSING" />
	</Match>
	<Match>
		<!--自动装箱的问题,忽略不处理 -->
		<!-- Primitive value is boxed then unboxed to perform primitive coercion-->
		<Package name="~.*" />
		<Bug pattern="BX_BOXING_IMMEDIATELY_UNBOXED_TO_PERFORM_COERCION" />
	</Match>
	
	<Match>
		<!--装箱后拆箱紧接着装箱,忽略不处理 -->
		<!-- Boxed value is unboxed and then immediately reboxed-->
		<Package name="~.*" />
		<Bug pattern="BX_UNBOXING_IMMEDIATELY_REBOXED" />
	</Match>
	
	<Match>
		<!--过泛地捕获异常,将多个异常合并成一个父类异常捕获 ,忽略不处理-->
		<!-- Exception is caught when Exception is not thrown-->
		<Package name="~.*" />
		<Bug pattern="REC_CATCH_EXCEPTION" />
	</Match>
	<Match>
		<!--此代码包含文件对象为一个绝对路径名(路径硬编码),忽略不处理-->
		<!-- Code contains a hard coded reference to an absolute pathname-->
		<Package name="~.*" />
		<Bug pattern="DMI_HARDCODED_ABSOLUTE_FILENAME" />
	</Match>
	
	<Match>
		<!--未明确指定编码格式,使用系统默认编码格式,忽略不处理-->
		<!-- Reliance on default encoding -->
		<Package name="~.*" />
		<Bug pattern="DM_DEFAULT_ENCODING" />
	</Match>

	<Match>
		<!--get方法获取的对象,存在可能被修改的问题,忽略不处理-->
		<!--May expose internal representation by returning reference to mutable object -->
		<Package name="~.*" />
		<Bug pattern="EI_EXPOSE_REP" />
	</Match>
	
	<Match>
		<!-- set方法设置的对象存在会被修改的问题,忽略不处理-->
		<!-- May expose internal representation by incorporating reference to mutable object-->
		<Package name="~.*" />
		<Bug pattern="EI_EXPOSE_REP2" />
	</Match>
	
</FindBugsFilter>

三、idea配置findbugs忽略文件,排除文件
 首先需要在idea中添加FindBugs插件,接下来配置findBugs忽略文件:
idea -> File -> Other Settings -> Default Settings -> Other Settings -> FindBugs-IDEA -> Filter -> Exclude filter files

注:具体findbugs-exclude-bugs.xml 配置仅供参考

findbugs常见Bug以及处理办法 1、 Bug级别 根据Bug可能导致的后果,FindBugs定义了若干Bug级别,主要的级别如下所示: Bad Practice: 不好的实践 Correctness: 正确性 Experimental Internationalization: Malicious code vulnerability: 存在漏洞的有害代码 Multithreaded correctness: 多线程正确性 Performance:性能 Security:安全 Dodgy: 欺骗性代码 2、 常见Bug以及处理办法 a) 不需要处理 May expose internal representation by incorporating reference to mutable object 描述:调用set方法,修改对象属性,被修改的对象属性是一个可变的对象; May expose internal representation by returning reference to mutable object 描述:调用get方法,获得对象属性,获得的对象属性是一个可变的对象; b) 建议处理 Dead store to local variable 描述:对一个局部变量赋值,但是这个局部变量可能不会被用到; 处理方式:确认此局部变量是否会被使用,如果确实不会被用到,请去掉; ............. 立即下载

相关推荐

从理论到波形:NE555多谐振荡器设计与示波器实战验证

本文详细介绍了NE555多谐振荡器的设计原理与实战验证方法。从基础理论到电路参数计算,再到面包板搭建与示波器测量,全面解析如何利用NE555芯片实现稳定的方波输出。通过实际案例演示了频率调整、占空比优化等技巧,并提供了常见问题排查指南,帮助电子爱好者快速掌握这一经典电路设计。

weixin_29159613的博客 280

java自定义findbugs规则,FindBugs 规则整理:Performance

BX_BOXING_IMMEDIATELY_UNBOXEDPrimitive value is boxed and then immediately unboxed对原始值进行装箱,然后立即取消装箱。这可能是在一个未要求装箱的地方进行了手动装箱,从而迫使编译器进行立即撤消装箱的操作BX_BOXING_IMMEDIATELY_UNBOXED_TO_PERFORM_COERCIONPrimitive ...

weixin_39769675的博客 663

Cesium生态盘点:超图、火星3D等15个二次开发框架对比

本文深入解析Cesium生态中的15个二次开发框架,包括超图、火星3D等主流选择,帮助开发者根据项目需求进行精准选型。从性能表现、功能完备性、开发友好度等维度进行对比,特别适合需要处理地理空间数据和构建三维可视化的JavaScript开发者。

weixin_28197941的博客 497

Boxed value is unboxed and then immediately reboxed (装箱的值被拆箱又重新装箱)

FindBugs常见错误:[BX_UNBOXING_IMMEDIATELY_REBOXED] Boxed value is unboxed and then immediately reboxed;意思是:装箱的值被拆箱又重新装箱。 一、描述:装箱的值被拆箱,然后立刻重新装箱了 代码如下(示例): 常见的是三目运算时,同时存在基本类型和包装类型。 return this.isTempDrug == null ? 0 : this.isTempDrug; 解决方法: 代码如下(示例): 此问题在于isTe

Pace_mondiale的博客 8040

5个免费股票数据API实测对比:从AkShare到BaoStock,哪个最适合你的AI量化项目?

本文深度评测了AkShare、BaoStock、yfinance、Alpha Vantage和EOD Historical Data这五个免费股票数据API,从数据质量、覆盖范围、更新频率、稳定性及易用性进行对比。针对AI量化项目,文章提供了详细的选型策略,帮助开发者根据项目阶段与需求,精准选择最适合的数据源,并强调了多源验证与数据清洗的重要性。

weixin_29290947的博客 5078

Python-OPCUA 实现西门子PLC数据批量读写与自动化监控

本文详细介绍了如何使用Python结合OPC UA协议,实现对西门子PLC数据的批量读写与自动化监控。通过搭建开发环境、利用KEPserverEX作为通信桥梁,并配合Python代码实战,读者可以掌握高效的数据采集、批量写入以及构建带报警功能的监控系统的方法,从而大幅提升工业自动化场景下的数据处理效率和系统灵活性。

www00的博客 181

自动找Bug/插件-代码静态检查findbugs-idea安装以及使用

idea插件/提升效率/提高代码质量/减少bug... Findbugs是一个静态分析工具,它检查类或者JAR 文件,将字节码与一组缺陷模式进行对比以发现可能的问题。Findbugs自带检测器,其中有60余种Bad practice,80余种Correctness,1种 Internationalization,12种Malicious code vulnerability,27种Multithreaded correctness,23种Performance,43种Dodgy。

瑶山的博客 1万+

本地部署gradle

在部署CAS构建执行包时,如果按照CAS的官方命令gradlew clean build,如果系统没安装过gradle,这个步骤将会从网上下载gradle,但是进度非常慢,耗时很长。为了更快地完成项目构建,我们可以直接在本地部署好gradle,节省一点时间。

益添的博客 779

FindBugs规则整理-下

86.RV: Method ignores return value (RV_RETURN_VALUE_IGNORED) 该方法的返回值应该进行检查。这种警告通常出现在调用一个不可变对象的方法,认为它更新了对象的值。例如:String dateString = getHeaderField(name); dateString.trim(); 程序员似乎以为trim()方法将更新dateStr

dingnate的专栏 1万+

基于Multisim设计电子密码锁

一、设计任务与要求:(可软件仿真实现)1)基本要求:设计一个数字密码锁,要求只有按正确的顺序,输入正确的密码,方能输出开锁信号,实现开锁。设置三个正确的密码键和若干个伪键,任何伪键按下后,密码锁都无法打开。每次只能接受四次按键信号,而且第四个键只能是“确定”或者“重输键”,其他无效。能显示已输入键的个数2)扩展要求:第一次密码输错后,可以输入第二次,但是连续三次输错,密码将被锁,必须按复位键才能解锁。

ablinger的博客 4415

基于51单片机的简易计算器设计(原理图+仿真+源代码+参考论文)

本设计以51单片机为核心,矩阵键盘输入数字,通过1602显示屏显示计算结果,能够实现整数的加、减、乘、除四则运算,具备清除功能。

u012759563的博客 7696

从 FingBugs的错误来看JAVA代码质量(五)

REC_CATCH_EXCEPTION Bug: Exception is caught when Exception is not thrown Pattern id: REC_CATCH_EXCEPTION, type: REC, category: STYLE This method uses a try-catch block that catches Excep

a52571的博客 4590

YOLO系列算法改进 | 自研篇 | C3k2融合SEFN空间增强前馈网络模块 | 去模糊和提升图像细节特征,精度涨点!| WACV 2025

YOLO系列算法改进 | 自研篇 | C3k2融合SEFN空间增强前馈网络模块 | 去模糊和提升图像细节特征,精度涨点!| WACV 2025 (以YOLO26最新目标检测模型为基础,C3k2融合SEFN空间增强前馈网络模块改进Backbone)

2502_91881744的博客 237

maven项目集成findbugs详解

文章目录0、概述一、接入方式二、如何使用方式一、在控制台中执行打包命令方式二、使用IntelliJ IDEA的maven工具(其他IDE用户忽略)三、bug详情查看四、忽略指定的包、类、方法滤步骤一、在pom.xml中 增加配置。步骤二、增加配置文件,用于忽略指定的包、类、方法。五、参考链接: 0、概述   FindBugs是一个静态分析工具,它将字节码(因此需要先编译)与一组缺陷模式进行对比以发...

麦田里的码农 1万+

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

代码缺陷扫描神器——FindBugs

FindBugs目前,主要有三种形式使用,GUI形式、插件形式、Ant脚本形式,在这里只讲述FindBugs作为插件,在Android Studio中的应用。根据缺陷的性质,大致可以分为下列几类:分类1)Bad practice:不好的做法,代码违反了公认的最佳实践标准,比如某个类实现了equals方法但未实现hashCode方法等;2)Malicious code vulnerbility:恶意的代码漏洞;3)Correctness:可能不正确,比如错误的强制类型转换;

白帽黑客佳哥的博客 6181

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

如何使用FindBugs进行安全扫描

如何使用FindBugs进行安全扫描 前言 随着移动互联网的飞速发展,移动端产品满天飞,深入各行各业,移动端安全已经变得跟PC端安全同等重要地位。但由于移动端自身特性,移动端操作系统以及应用程序的安全性做的还不是很成熟。因此,我们在开发移动端App的时候,要尽量多地避免安全漏洞问题。本文主要是从预防的角度出发,介绍一个静态代码扫描工具,在编译阶段来提前发现代码的安全漏洞。 FindSecurityBugs简介 FindSecurityBugs是Java静态分析工具FindBugs的插件,通过一系列的规则发现

原&点、、 1184

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Idea 安装 findbugs 插件 与 代码扫描 导出 html/xml

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34115824的博客 1020

转:FindBugs,第 2 部分: 编写自定义检测器

FindBugs,第 2 部分: 编写自定义检测器如何编写自定义检测器以查找特定于应用程序的问题FindBugs 是一种可以扩展和定制以满足自己团队独特要求的静态分析工具。在本系列的第 2 部分中,高级软件工程师 Chris Grindstaff 向您展示如何创建特定于应用程序的缺陷检测器。在本系统的 第一篇文章中,我展示了如何设置和执行 FindBugs。现在我们将分析 Find

z3h的专栏,Java+Oracle...大杂烩 1851

react-admin 实时锁机制:`useLockOnCall` 手动触发记录锁 Hook 完整实战指南

`useLockOnCall` 是 react-admin [Enterprise Edition](https://link.gitcode.com/i/c7c5fd81b8855278fdb86302ab30eb2a)(企业版)`ra-realtime` 包中提供的锁编排 Hook:它不自动加锁,而是返回一个"手动加锁"的回调,调用时才会通过 `dataProvider.lock()` 锁定当

gitblog_00843的博客 1001

idea 编码扫描插件_Idea 安装 findbugs 插件 与 代码扫描 导出 html/xml

安装 然后 点击重启代码扫描界面如下 扫描 一般在需要扫描的文件夹 选中 右键 选择 findBug 中的选项 例子如上图结果如下 标记出可以到处 结果为html/xml 接下来是转的 ======= 找不到出处了 侵删1->Bad pratice编程的坏习惯主要是命名问题,比如类名最好以大写开头,字符串不要使用等号不等号进行比较,可能会有异常最好用try-catch包裹的代码,方...

weixin_39850143的博客 392

Findbugs工具的使用

一、前言 为什么我们要引入findbugs工具的使用? 代码风险控制在于日常程序开发过程中是及其终于的一环。从项目开始到结束,除了需要开发人员依据公司给出的开发规范,还要在日常的学习过程中养成良好的编程习惯。比如,每个模块编写完成后需要对应的单元测试类来进行支撑。否则,在后期维护想针对某个具体的问题进行排查,耗费的不是一星半点的时间。 由此,我们发现,代码日常管理的难点和容易忽略的地方大概有

小马哥的专栏 7070

Android代码质量检测终极指南:FindBugs与PMD实战教程

在Android应用开发过程中,代码质量检测是确保应用稳定性和可维护性的关键环节。FindBugs和PMD作为两款强大的静态代码分析工具,能够帮助开发者发现潜在缺陷,提升代码质量。本文将详细介绍如何使用这两款工具进行Android代码质量检测,让你轻松打造高质量应用。🚀 ## 什么是代码质量检测? 代码质量检测是通过静态分析技术,在不运行程序的情况下检查源代码,发现潜在的错误、代码异味和不规

gitblog_01009的博客 356

maven与findbugs的集成

今天用findbugs扫描项目,发现一个问题: MS_MUTABLE_ARRAY, Priority: High com.aa.bb.common.Constants.ARRAY_RUNNING_KING_SYSTEM_MESSAGE_DAY is a mutable array 由于不想修改类,只希望findbugs能够忽略他,于是有了如下的了解和学习。 1.在pom.xml加入fin

3243

use FindBugs for Java static code checking

        系统因为一个潜伏的bug发作而crash。在除掉这个已暴露的bug之后,为防止类似的但还未暴露的bug使系统再次崩溃,按普遍的做法,是由开发人员去检查每一行代码,找出其中隐藏的bug,这无疑成了每一个Develper的梦魇。而对系统来讲,以人工检查的进度,要么只能等待检查完毕后再上线,要么就无法保障上线后的稳定度。能不能有一种工具,可以帮助开发人员完成代码的检测,快速的发现其中深藏

i love this game 1571
上一篇: Mysql 开启主从复制实战笔记
下一篇: spring MVC 请求中文乱码问题排查详解
TimerBin
博客等级 码龄12年 54粉丝 119原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值