在Gradle的Java项目中,我们可以通过pmd插件使用PMD。要配置我们要使用的规则,可以通过两种方式进行:>ruleSetFiles-要使用的自定义规则集文件。有关如何编写规则集文件的信息,请参阅官方文档。示例:ruleSetFiles=files("config/pmd/myRuleSet.xml")>ruleSets要使用的内置规则集。请参阅内置规则集的官方列表。使用ruleSetFiles没有问题,您可以找到规则的名称并添加或排除规则,但是在文档中没有关于ruleStes的信息?从哪里可以找到确切的名字?从我从另一个项目中发现的名称与PMD文档中的名称相似,但小写。例如:B
好的,所以我明白了为什么我们应该从thisquestion声明一个参数为final,但我不明白为什么我们不应该...由于Java总是使用按值传递,这意味着我们不能通过给定的参数返回一个新值,我们只能覆盖它,并因此使参数无用,因为我们不使用传递的值。..Java中非final方法参数的唯一好处是您不必创建参数类型的局部变量吗?附言这个问题是由PMD的MethodArgumentCouldBeFinal规则触发的 最佳答案 我只能想到2个不参数final的原因:如果您需要在某些极端情况下覆盖参数的值(例如,如果参数为null等,则设置默
定义PMD规则集时是否可以从特定规则中排除源文件?我想做如下的事情:规则名称似乎仅支持排除。源文件有类似的东西吗? 最佳答案 如果您使用maven-pmd-plugin工具来运行PMD,那么您可以包含一个属性文件,列出要忽略的类和规则。exclude-pmd.propertiesorg.apache.maven.ClassA=UnusedPrivateField,EmptyCatchBlockorg.apache.maven.ClassB=UnusedPrivateField,UnusedFormalParameter,Unused
1。关于PMD:1.1如何设置PMD检查,以忽略其中的一些检查,例如“变量名太短或太长”、“删除空构造函数等”——如果我这样做,会出现另一个警告说该类必须有一些静态方法。基本上,这个类是空的,供以后开发使用,我想暂时保留它。1.2是否有必要遵循这个警告建议?Aclasswhichonlyhasprivateconstructorsshouldbefinal1.3这是什么意思?Theclass'Dog'hasaCyclomaticComplexityof3(Highest=17)1.4这个呢?我很想改变这一点,但目前我没有想到任何关于改变的事情:AssigninganObjecttonu
代码审查工具提示可能在saveSafeScan(...)中取消引用safeScanWarnings的空指针在行if(safeScanWarnings!=Null&safeScanWarnings.size()>0)我想知道这怎么可能?这是因为我们通过引用返回集合吗?protectedvoidsaveSafeScan(finalResponseresponse,finalDtecdtec)throwsdtecException{CollectionsafeScanWarnings=dtec.getSafeScanWarnings();if(safeScanWarnings!=null&&
我有以下Java方法:privateintcalculate(){return(bytes[0]&0xff)+((bytes[1]&0xff)PMD提示此代码违反“UselessParentheses”。我已经查看了operatorprecentencerules而且我仍然没有在该代码中看到多余的括号。我错过了什么吗? 最佳答案 这段代码中没有不必要的括号,你可以看到如果你运行这个:byte[]bytes=newbyte[]{1,2};System.out.println((bytes[0]&0xff)+((bytes[1]&0xf
我正在阅读一个有趣的教程:http://www.avajava.com/tutorials/lessons/how-do-i-generate-pmd-and-cpd-reports-for-a-site.html?page=1本教程介绍如何使用Maven运行开源静态分析工具PMD,以及如何在Maven创建的网站上查看生成的输出。Maven可以使用mvnsite轻松创建网站命令,但本教程展示了如何使用PMD在源代码上获得更有用的指标。我已尽最大努力遵循说明。这是我的pom.xml来自阅读教程的文件:4.0.0com.name.bookstorebookstorejar1bookstor
尝试运行pmd时对于Eclipse/Juno中的项目,我收到此错误。Aninternalerroroccurredduring:"ReviewCode".Couldn'tfindtheclassCan'tfindresourcerulesets/basic.xml.MakesuretheresourceisavalidfileorURLorisontheCLASSPATH.Here'sthecurrentclasspath:C:\eclipsejuno\eclipse\\plugins/org.eclipse.equinox.launcher_1.3.0.v20120522-1813.
根据工具PMD,以下是一种不好的做法:Strings=""+123;//badStringt=Integer.toString(456);//okThisisaninefficientwaytoconvertanytypetoa`String`.为什么这是一件坏事? 最佳答案 这是低效的,因为它涉及到一个不需要的字符串连接,因此会创建一个或两个额外的String对象-尽管我相信JIT可以优化它。对我来说更大的问题是代码不够清晰。调用toString是标准习惯用法,每个Java开发人员都可以理解(希望:-),因此您应该更喜欢这个。
我们目前正在使用JavaCompiler11并将我们的主要工件部署到Java11。这没问题。不幸的是,我们使用的服务仅支持Java8,因此我们针对Java8编译了其中一些服务。这里没问题。我们的问题是开发人员可能会引用Java8运行时不可用的方法。例如List.of(),Optional::stream等javac版本11会编译成Java8,但是会抛出异常在JVM版本8上执行时。后者很容易通过简单的grep语句识别,但后者比较棘手,需要理解代码/AST。我检查了Checkstyle、Spotbugs和PMD的文档,但没有成功。IntelliJ在这方面其实很擅长,但它不能集成到我们的CI