FindBugs EI_EXPOSE_REP EI_EXPOSE_REP2

Java中关于返回引用可变对象常见问题剖析 前言在工程中,我们创建了一个类,经常包含一些可变类的对象实例,当我们需要提取这些数据的时候,需要格外注意,否则会出一些意料之外的问题正文名词解释可变对象:类中有方法可以改变其对象的类 举例假设我们有一个example类,其中为Date类创建了一个实体birthday,在外部需要知道某个example类实例的birthday值时,会使用到getBirthday()方法,通常我们的getBirthday 阅读详情
提示信息:

EI: May expose internal representation by returning reference to mutable object (EI_EXPOSE_REP)
Returning a reference to a mutable object value stored in one of the object’s fields exposes the internal representation of the object. If instances are accessed by untrusted code, and unchecked changes to the mutable object would compromise security or other important properties, you will need to do something different. Returning a new copy of the object is better approach in many situations.
EI:可以通过返回对可变对象的引用来公开内部表示
返回对存储在对象的一个​​字段中的可变对象值的引用会公开对象的内部表示。如果不受信任的代码访问实例,并且对可变对象的未经检查的更改会危及安全性或其他重要属性。在许多情况下,返回对象的新副本是更好的方法。

原代码:
    /**
     * 获取:创建时间
     */
    public Date getGmtCreate() {
        return gmtCreate;
    }
修改后代码:
    /**
     * 获取:创建时间
     */
    public Date getGmtCreate() {
        if (this.gmtCreate != null) {
            return new Date(this.gmtCreate.getTime());
        } else {
            return null;
        }
    }
提示信息:

EI2: May expose internal representation by incorporating reference to mutable object (EI_EXPOSE_REP2)
This code stores a reference to an externally mutable object into the internal representation of the object. If instances are accessed by untrusted code, and unchecked changes to the mutable object would compromise security or other important properties, you will need to do something different. Storing a copy of the object is better approach in many situations.
EI2:可以通过引用可变对象来公开内部表示
此代码将对外部可变对象的引用存储到对象的内部表示中。如果不受信任的代码访问实例,并且对可变对象的未经检查的更改会危及安全性或其他重要属性。在许多情况下,存储对象的副本是更好的方法。

原代码:
    /**
     * 设置:创建时间
     */
    public void setGmtCreate(Date gmtCreate) {
        this.gmtCreate = gmtCreate;
    }
修改后代码:
    /**
     * 设置:创建时间
     */
    public void setGmtCreate(Date gmtCreate) {
        if (gmtCreate != null) {
            this.gmtCreate = (Date) gmtCreate.clone();
        } else {
            this.gmtCreate = null;
        }
    }

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 描述:对一个局部变量赋值,但是这个局部变量可能不会被用到; 处理方式:确认此局部变量是否会被使用,如果确实不会被用到,请去掉; ............. 立即下载

相关推荐

findbugs:may expose internal representation by returning

NULL 博文链接:https://futeng.iteye.com/blog/1833449

Findbugs修改总结

Findbugs修改总结

linsa_pursuer的博客 5807

PDMS二次开发入门:手把手教你用PML2写第一个交互式窗体工具

本文详细介绍了如何使用PML2进行AVEVA PDMS二次开发,从零开始构建交互式窗体工具。通过PML2语言的面向对象特性、即时调试能力和深度系统集成优势,开发者可以高效创建自动化设计工具、批量修改属性和定制报表系统。文章包含开发环境配置、基础语法、窗体架构设计、事件处理等实战内容,帮助读者快速掌握PDMS二次开发技能。

weixin_29281941的博客 271

Findbugs中的BUG:May expose internal representation by returning reference to mutable object 引发问题说明

在使用IDEA的findbugs的插件检测model层类的时候发生如下错误: May expose internal representation by returning reference to mutable object Returning a reference to a mutable object value stored in one of the object's field...

北辰之北灬的博客 1万+

【STM32G474实战】RS485通信的DMA优化策略与性能对比

本文深入探讨了在STM32G474微控制器上优化RS485通信的DMA策略。通过对比轮询、中断和DMA三种数据传输方式的代码实现与性能,揭示了DMA在解放CPU、降低占用率方面的巨大优势。文章提供了详细的DMA配置指南、高级应用技巧(如结合空闲中断)以及一个高可靠通信框架的实战思路,旨在帮助开发者构建高效、实时的工业控制系统。

weixin_29268331的博客 300

从零搭建Simulink-Adams联合仿真平台:实现电机转速的精准闭环控制

本文详细介绍了从零搭建Simulink-Adams联合仿真平台的完整流程,旨在实现电机转速的精准闭环控制。通过将Simulink的控制算法与Adams的物理模型相结合,构建了一个包含真实机械效应的数字孪生系统。文章涵盖了Adams物理模型构建、接口定义、Simulink控制闭环搭建、PID参数调试以及常见避坑指南,为机电系统仿真提供了实用的工程实践指导。

weixin_29189373的博客 152

FindBugs

1、EI_EXPOSE_REP 和 EI_EXPOSE_REP2

墨咖 266

超简单的视频换脸,效果相当不错!完全白嫖的技术,来自ComfyUI 官方客户端一键搞定!手把手教会你如何下载安装部署,而且教你如何使用。

如果你电脑上没有安装Visual Studio的C++桌面开发组件,还有Windows应用SDK C++模板,那么你需要自行去下载安装下【安装后默认界面会自动识别系统语言,当然如果你是中文繁体用户,那么你可以在 ComfyUI 的管理器里下载。】并把它放入根目录-models-insightface文件夹内 , 同时下载视频换脸工作流 【分享手把手教你视频换脸,本地部署,轻轻松松当上“电影主角”】,否则insightface无法被正常载入。) 这是换脸必备的工具 ,安装后重启;

TianLeung的博客 2851

findBug常见错误以及修改方法

findbugs:EI_EXPOSE_REP 问题描述:may expose internal representation by returning getter方法返回引用类型 eclipse自动生成的引用类型(Object、数组、Date等)的getter、setter方法会得到或通过对可变对象的引用操作而暴露代码内部实现,解决方法很多,只要返回的或赋值的对象不是原引用对象即可。 # Date public Date getHappenTime() { if(happenTime != null.

Michelle-q 1866

第1章>>1.5:神电测控为什么开发LabVIEW ZYNQ FPGA软件工具包?(ZYNQ芯片的特点与优势)《LabVIEW ZYNQ FPGA宝典》

ZYNQ是赛灵思公司(Xilinx)推出的新一代全可编程片上系统(APSoC,All-Programmable SoC),它将处理器的软件可编程性与FPGA的硬件可编程性进行完美整合,以提供无与伦比的系统性能、灵活性与可扩展性。Zynq-7000系列是Xilinx于2010年4月推出的行业第一个可扩展处理平台,旨在为视频监视、汽车驾驶员辅助、工厂自动化、医疗器械等高端嵌入式应用提供所需的处理能力与计算性能。这款基于ARM处理器的SoC可满足复杂嵌入式系统的高性能、低功耗和多核处理能力等要求。

qq_40694786的博客 1646

手搓ZLMediaKit实现拉流推流系列3(RK3588上YOLO系列拉流、MPP解码+编码、推流全流程)

 前段时间比较忙,一直没有时间补充后续的内容。今天终于抽出空来,立马进入码字环节:手搓ZLMediaKit实现拉流推流系列在本篇也终于迎来了完结篇,在本篇文章中,你将看到以下一整套完整流程:使用ZLMediaKit拉流---MPP解码---Yolo模型进行推理---MPP编码并推流。

m0_46303486的博客 2172

spotbugs导出html,spotbugs~lombok生成的Date属性引起的EI_EXPOSE_REP问题

EI_EXPOSE_REP是spotbugs,findbugs里通过代码分析抛出来的代码安全性问题,[emailprotected],没有检查它是否为空,这块我们有两种解决方案,第一种是手写Date类型的字段的Getter方法;第二种是安装com.google.code.findbugs:findbugs包,[emailprotected],把这种问题忽略,我们介绍一下这两种方法。第一种重写它...

weixin_42377196的博客 1565

【项目典型案例】-2-任意帧/特定帧CAN唤醒对ECU首帧/启动时间的影响

任意帧/特定帧CAN唤醒对ECU启动时间的影响

「汽车电子助手」的博客 1941

jenkins中findbugs对某些类ignore

1.在build.sh的shell脚本添加如下命令:加粗字体为忽略的findbugs的错误 findbugs -exclude exclude_filter.xml -textui -output output/findbug-result.xml . 2.编写exclude_filter.xml 格式如下: package代表的包名,这个貌似不起作用 class具体的类名 bug具体出现的错误提示 <?xml version="1.0" encoding="UTF-8"?>..

麦子的博客 601

二、TCP/IP协议之网络层(IP地址的格式、分类、报文格式)

数据报每经过一个路由器,路由器都要重新计算一下首部检验和,若首部未发生变化,则此结果必为 0,于是就保留这个数据报。对于网络号相的设备,无论实际所处的物理位置如何,它们都是处在同一个网络中。在首部的固定部分的后面是一些可选字段,其长度是可变的。IPv4 软件在存储器中维持一个计数器,每产生一个数据报,计数器就加 1,并将此值赋给标识字段。表示数据报在网络中的寿命,英文缩写是 TTL(Time To Live),功能是“跳数限制”。地址的网络号码字段用来标识一个网络,网络号码字段的前几位用来区分。

锦慈的技术博客 184

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

[findbug]Bug type EI_EXPOSE_REP2

[findbug]Bug type EI_EXPOSE_REP2问题解决,大概意思就是OldFileBodyUtil(byte[],String)可以通过将外部可变对象存储到OldFileBodyUtil.text中来公开内部表示,在许多情况下,存储对象的副本是更好的方法。这里是重写了FileBody,使用httpClient上传文件流。

杰子书书--Jiezisss 847

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

[hyddd的FindBugs分析记录][M V EI2] May expose internal representation by incorporating reference to mutab

[M V EI2] May expose internal representation by incorporating reference to mutable object [EI_EXPOSE_REP2] This code stores a reference to an externally mutable object into the internal representatio...

u012045045的博客 998

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

FindBugs Warnings 警告类型文档

FindBugs Warnings 警告类型文档 一、 Type : EI_EXPOSE_REP Category:MALICIOUS_CODE(恶意程序代码) 描述:may exposeinternal representation by returning getter方法返回...

chuangchusu3738的博客 313

findbugs 相关

文章目录0. 当遇到系统中允许该bug出现,但是fingbugs不过时,解决办法1. 首先配置排除bug的xml文件2. 在pom.xml指定该配置文件的路径1. Bug kind and pattern: NP - NP_GUARANTEED_DEREF_ON_EXCEPTION_PATH翻译代码示例产生原因解决办法2. Bug kind and pattern: NP - NP_NULL_ON_SOME_PATH翻译代码示例产生原因解决办法3. Bug kind and pattern: ES - ES

YTREE_BJ的博客 5896

Findbugs maven 插件使用

Findbugs maven 插件使用 FindBugs™手册 http://findbugs.sourceforge.net/manual/index.html 0、概述 FindBugs是一个静态分析工具,它将**字节码(因此需要先编译)**与一组缺陷模式进行对比以发现可能的问题。有了静态分析工具,就可以在不实际运行程序的情况对软件进行分析。简而言之,FindBugs其实就是对编译后的class进行扫描,藉以发现一些隐藏的bug。比较典型的,如引用了空指针(null pointer), 特定的资源(

ym & blog 1427

【java findbugs集锦】【转】May expose internal representation by incorporating reference to mutable object...

[hyddd的FindBugs分析记录][M V EI2] May expose internal representation by incorporating reference to mutable object [M V EI2] May expose internal representation by incorporating reference to muta...

weixin_30810583的博客 212

FindBugs 恶意代码(may expose internal representation),序列化(defines non-transient non-serializable )错误解决方法

eclipse插件FindBugs各种bug描述及解决方法 1 )原代码如下: protected String[] a = null; public void test(String[] str){     this.a = str; } findbugs描述为: This code stores a reference to an externally mutable obj

喵星人 2万+

FindBugs错误描述和解决方法

FindBugs常见错误描述和解决方法 (一) [DLS_DEAD_LOCAL_STORE] 描述: Dead store to 未使用的局部变量 解决方法:局部变量定义后未使用;实例化对象后又重新对该对象赋值 (二) [ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD]  描述:Write to static field 通过实例方法

喵星人 2万+

Maven 工程添加 findbugs 插件

pom.xml 添加插件plugin<build> <plugins> <!-- findbugs插件 --> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>findbugs-maven-plugin</artifactId>

小单的博客专栏 9374

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

一、背景介绍         在使用findbugs对项目代码进行扫描时,默认findbugs扫描级别较高,部分可以接受bug也会被扫出来,影响项目整体扫描报告,为严重问题的排查及修改增加了难度。 二、配置findbugs忽略文件,排除文件     排除文件findbugs-exclude-bugs.xml,文件内容如下所示: &lt;?xml version="1.0" encoding...

TimerBin的博客 4084
上一篇: 第七天 JQuery基础教程
下一篇: SpringBoot定期执行任务
风沐流萤
博客等级 码龄14年 31粉丝 11原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值