我们正在尝试将我们非常大的代码库从Guava11迁移到Guava14,并希望捕获已删除或弃用的API的使用。FindBugs可以执行此类检查吗?如果是,怎么办? 最佳答案 一种解决方案是只使用Oracle的Java编译器javac来执行此操作。如果使用API中删除的方法,将导致编译器错误,因此应该可以通过编译代码找到这些方法。可以使用javac-deprecation选项找到已弃用的方法。更多关于-deprecation的信息:http://docs.oracle.com/javase/6/docs/technotes/tools/
我有一个Javagettor方法,如下所示:importjava.util.Date;//...publicDategetSomeDate(){returnsomeDate;}并且Findbugs报告说这公开了一个可变对象:“可能通过返回对可变对象的引用来公开内部表示”。我将代码更改为:importjava.util.Date;//...publicDategetSomeDate(){returnnewDate(someDate.getTime());}但Findbug仍然报告相同的漏洞。我还能做些什么来抑制/解决这个问题?我在IntellJ10Findbugs插件中运行Findbug
我已经尝试了几次迭代,但这是我最新的最终我想让所有包匹配(glob语法)com.xenoterracide.rpf.*.ui或者只是com.xenoterracide.rpf.*INFO]Thefieldcom.xenoterracide.rpf.character.ui.CharactersView.editDialogistransientbutisn'tsetbydeserialization[com.xenoterracide.rpf.character.ui.CharactersView]InCharactersView.javaSE_TRANSIENT_FIELD_NOT_
不耐烦的更新:很简单,使用package.-代替package.*进行分包扫描,as-per下面是martoe的回答!我似乎无法让onlyAnalyze为我的多模块项目工作:无论我设置什么包(或模式),maven-findbugs-plugin都不会评估子包,因为我'd期望通过packagename.*.为了证明我自己或插件有问题(尽管我总是认为是前者!),我设置了一个具有以下结构的小型Maven项目:pom.xmlsrc/main/java/acme/App.javamain/java/acme/moo/App.javamain/java/no_detect/App.java这很简单
if(first!=null&&second!=null&&!first.equals(second)){//notnull¬equal}elseif(first==null^second==null){//notbothnullandnotbothnotnull//(first==null&&second!=null)||(first!=null&&second==null)}else{//bothnullorequal}FindBugs提示elseif(first==null^second==null){...} 最佳答案
这是Eclipse为我生成的hashCode()方法:@OverridepublicinthashCode(){finalintprime=31;intresult=1;result=prime*result+(int)(id^(id>>>32));returnresult;}当我对此运行findbugs时,它提示最后一行:Method...hashCode()storesreturnresultinlocalbeforeimmediatelyreturningit[Scariest(2),Normalconfidence]谁在这里?Findbugs还是Eclipse?这是狡猾的吗?我
来自SE_BAD_FIELD的描述:Non-transientnon-serializableinstancefieldinserializableclassThisSerializableclassdefinesanon-primitiveinstancefieldwhichisneithertransient,Serializable,orjava.lang.Object,anddoesnotappeartoimplementtheExternalizableinterfaceorthereadObject()andwriteObject()methods.Objectsofthi
我正在尝试更新一个使用依赖注入(inject)的应用程序,在这样做时,我正在尝试使用“线程安全”注释记录每个类(需要它),供其他编码人员和错误检查员使用。如果我有服务类,如下:@ImplementedBy(FooImpl.class)publicinterfaceFooSrvc{}及其相关的实现classFooImplimplementsFooSrvc{}*我是否应该使用线程安全注释来记录或注释接口(interface)和具体实现?只是服务,因为它是公开的,所以只是实现?*例如对于两者:@javax.annotation.concurrent.ThreadSafe@org.checkt
Google让我失望了。曾经有这样的注解:ReturnValuesAreNonnullByDefault.但这现在已被弃用,javadoc没有指出要使用哪个新注释。整个类的@Nonnull不适用于返回值,因为我刚刚对其进行了测试,并且没有收到有关返回null的方法的警告。我不想专门注释每个返回值,那么有没有好的选择? 最佳答案 您可以使用thisanswer构建您自己的简单@EverythingIsNonnullByDefault注释以在包/类级别应用以涵盖所有情况,或thisone它向您展示了如何创建单独的注释来管理字段和方法返回
我正在使用ANT构建我的应用程序,我正在检查我的代码是否存在任何Findbugs违规行为。现在,我的目标是在我的代码包含特定的findbug违规时停止构建。这可以使用ANT和Findbugs吗?注意最好不要写入任何自定义类。 最佳答案 使用warningsPropertyattributeonyourfindbugstask为任何警告设置属性:如果产生警告,则任务失败:例如: 关于java-Findbugs&Ant-停止特定违规的构建,我们在StackOverflow上找到一个类似的问题