使用findbugs检查你的返回值-java开发java经验技巧

使用findbugs检查你的返回值-java开发java经验技巧

ID:27800627

大小:57.50 KB

页数:6页

时间:2018-12-06

使用findbugs检查你的返回值-java开发java经验技巧_第1页
使用findbugs检查你的返回值-java开发java经验技巧_第2页
使用findbugs检查你的返回值-java开发java经验技巧_第3页
使用findbugs检查你的返回值-java开发java经验技巧_第4页
使用findbugs检查你的返回值-java开发java经验技巧_第5页
资源描述:

《使用findbugs检查你的返回值-java开发java经验技巧》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、使用FindBugs检查你的返回值-Java开发Java经验技巧使用FindBugs检查你的返回值木文由ImportNew・唐尤华翻译自blog.trifork.como欢迎加入翻译小组。转载请见文末要求。有一天我在写代码时犯了一个愚蠢的错误,花了羌不多一个小时才搞定。我们都可能遇到这种情况,最后归咎丁•睡眠不好、头疼或者英他因素比如邻桌的同时在整天写哼着Gotye的“我认识的某人”(也许你听说过这首歌)让你无法集中精力写代码诸如此类。不管实际情况如何,下面就是我当时遇到的错误://如果finishedTcst是一场考试或者//practiceTest,转到下一章节或段落getNextCh

2、apterParagraph(chapters,taskContentldentifier);if(taskContentldentifier二二null)returnnull;returnnewTask(taskContentTdentifier,Type.ASSESSMENT);getNextChapterParagraph()函数实现如卜:/***根据当前章节或短乱列表返冋下一段或章节内容*/privateContentidentifiergetNextChapterParagraph(List〈Chaptcr>chapters,ContentIdentifiercontentIde

3、ntifier){//这里进行一些处理.••••returnnewContentIdentifier(chapter.getStream().getld(),chapter.getContentld(),paragraph.getConlentTd());},这里为了简化我略过了一些代码,但是我相信一些人已经发现了错误。getNextChapterParagraph()方法的对传入的第二个参数ContentIdentifier没有进行修改,而是直接返冋了一个新实例。然而我写的代码确信已经更新了taskContentldentifier的状态。天哪!一个更插件的情况是在不可改变的对象上调用方

4、法,像是Stringo下面是一个示例:Stringstring="thisisatest";string,substring(10);//糟糕!当然,你可以在单元测试中捕捉到这些错误,这也是我第一次发现此类错误的地方。但是为什么不能在犯错的同时就立刻发现呢?错在何处?上面的代码究竟错在何处??简而言Z:getNextChapterParagraph(和String,substring)方法的唯一目的就是返冋值,它并没有改变作为参数传入的对象状态。换句话说,它Y轴发生其他作用。因此,如果调用该方法我们应该会要对返回值傲些茂变;否则我们为什么要调用它?(当然冇一种情况例外,我会在后面讨论到)在

5、我们调用了一个没有产生作用的函数时,我们希槊编译器或者其他工具能够给出警告并丢弃返回值。解决的办法应该包含两部分:1.标记岀没有起作用的函数?(也许静态代码分析町以确定方法是否没冇起作川,但是那不是木文讨论的内容)2.在没有起作用的函数调用时给出警告并丢弃返回值(也就是说,没有赋值给变量,没有用于表达式和没有传递给其他函数)解决错误:FindBugS和@CheckReturnValue或许你可能熟悉FindBugs,这款代码分析工具恰好能够满足这样的要求。接下来我会继续介绍在Eclipse中如何设置FindBugSo首先,针对我们的问题:可以使用?@CheckReturnValue注解。简

6、单的说@CheckReturnValue会标记没右起作用的函数。当FindBugs检查到一个函数调用返冋值被丢弃时会给出警告。要使用?@CheckReturnValue?你需要在classpath上添加findbugs-annotations.jaroMaven用户口J以在POM依赖关系里添加下面的依赖:findbugsannotationsl.0.0〈/version>调用@ChcckRcturnValuc的示例如下:packagen

7、l.trifork,examples,checkreturnvalue;importedu.umd.cs.findbugs,annotations.CheckReturnValue;publicclassStringHelper{@CheckReturnValuepublicStringshift(Stringstr){if(str.length()<2)returnstr;returnstr.substring(l)+

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。