pmd-rules.xml 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. <?xml version="1.0"?>
  2. <ruleset name="Custom Rules"
  3. xmlns="http://pmd.sourceforge.net/ruleset/2.0.0"
  4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  5. xsi:schemaLocation="http://pmd.sourceforge.net/ruleset/2.0.0 https://pmd.sourceforge.io/ruleset_2_0_0.xsd">
  6. <description>
  7. Custom rules for checking RocksDB
  8. </description>
  9. <!-- Use PMD rules from a few sets, and then make exceptions -->
  10. <rule ref="category/java/codestyle.xml">
  11. <!-- These problems are acceptable in perpertuity -->
  12. <exclude name="AvoidUsingNativeCode"/>
  13. <exclude name="LongVariable"/>
  14. <exclude name="ShortVariable"/>
  15. <exclude name="ShortClassName"/>
  16. <exclude name="OnlyOneReturn"/>
  17. <exclude name="FieldNamingConventions"/>
  18. <exclude name="FormalParameterNamingConventions"/>
  19. <exclude name="LinguisticNaming"/>
  20. <exclude name="ConfusingTernary"/>
  21. <!-- These could be fixed if we take the time to do it -->
  22. <exclude name="CommentDefaultAccessModifier"/>
  23. <exclude name="FieldDeclarationsShouldBeAtStartOfClass"/>
  24. <exclude name="FinalParameterInAbstractMethod"/>
  25. <exclude name="EmptyMethodInAbstractClassShouldBeAbstract"/>
  26. <exclude name="MethodArgumentCouldBeFinal"/>
  27. <exclude name="LocalVariableNamingConventions"/>
  28. <exclude name="LocalVariableCouldBeFinal"/>
  29. <exclude name="ControlStatementBraces"/>
  30. <exclude name="CallSuperInConstructor"/>
  31. <exclude name="ControlStatementBraces"/>
  32. <exclude name="MethodNamingConventions"/>
  33. <exclude name="UselessParentheses"/>
  34. <exclude name="AtLeastOneConstructor"/>
  35. </rule>
  36. <rule ref="category/java/errorprone.xml">
  37. <exclude name="AvoidFieldNameMatchingMethodName"/>
  38. </rule>
  39. <rule ref="category/java/errorprone.xml/AvoidLiteralsInIfCondition">
  40. <properties>
  41. <property name="ignoreMagicNumbers" value="-1,0,1,2,0x0,0x1,0xff" />
  42. <property name="ignoreExpressions" value="true,false" />
  43. </properties>
  44. </rule>
  45. <rule ref="category/java/bestpractices.xml">
  46. <exclude name="UseVarargs"/>
  47. </rule>
  48. <rule ref="category/java/errorprone.xml/CloseResource">
  49. <properties>
  50. <property name="types" value="java.lang.AutoCloseable,java.sql.Connection,java.sql.Statement,java.sql.ResultSet" />
  51. <property name="closeAsDefaultTarget" value="true" />
  52. <!-- we allow these org.rocksdb types as generally our API is opening them for the user. -->
  53. <property name="allowedResourceTypes" value="java.io.ByteArrayOutputStream|java.io.ByteArrayInputStream|java.io.StringWriter|java.io.CharArrayWriter|java.util.stream.Stream|java.util.stream.IntStream|java.util.stream.LongStream|java.util.stream.DoubleStream" />
  54. <property name="closeNotInFinally" value="false" />
  55. </properties>
  56. </rule>
  57. </ruleset>