77范文网 - 专业文章范例文档资料分享平台

findbugs检测提示详解(2)

来源:网络收集 时间:2019-01-07 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

13、Method concatenates strings using + in a loop

在循环里使用字符串连接,效率低,应该使用StringBuilder/StringBuffer

例:

String writeData = \

for (int i = 0; i < 10; i++) { writeData = writeData + \}

14、Method may fail to close database resource

没有释放数据库资源

public ResultSet callProcedure(String procedure) { Session ses = getSessionForUpdate(); ResultSet rs = null; try {

Connection conn = ses.connection(); conn.setAutoCommit(false);

CallableStatement statement = conn.prepareCall(procedure); //may fail to close CallableStatement rs = statement.executeQuery(); conn.commit();

} catch (Exception e) { e.printStackTrace(); } finally { try {

ses.close();

} catch (SQLException e) { throw e; } }

return rs; }

应当修改为:

public ResultSet callProcedure(String procedure) { Session ses = getSessionForUpdate(); ResultSet rs = null;

CallableStatement statement = null; try {

Connection conn = ses.connection(); conn.setAutoCommit(false);

statement = conn.prepareCall(procedure);

rs = statement.executeQuery(); conn.commit();

} catch (Exception e) { e.printStackTrace(); } finally { try {

statement.close(); ses.close();

} catch (SQLException e) { e.printStackTrace(); }

}

return rs; }

15、Method may fail to close stream

没有关闭流,可能会导致文件描述符泄露,应该在finally中关闭 例:

try {

FileInputStream in = new FileInputStream(file);

InputStreamReader inputStreamReader = new InputStreamReader(in); BufferedReader reader = new BufferedReader(inputStreamReader); //...

in.close();

inputStreamReader.close(); reader.close();

} catch (IOException e) {

} 修改为:

FileInputStream in = null;

InputStreamReader inputStreamReader = null; BufferedReader reader = null; try {

in = new FileInputStream(file);

inputStreamReader = new InputStreamReader(in); reader = new BufferedReader(inputStreamReader); // ...

} catch (IOException e) {

} finally { try {

in.close();

} catch (IOException e) { e.printStackTrace(); } try {

inputStreamReader.close(); } catch (IOException e) { e.printStackTrace(); } try {

reader.close();

} catch (IOException e) { e.printStackTrace(); } }

16、Method might ignore exception

This method might ignore an exception. In general, exceptions should be handled or reported in some way, or they should be thrown out of the method.

应该将异常 处理、打印或者抛出 反例:

try {

//...

} catch (Exception e) { }

17、Class defines non-transient non-serializable instance field readerTypeInfo

一个实现了Serializable接口的类,含有非transient 和非serializable 的实例对象域。

This Serializable class defines a non-primitive instance field which is neither transient, Serializable, or java.lang.Object, and does not appear to implement the Externalizable interface or the readObject() and

writeObject() methods. Objects of this class will not be deserialized correctly if a non-Serializable object is stored in this field.

18、Nullcheck of value previously dereferenced

前面获取的对象,现在引用的时候没有交验是否为null 反例:

Reader reader = null; try {

reader = this.getReaderByName(readerBasicInfo.getByName()); } catch (Exception e1) { e1.printStackTrace();

return ReaderStateConst.FAIL; }

DependenceRelation dependenceRelation = new DependenceRelation(); dependenceRelation.setDescription(reader.getIpAddress()); // 使用前没有做null校验

19、Possible null pointer dereference

可能存在的空引用

capInfo = wrapper.wrapperToClient((ReaderCapabilities) object);

try {

if (capInfo != null) { transactionDs

.saveReaderCapabilityCom((ReaderCapabilities) object); }

} catch (RuntimeException e) {

capInfo.setDetailMsg(ReaderStateConst.DB_OPT_FAIL); return capInfo; }

capInfo.setDetailMsg(ReaderStateConst.SUCCESSFUL); //capInfo可能为null

20、引用前需要做空校验

public synchronized void remove(String batNo, int count) { List taskList = commandMap.get(batNo);

synchronized (taskList) { //使用前需要作null check //... } }

21、Possible null pointer dereference in method on exception path

List districts = null; try {

districts = this.getDistricts(ReaderConst.DESC); } catch (Exception e) { e.printStackTrace(); }

if (start >= districts.size()) { //districts 可能是null tableData.setTotalCount(0); return tableData; }

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库findbugs检测提示详解(2)在线全文阅读。

findbugs检测提示详解(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/409688.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: