diff --git a/pom.xml b/pom.xml
index a986569..292a72e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -25,7 +25,6 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
-
4.0.0
io.github.dgroup
arch4u-pmd
diff --git a/readme.md b/readme.md
index 12f08bf..ba48df7 100644
--- a/readme.md
+++ b/readme.md
@@ -40,180 +40,228 @@ We are using the latest stable pmd-java version which is `6.42.0` as a start poi
🌵 - reconfigured in `arch4u-ruleset.xml`,
❌ - disabled/not planned in `arch4u-ruleset.xml`
-| PMD rule | Provider | Since | Status | Spring | Quarkus |
-|:--------------------------------------------------------------------------------------------------------------------------------------------|:----------:|:------:|:------:|:------:|:-------:|
-| [UseExistingMediaTypeConstant](https://github.com/dgroup/arch4u-pmd/discussions/43) | arch4u-pmd | 0.1.0 | ✅ | ⌛ | ⌛ |
-| [UseOpenApiInRestEndpoints](https://github.com/dgroup/arch4u-pmd/discussions/73) | arch4u-pmd | 0.1.0 | ✅ | ⌛ | ⌛ |
-| [RestEndpointsWithoutExposedMetrics](https://github.com/dgroup/arch4u-pmd/discussions/74) | arch4u-pmd | 0.1.0 | ✅ | ⌛ | ⌛ |
-| [UseConstantAsMetricName](https://github.com/dgroup/arch4u-pmd/discussions/75) | arch4u-pmd | 0.1.0 | ✅ | ⌛ | ⌛ |
-| [NoMandatoryConstructorInExceptionClass](https://github.com/dgroup/arch4u-pmd/discussions/31) | arch4u-pmd | 0.1.0 | ✅ | ⌛ | ⌛ |
-| [AvoidUsingObjectMapperAsALocalVariable](https://github.com/dgroup/arch4u-pmd/discussions/30) | arch4u-pmd | 0.1.0 | ✅ | ⌛ | ⌛ |
-| [AvoidMdcOutsideTryStatement](https://github.com/dgroup/arch4u-pmd/discussions/86) | arch4u-pmd | 0.1.0 | ✅ | ⌛ | ⌛ |
-| [PotentiallyThreadLocalPollutionByMdc](https://github.com/dgroup/arch4u-pmd/discussions/88) | arch4u-pmd | 0.1.0 | ✅ | ⌛ | ⌛ |
-| AbstractClassWithoutAbstractMethod | pmd-java | 3.0 | ✅ | ⌛ | ⌛ |
-| AccessorClassGeneration | pmd-java | 1.04 | ✅ | ⌛ | ⌛ |
-| AccessorMethodGeneration | pmd-java | 5.5.4 | ✅ | ⌛ | ⌛ |
-| ArrayIsStoredDirectly | pmd-java | 2.2 | ✅ | ⌛ | ⌛ |
-| AvoidMessageDigestField | pmd-java | 6.18.0 | ✅ | ⌛ | ⌛ |
-| AvoidPrintStackTrace | pmd-java | 3.2 | ✅ | ⌛ | ⌛ |
-| AvoidReassigningCatchVariables | pmd-java | 6.27.0 | ✅ | ⌛ | ⌛ |
-| AvoidReassigningLoopVariables | pmd-java | 6.11.0 | ✅ | ⌛ | ⌛ |
-| AvoidReassigningParameters | pmd-java | 1.0 | ✅ | ⌛ | ⌛ |
-| AvoidStringBufferField | pmd-java | 4.2 | ✅ | ⌛ | ⌛ |
-| AvoidUsingHardCodedIP | pmd-java | 4.1 | ✅ | ⌛ | ⌛ |
-| CheckResultSet | pmd-java | 4.1 | ✅ | ⌛ | ⌛ |
-| ConstantsInInterface | pmd-java | 5.5 | ✅ | ⌛ | ⌛ |
-| DefaultLabelNotLastInSwitchStmt | pmd-java | 1.5 | ✅ | ⌛ | ⌛ |
-| DoubleBraceInitialization | pmd-java | 6.16.0 | ✅ | ⌛ | ⌛ |
-| ForLoopCanBeForeach | pmd-java | 6.0.0 | ✅ | ⌛ | ⌛ |
-| ForLoopVariableCount | pmd-java | 6.11.0 | ✅ | ⌛ | ⌛ |
-| GuardLogStatement | pmd-java | 5.1.0 | ❌ | ⌛ | ⌛ |
-| JUnit4SuitesShouldUseSuiteAnnotation | pmd-java | 4.0 | ✅ | ⌛ | ⌛ |
-| JUnit4TestShouldUseAfterAnnotation | pmd-java | 4.0 | ✅ | ⌛ | ⌛ |
-| JUnit4TestShouldUseBeforeAnnotation | pmd-java | 4.0 | ✅ | ⌛ | ⌛ |
-| JUnit4TestShouldUseTestAnnotation | pmd-java | 4.0 | ✅ | ⌛ | ⌛ |
-| JUnit5TestShouldBePackagePrivate | pmd-java | 6.35.0 | ✅ | ⌛ | ⌛ |
-| JUnitAssertionsShouldIncludeMessage | pmd-java | 1.04 | 🌵 | ⌛ | ⌛ |
-| JUnitTestContainsTooManyAsserts | pmd-java | 5.0 | ✅ | ⌛ | ⌛ |
-| JUnitTestsShouldIncludeAssert | pmd-java | 2.0 | ✅ | ⌛ | ⌛ |
-| JUnitUseExpected | pmd-java | 4.0 | ✅ | ⌛ | ⌛ |
-| LiteralsFirstInComparisons | pmd-java | 6.24.0 | ✅ | ⌛ | ⌛ |
-| LooseCoupling | pmd-java | 0.7 | ✅ | ⌛ | ⌛ |
-| MethodReturnsInternalArray | pmd-java | 2.2 | ✅ | ⌛ | ⌛ |
-| MissingOverride | pmd-java | 6.2.0 | ✅ | ⌛ | ⌛ |
-| OneDeclarationPerLine | pmd-java | 5.0 | ✅ | ⌛ | ⌛ |
-| PositionLiteralsFirstInCaseInsensitiveComparisons | pmd-java | 5.1 | ✅ | ⌛ | ⌛ |
-| PositionLiteralsFirstInComparisons | pmd-java | 3.3 | ✅ | ⌛ | ⌛ |
-| PreserveStackTrace | pmd-java | 3.7 | ✅ | ⌛ | ⌛ |
-| PrimitiveWrapperInstantiation | pmd-java | 6.37.0 | ✅ | ⌛ | ⌛ |
-| ReplaceEnumerationWithIterator | pmd-java | 3.4 | ✅ | ⌛ | ⌛ |
-| ReplaceHashtableWithMap | pmd-java | 3.4 | ✅ | ⌛ | ⌛ |
-| ReplaceVectorWithList | pmd-java | 3.4 | ✅ | ⌛ | ⌛ |
-| SimplifiableTestAssertion | pmd-java | 6.37.0 | ✅ | ⌛ | ⌛ |
-| SwitchStmtsShouldHaveDefault | pmd-java | 1.0 | ✅ | ⌛ | ⌛ |
-| SystemPrintln | pmd-java | 2.1 | ✅ | ⌛ | ⌛ |
-| UnusedAssignment | pmd-java | 6.26.0 | ✅ | ⌛ | ⌛ |
-| UnusedFormalParameter | pmd-java | 0.8 | ✅ | ⌛ | ⌛ |
-| UnusedImports | pmd-java | 1.0 | ✅ | ⌛ | ⌛ |
-| UnusedLocalVariable | pmd-java | 0.1 | ✅ | ⌛ | ⌛ |
-| UnusedPrivateField | pmd-java | 0.1 | ✅ | ⌛ | ⌛ |
-| UnusedPrivateMethod | pmd-java | 0.7 | 🌵 | ⌛ | ⌛ |
-| UseAssertEqualsInsteadOfAssertTrue | pmd-java | 3.1 | ✅ | ⌛ | ⌛ |
-| UseAssertNullInsteadOfAssertTrue | pmd-java | 3.5 | ✅ | ⌛ | ⌛ |
-| UseAssertSameInsteadOfAssertTrue | pmd-java | 3.1 | ✅ | ⌛ | ⌛ |
-| UseAssertTrueInsteadOfAssertEquals | pmd-java | 5.0 | ✅ | ⌛ | ⌛ |
-| UseCollectionIsEmpty | pmd-java | 3.9 | ✅ | ⌛ | ⌛ |
-| UseVarargs | pmd-java | 5.0 | ✅ | ⌛ | ⌛ |
-| AbstractNaming | pmd-java | 1.4 | ✅ | ⌛ | ⌛ |
-| AtLeastOneConstructor | pmd-java | 1.04 | 🌵 | ✅ | ⌛ |
-| AvoidDollarSigns | pmd-java | 1.4 | ✅ | ⌛ | ⌛ |
-| AvoidFinalLocalVariable | pmd-java | 4.1 | ✅ | ⌛ | ⌛ |
-| AvoidPrefixingMethodParameters | pmd-java | 5.0 | ✅ | ⌛ | ⌛ |
-| AvoidProtectedFieldInFinalClass | pmd-java | 2.1 | ✅ | ⌛ | ⌛ |
-| AvoidProtectedMethodInFinalClassNotExtending | pmd-java | 5.1 | ✅ | ⌛ | ⌛ |
-| AvoidUsingNativeCode | pmd-java | 4.1 | ✅ | ⌛ | ⌛ |
-| BooleanGetMethodName | pmd-java | 4.0 | ✅ | ⌛ | ⌛ |
-| CallSuperInConstructor | pmd-java | 3.0 | ✅ | ⌛ | ⌛ |
-| ClassNamingConventions | pmd-java | 1.2 | ✅ | ⌛ | ⌛ |
-| CommentDefaultAccessModifier | pmd-java | 5.4.0 | ✅ | ⌛ | ⌛ |
-| ConfusingTernary | pmd-java | 1.9 | ✅ | ⌛ | ⌛ |
-| ControlStatementBraces | pmd-java | 6.2.0 | ✅ | ⌛ | ⌛ |
-| DefaultPackage | pmd-java | 3.4 | ✅ | ⌛ | ⌛ |
-| DontImportJavaLang | pmd-java | 0.5 | ✅ | ⌛ | ⌛ |
-| DuplicateImports | pmd-java | 0.5 | ✅ | ⌛ | ⌛ |
-| EmptyMethodInAbstractClassShouldBeAbstract | pmd-java | 4.1 | ✅ | ⌛ | ⌛ |
-| ExtendsObject | pmd-java | 5.0 | ✅ | ⌛ | ⌛ |
-| FieldDeclarationsShouldBeAtStartOfClass | pmd-java | 5.0 | ✅ | ⌛ | ⌛ |
-| ForLoopShouldBeWhileLoop | pmd-java | 1.02 | ✅ | ⌛ | ⌛ |
-| ForLoopsMustUseBraces | pmd-java | 0.7 | ✅ | ⌛ | ⌛ |
-| GenericsNaming | pmd-java | 4.2.6 | ✅ | ⌛ | ⌛ |
-| FormalParameterNamingConventions | pmd-java | 6.4.0 | ✅ | ⌛ | ⌛ |
-| IfElseStmtsMustUseBraces | pmd-java | 0.2 | ✅ | ⌛ | ⌛ |
-| IfStmtsMustUseBraces | pmd-java | 1.0 | ✅ | ⌛ | ⌛ |
-| LocalHomeNamingConvention | pmd-java | 4.0 | ✅ | ⌛ | ⌛ |
-| IdenticalCatchBranches | pmd-java | 6.4.0 | ✅ | ⌛ | ⌛ |
-| LinguisticNaming | pmd-java | 6.7.0 | ✅ | ⌛ | ⌛ |
-| LocalInterfaceSessionNamingConvention | pmd-java | 4.0 | ✅ | ⌛ | ⌛ |
-| LocalVariableCouldBeFinal | pmd-java | 2.2 | ✅ | ⌛ | ⌛ |
-| LocalVariableNamingConventions | pmd-java | 6.6.0 | ✅ | ⌛ | ⌛ |
-| LongVariable | pmd-java | 0.3 | ✅ | ⌛ | ⌛ |
-| MDBAndSessionBeanNamingConvention | pmd-java | 4.0 | ✅ | ⌛ | ⌛ |
-| MethodArgumentCouldBeFinal | pmd-java | 2.2 | ✅ | ⌛ | ⌛ |
-| MethodNamingConventions | pmd-java | 1.2 | ✅ | ⌛ | ⌛ |
-| MIsLeadingVariableName | pmd-java | 3.4 | ✅ | ⌛ | ⌛ |
-| NoPackage | pmd-java | 3.3 | ✅ | ⌛ | ⌛ |
-| UseUnderscoresInNumericLiterals | pmd-java | 6.10.0 | ✅ | ⌛ | ⌛ |
-| OnlyOneReturn | pmd-java | 6.10.0 | 🌵 | ⌛ | ⌛ |
-| PackageCase | pmd-java | 3.3 | ✅ | ⌛ | ⌛ |
-| PrematureDeclaration | pmd-java | 5.0 | ✅ | ⌛ | ⌛ |
-| RemoteInterfaceNamingConvention | pmd-java | 4.0 | ✅ | ⌛ | ⌛ |
-| RemoteSessionInterfaceNamingConvention | pmd-java | 4.0 | ✅ | ⌛ | ⌛ |
-| ShortClassName | pmd-java | 5.0 | ✅ | ⌛ | ⌛ |
-| ShortMethodName | pmd-java | 0.3 | ✅ | ⌛ | ⌛ |
-| ShortVariable | pmd-java | 0.3 | ✅ | ⌛ | ⌛ |
-| SuspiciousConstantFieldName | pmd-java | 2.0 | ✅ | ⌛ | ⌛ |
-| TooManyStaticImports | pmd-java | 4.1 | ✅ | ⌛ | ⌛ |
-| UnnecessaryAnnotationValueElement | pmd-java | 6.2.0 | ✅ | ⌛ | ⌛ |
-| UnnecessaryCast | pmd-java | 6.24.0 | ✅ | ⌛ | ⌛ |
-| UnnecessaryConstructor | pmd-java | 1.0 | ✅ | ⌛ | ⌛ |
-| UnnecessaryFullyQualifiedName | pmd-java | 5.0 | ✅ | ⌛ | ⌛ |
-| UnnecessaryImport | pmd-java | 6.34.0 | ✅ | ⌛ | ⌛ |
-| UnnecessaryLocalBeforeReturn | pmd-java | 3.3 | ✅ | ⌛ | ⌛ |
-| UnnecessaryModifier | pmd-java | 1.02 | ✅ | ⌛ | ⌛ |
-| UnnecessaryReturn | pmd-java | 1.3 | ✅ | ⌛ | ⌛ |
-| UseDiamondOperator | pmd-java | 6.11.0 | ✅ | ⌛ | ⌛ |
-| UselessParentheses | pmd-java | 5.0 | ✅ | ⌛ | ⌛ |
-| UselessQualifiedThis | pmd-java | 5.4.0 | ✅ | ⌛ | ⌛ |
-| UseShortArrayInitializer | pmd-java | 6.15.0 | ✅ | ⌛ | ⌛ |
-| VariableNamingConventions | pmd-java | 1.2 | ✅ | ⌛ | ⌛ |
-| WhileLoopsMustUseBraces | pmd-java | 0.7 | ✅ | ⌛ | ⌛ |
-| [AddEmptyString](https://pmd.github.io/latest/pmd_rules_java_performance.html#addemptystring) | pmd-java | 4.0 | ✅ | ⌛ | ⌛ |
-| [AppendCharacterWithChar](https://pmd.github.io/latest/pmd_rules_java_performance.html#appendcharacterwithchar) | pmd-java | 3.5 | ✅ | ⌛ | ⌛ |
-| [AvoidArrayLoops](https://pmd.github.io/latest/pmd_rules_java_performance.html#avoidarrayloops) | pmd-java | 3.5 | ✅ | ⌛ | ⌛ |
-| [AvoidCalendarDateCreation](https://pmd.github.io/latest/pmd_rules_java_performance.html#avoidcalendardatecreation) | pmd-java | 6.25.0 | ✅ | ⌛ | ⌛ |
-| [AvoidFileStream](https://pmd.github.io/latest/pmd_rules_java_performance.html#avoidfilestream) | pmd-java | 6.0.0 | ✅ | ⌛ | ⌛ |
-| [AvoidInstantiatingObjectsInLoops](https://pmd.github.io/latest/pmd_rules_java_performance.html#avoidinstantiatingobjectsinloops) | pmd-java | 2.2 | ✅ | ⌛ | ⌛ |
-| [AvoidUsingShortType](https://pmd.github.io/latest/pmd_rules_java_performance.html#avoidusingshorttype) | pmd-java | 4.1 | ❌ | ⌛ | ⌛ |
-| [BigIntegerInstantiation](https://pmd.github.io/latest/pmd_rules_java_performance.html#bigintegerinstantiation) | pmd-java | 3.9 | ✅ | ⌛ | ⌛ |
-| [BooleanInstantiation](https://pmd.github.io/latest/pmd_rules_java_performance.html#booleaninstantiation) | pmd-java | 1.2 | ❌ | ⌛ | ⌛ |
-| [ByteInstantiation](https://pmd.github.io/latest/pmd_rules_java_performance.html#byteinstantiation) | pmd-java | 4.0 | ❌ | ⌛ | ⌛ |
-| [ConsecutiveAppendsShouldReuse](https://pmd.github.io/latest/pmd_rules_java_performance.html#consecutiveappendsshouldreuse) | pmd-java | 5.1 | ✅ | ⌛ | ⌛ |
-| [ConsecutiveLiteralAppends](https://pmd.github.io/latest/pmd_rules_java_performance.html#consecutiveliteralappends) | pmd-java | 3.5 | ✅ | ⌛ | ⌛ |
-| [InefficientEmptyStringCheck](https://pmd.github.io/latest/pmd_rules_java_performance.html#inefficientemptystringcheck) | pmd-java | 3.6 | ✅ | ⌛ | ⌛ |
-| [InefficientStringBuffering](https://pmd.github.io/latest/pmd_rules_java_performance.html#inefficientstringbuffering) | pmd-java | 3.4 | ✅ | ⌛ | ⌛ |
-| [InsufficientStringBufferDeclaration](https://pmd.github.io/latest/pmd_rules_java_performance.html#insufficientstringbufferdeclaration) | pmd-java | 3.6 | ✅ | ⌛ | ⌛ |
-| [IntegerInstantiation](https://pmd.github.io/latest/pmd_rules_java_performance.html#integerinstantiation) | pmd-java | 3.5 | ❌ | ⌛ | ⌛ |
-| [LongInstantiation](https://pmd.github.io/latest/pmd_rules_java_performance.html#longinstantiation) | pmd-java | 4.0 | ❌ | ⌛ | ⌛ |
-| [OptimizableToArrayCall](https://pmd.github.io/latest/pmd_rules_java_performance.html#optimizabletoarraycall) | pmd-java | 1.8 | ✅ | ⌛ | ⌛ |
-| [RedundantFieldInitializer](https://pmd.github.io/latest/pmd_rules_java_performance.html#redundantfieldinitializer) | pmd-java | 5.0 | ✅ | ⌛ | ⌛ |
-| [ShortInstantiation](https://pmd.github.io/latest/pmd_rules_java_performance.html#shortinstantiation) | pmd-java | 4.0 | ❌ | ⌛ | ⌛ |
-| [SimplifyStartsWith](https://pmd.github.io/latest/pmd_rules_java_performance.html#simplifystartswith) | pmd-java | 3.1 | ❌ | ⌛ | ⌛ |
-| [StringInstantiation](https://pmd.github.io/latest/pmd_rules_java_performance.html#stringinstantiation) | pmd-java | 1.0 | ✅ | ⌛ | ⌛ |
-| [StringToString](https://pmd.github.io/latest/pmd_rules_java_performance.html#stringtostring) | pmd-java | 1.0 | ✅ | ⌛ | ⌛ |
-| [TooFewBranchesForASwitchStatement](https://pmd.github.io/latest/pmd_rules_java_performance.html#toofewbranchesforaswitchstatement) | pmd-java | 4.2 | ✅ | ⌛ | ⌛ |
-| [UnnecessaryWrapperObjectCreation](https://pmd.github.io/latest/pmd_rules_java_performance.html#unnecessarywrapperobjectcreation) | pmd-java | 3.8 | ✅ | ⌛ | ⌛ |
-| [UseArrayListInsteadOfVector](https://pmd.github.io/latest/pmd_rules_java_performance.html#usearraylistinsteadofvector) | pmd-java | 3.0 | ✅ | ⌛ | ⌛ |
-| [UseArraysAsList](https://pmd.github.io/latest/pmd_rules_java_performance.html#usearraysaslist) | pmd-java | 3.5 | ✅ | ⌛ | ⌛ |
-| [UseIndexOfChar](https://pmd.github.io/latest/pmd_rules_java_performance.html#useindexofchar) | pmd-java | 3.5 | ✅ | ⌛ | ⌛ |
-| [UseIOStreamsWithApacheCommonsFileItem](https://pmd.github.io/latest/pmd_rules_java_performance.html#useiostreamswithapachecommonsfileitem) | pmd-java | 6.25.0 | ✅ | ⌛ | ⌛ |
-| [UselessStringValueOf](https://pmd.github.io/latest/pmd_rules_java_performance.html#uselessstringvalueof) | pmd-java | 3.8 | ✅ | ⌛ | ⌛ |
-| [UseStringBufferForStringAppends](https://pmd.github.io/latest/pmd_rules_java_performance.html#usestringbufferforstringappends) | pmd-java | 3.1 | ✅ | ⌛ | ⌛ |
-| [UseStringBufferLength](https://pmd.github.io/latest/pmd_rules_java_performance.html#usestringbufferlength) | pmd-java | 3.4 | ✅ | ⌛ | ⌛ |
-| [AvoidSynchronizedAtMethodLevel](https://pmd.github.io/latest/pmd_rules_java_multithreading.html#avoidsynchronizedatmethodlevel) | pmd-java | 3.0 | ✅ | ⌛ | ⌛ |
-| [AvoidThreadGroup](https://pmd.github.io/latest/pmd_rules_java_multithreading.html#avoidthreadgroup) | pmd-java | 3.6 | ✅ | ⌛ | ⌛ |
-| [AvoidUsingVolatile](https://pmd.github.io/latest/pmd_rules_java_multithreading.html#avoidusingvolatile) | pmd-java | 3.0 | ✅ | ⌛ | ⌛ |
-| [DoNotUseThreads](https://pmd.github.io/latest/pmd_rules_java_multithreading.html#donotusethreads) | pmd-java | 4.1 | ✅ | ⌛ | ⌛ |
-| [DontCallThreadRun](https://pmd.github.io/latest/pmd_rules_java_multithreading.html#dontcallthreadrun) | pmd-java | 3.0 | ✅ | ⌛ | ⌛ |
-| [DoubleCheckedLocking](https://pmd.github.io/latest/pmd_rules_java_multithreading.html#doublecheckedlocking) | pmd-java | 1.04 | ✅ | ⌛ | ⌛ |
-| [NonThreadSafeSingleton](https://pmd.github.io/latest/pmd_rules_java_multithreading.html#nonthreadsafesingleton) | pmd-java | 3.4 | ✅ | ⌛ | ⌛ |
-| [UnsynchronizedStaticDateFormatter](https://pmd.github.io/latest/pmd_rules_java_multithreading.html#unsynchronizedstaticdateformatter) | pmd-java | 3.6 | ❌ | ⌛ | ⌛ |
-| [UnsynchronizedStaticFormatter](https://pmd.github.io/latest/pmd_rules_java_multithreading.html#unsynchronizedstaticformatter) | pmd-java | 3.0 | ✅ | ⌛ | ⌛ |
-| [UseConcurrentHashMap](https://pmd.github.io/latest/pmd_rules_java_multithreading.html#unsynchronizedstaticformatter) | pmd-java | 4.2.6 | ❌ | ⌛ | ⌛ |
-| [UseNotifyAllInsteadOfNotify](https://pmd.github.io/latest/pmd_rules_java_multithreading.html#usenotifyallinsteadofnotify) | pmd-java | 3.0 | ✅ | ⌛ | ⌛ |
-| [CommentContent](https://pmd.github.io/latest/pmd_rules_java_documentation.html#ntcontent) | pmd-java | 5.0 | ❌ | ⌛ | ⌛ |
-| [CommentRequired](https://pmd.github.io/latest/pmd_rules_java_documentation.html#commentrequired) | pmd-java | 5.1 | 🌵 | ⌛ | ⌛ |
-| [UncommentedEmptyConstructor](https://pmd.github.io/latest/pmd_rules_java_documentation.html#uncommentedemptyconstructor) | pmd-java | 3.4 | ✅ | ⌛ | ⌛ |
-| [UncommentedEmptyMethodBody](https://pmd.github.io/latest/pmd_rules_java_documentation.html#uncommentedemptymethodbody) | pmd-java | 3.4 | ✅ | ⌛ | ⌛ |
+| PMD rule | Provider | Since | Status | Spring | Quarkus |
+|:-------------------------------------------------------------------------------------------------------------------------------------------------------|:----------:|:------:|:------:|:------:|:-------:|
+| [UseExistingMediaTypeConstant](https://github.com/dgroup/arch4u-pmd/discussions/43) | arch4u-pmd | 0.1.0 | ✅ | ⌛ | ⌛ |
+| [UseOpenApiInRestEndpoints](https://github.com/dgroup/arch4u-pmd/discussions/73) | arch4u-pmd | 0.1.0 | ✅ | ⌛ | ⌛ |
+| [RestEndpointsWithoutExposedMetrics](https://github.com/dgroup/arch4u-pmd/discussions/74) | arch4u-pmd | 0.1.0 | ✅ | ⌛ | ⌛ |
+| [UseConstantAsMetricName](https://github.com/dgroup/arch4u-pmd/discussions/75) | arch4u-pmd | 0.1.0 | ✅ | ⌛ | ⌛ |
+| [NoMandatoryConstructorInExceptionClass](https://github.com/dgroup/arch4u-pmd/discussions/31) | arch4u-pmd | 0.1.0 | ✅ | ⌛ | ⌛ |
+| [AvoidUsingObjectMapperAsALocalVariable](https://github.com/dgroup/arch4u-pmd/discussions/30) | arch4u-pmd | 0.1.0 | ✅ | ⌛ | ⌛ |
+| [AvoidMdcOutsideTryStatement](https://github.com/dgroup/arch4u-pmd/discussions/86) | arch4u-pmd | 0.1.0 | ✅ | ⌛ | ⌛ |
+| [PotentiallyThreadLocalPollutionByMdc](https://github.com/dgroup/arch4u-pmd/discussions/88) | arch4u-pmd | 0.1.0 | ✅ | ⌛ | ⌛ |
+| AbstractClassWithoutAbstractMethod | pmd-java | 3.0 | ✅ | ⌛ | ⌛ |
+| AccessorClassGeneration | pmd-java | 1.04 | ✅ | ⌛ | ⌛ |
+| AccessorMethodGeneration | pmd-java | 5.5.4 | ✅ | ⌛ | ⌛ |
+| ArrayIsStoredDirectly | pmd-java | 2.2 | ✅ | ⌛ | ⌛ |
+| AvoidMessageDigestField | pmd-java | 6.18.0 | ✅ | ⌛ | ⌛ |
+| AvoidPrintStackTrace | pmd-java | 3.2 | ✅ | ⌛ | ⌛ |
+| AvoidReassigningCatchVariables | pmd-java | 6.27.0 | ✅ | ⌛ | ⌛ |
+| AvoidReassigningLoopVariables | pmd-java | 6.11.0 | ✅ | ⌛ | ⌛ |
+| AvoidReassigningParameters | pmd-java | 1.0 | ✅ | ⌛ | ⌛ |
+| AvoidStringBufferField | pmd-java | 4.2 | ✅ | ⌛ | ⌛ |
+| AvoidUsingHardCodedIP | pmd-java | 4.1 | ✅ | ⌛ | ⌛ |
+| CheckResultSet | pmd-java | 4.1 | ✅ | ⌛ | ⌛ |
+| ConstantsInInterface | pmd-java | 5.5 | ✅ | ⌛ | ⌛ |
+| DefaultLabelNotLastInSwitchStmt | pmd-java | 1.5 | ✅ | ⌛ | ⌛ |
+| DoubleBraceInitialization | pmd-java | 6.16.0 | ✅ | ⌛ | ⌛ |
+| ForLoopCanBeForeach | pmd-java | 6.0.0 | ✅ | ⌛ | ⌛ |
+| ForLoopVariableCount | pmd-java | 6.11.0 | ✅ | ⌛ | ⌛ |
+| GuardLogStatement | pmd-java | 5.1.0 | ❌ | ⌛ | ⌛ |
+| JUnit4SuitesShouldUseSuiteAnnotation | pmd-java | 4.0 | ✅ | ⌛ | ⌛ |
+| JUnit4TestShouldUseAfterAnnotation | pmd-java | 4.0 | ✅ | ⌛ | ⌛ |
+| JUnit4TestShouldUseBeforeAnnotation | pmd-java | 4.0 | ✅ | ⌛ | ⌛ |
+| JUnit4TestShouldUseTestAnnotation | pmd-java | 4.0 | ✅ | ⌛ | ⌛ |
+| JUnit5TestShouldBePackagePrivate | pmd-java | 6.35.0 | ✅ | ⌛ | ⌛ |
+| JUnitAssertionsShouldIncludeMessage | pmd-java | 1.04 | 🌵 | ⌛ | ⌛ |
+| JUnitTestContainsTooManyAsserts | pmd-java | 5.0 | ✅ | ⌛ | ⌛ |
+| JUnitTestsShouldIncludeAssert | pmd-java | 2.0 | ✅ | ⌛ | ⌛ |
+| JUnitUseExpected | pmd-java | 4.0 | ✅ | ⌛ | ⌛ |
+| LiteralsFirstInComparisons | pmd-java | 6.24.0 | ✅ | ⌛ | ⌛ |
+| LooseCoupling | pmd-java | 0.7 | ✅ | ⌛ | ⌛ |
+| MethodReturnsInternalArray | pmd-java | 2.2 | ✅ | ⌛ | ⌛ |
+| MissingOverride | pmd-java | 6.2.0 | ✅ | ⌛ | ⌛ |
+| OneDeclarationPerLine | pmd-java | 5.0 | ✅ | ⌛ | ⌛ |
+| PositionLiteralsFirstInCaseInsensitiveComparisons | pmd-java | 5.1 | ✅ | ⌛ | ⌛ |
+| PositionLiteralsFirstInComparisons | pmd-java | 3.3 | ✅ | ⌛ | ⌛ |
+| PreserveStackTrace | pmd-java | 3.7 | ✅ | ⌛ | ⌛ |
+| PrimitiveWrapperInstantiation | pmd-java | 6.37.0 | ✅ | ⌛ | ⌛ |
+| ReplaceEnumerationWithIterator | pmd-java | 3.4 | ✅ | ⌛ | ⌛ |
+| ReplaceHashtableWithMap | pmd-java | 3.4 | ✅ | ⌛ | ⌛ |
+| ReplaceVectorWithList | pmd-java | 3.4 | ✅ | ⌛ | ⌛ |
+| SimplifiableTestAssertion | pmd-java | 6.37.0 | ✅ | ⌛ | ⌛ |
+| SwitchStmtsShouldHaveDefault | pmd-java | 1.0 | ✅ | ⌛ | ⌛ |
+| SystemPrintln | pmd-java | 2.1 | ✅ | ⌛ | ⌛ |
+| UnusedAssignment | pmd-java | 6.26.0 | ✅ | ⌛ | ⌛ |
+| UnusedFormalParameter | pmd-java | 0.8 | ✅ | ⌛ | ⌛ |
+| UnusedImports | pmd-java | 1.0 | ✅ | ⌛ | ⌛ |
+| UnusedLocalVariable | pmd-java | 0.1 | ✅ | ⌛ | ⌛ |
+| UnusedPrivateField | pmd-java | 0.1 | ✅ | ⌛ | ⌛ |
+| UnusedPrivateMethod | pmd-java | 0.7 | 🌵 | ⌛ | ⌛ |
+| UseAssertEqualsInsteadOfAssertTrue | pmd-java | 3.1 | ✅ | ⌛ | ⌛ |
+| UseAssertNullInsteadOfAssertTrue | pmd-java | 3.5 | ✅ | ⌛ | ⌛ |
+| UseAssertSameInsteadOfAssertTrue | pmd-java | 3.1 | ✅ | ⌛ | ⌛ |
+| UseAssertTrueInsteadOfAssertEquals | pmd-java | 5.0 | ✅ | ⌛ | ⌛ |
+| UseCollectionIsEmpty | pmd-java | 3.9 | ✅ | ⌛ | ⌛ |
+| UseVarargs | pmd-java | 5.0 | ✅ | ⌛ | ⌛ |
+| AbstractNaming | pmd-java | 1.4 | ✅ | ⌛ | ⌛ |
+| AtLeastOneConstructor | pmd-java | 1.04 | 🌵 | ✅ | ⌛ |
+| AvoidDollarSigns | pmd-java | 1.4 | ✅ | ⌛ | ⌛ |
+| AvoidFinalLocalVariable | pmd-java | 4.1 | ✅ | ⌛ | ⌛ |
+| AvoidPrefixingMethodParameters | pmd-java | 5.0 | ✅ | ⌛ | ⌛ |
+| AvoidProtectedFieldInFinalClass | pmd-java | 2.1 | ✅ | ⌛ | ⌛ |
+| AvoidProtectedMethodInFinalClassNotExtending | pmd-java | 5.1 | ✅ | ⌛ | ⌛ |
+| AvoidUsingNativeCode | pmd-java | 4.1 | ✅ | ⌛ | ⌛ |
+| BooleanGetMethodName | pmd-java | 4.0 | ✅ | ⌛ | ⌛ |
+| CallSuperInConstructor | pmd-java | 3.0 | ✅ | ⌛ | ⌛ |
+| ClassNamingConventions | pmd-java | 1.2 | ✅ | ⌛ | ⌛ |
+| CommentDefaultAccessModifier | pmd-java | 5.4.0 | ✅ | ⌛ | ⌛ |
+| ConfusingTernary | pmd-java | 1.9 | ✅ | ⌛ | ⌛ |
+| ControlStatementBraces | pmd-java | 6.2.0 | ✅ | ⌛ | ⌛ |
+| DefaultPackage | pmd-java | 3.4 | ✅ | ⌛ | ⌛ |
+| DontImportJavaLang | pmd-java | 0.5 | ✅ | ⌛ | ⌛ |
+| DuplicateImports | pmd-java | 0.5 | ✅ | ⌛ | ⌛ |
+| EmptyMethodInAbstractClassShouldBeAbstract | pmd-java | 4.1 | ✅ | ⌛ | ⌛ |
+| ExtendsObject | pmd-java | 5.0 | ✅ | ⌛ | ⌛ |
+| FieldDeclarationsShouldBeAtStartOfClass | pmd-java | 5.0 | ✅ | ⌛ | ⌛ |
+| ForLoopShouldBeWhileLoop | pmd-java | 1.02 | ✅ | ⌛ | ⌛ |
+| ForLoopsMustUseBraces | pmd-java | 0.7 | ✅ | ⌛ | ⌛ |
+| GenericsNaming | pmd-java | 4.2.6 | ✅ | ⌛ | ⌛ |
+| FormalParameterNamingConventions | pmd-java | 6.4.0 | ✅ | ⌛ | ⌛ |
+| IfElseStmtsMustUseBraces | pmd-java | 0.2 | ✅ | ⌛ | ⌛ |
+| IfStmtsMustUseBraces | pmd-java | 1.0 | ✅ | ⌛ | ⌛ |
+| LocalHomeNamingConvention | pmd-java | 4.0 | ✅ | ⌛ | ⌛ |
+| IdenticalCatchBranches | pmd-java | 6.4.0 | ✅ | ⌛ | ⌛ |
+| LinguisticNaming | pmd-java | 6.7.0 | ✅ | ⌛ | ⌛ |
+| LocalInterfaceSessionNamingConvention | pmd-java | 4.0 | ✅ | ⌛ | ⌛ |
+| LocalVariableCouldBeFinal | pmd-java | 2.2 | ✅ | ⌛ | ⌛ |
+| LocalVariableNamingConventions | pmd-java | 6.6.0 | ✅ | ⌛ | ⌛ |
+| LongVariable | pmd-java | 0.3 | ✅ | ⌛ | ⌛ |
+| MDBAndSessionBeanNamingConvention | pmd-java | 4.0 | ✅ | ⌛ | ⌛ |
+| MethodArgumentCouldBeFinal | pmd-java | 2.2 | ✅ | ⌛ | ⌛ |
+| MethodNamingConventions | pmd-java | 1.2 | ✅ | ⌛ | ⌛ |
+| MIsLeadingVariableName | pmd-java | 3.4 | ✅ | ⌛ | ⌛ |
+| NoPackage | pmd-java | 3.3 | ✅ | ⌛ | ⌛ |
+| UseUnderscoresInNumericLiterals | pmd-java | 6.10.0 | ✅ | ⌛ | ⌛ |
+| OnlyOneReturn | pmd-java | 6.10.0 | 🌵 | ⌛ | ⌛ |
+| PackageCase | pmd-java | 3.3 | ✅ | ⌛ | ⌛ |
+| PrematureDeclaration | pmd-java | 5.0 | ✅ | ⌛ | ⌛ |
+| RemoteInterfaceNamingConvention | pmd-java | 4.0 | ✅ | ⌛ | ⌛ |
+| RemoteSessionInterfaceNamingConvention | pmd-java | 4.0 | ✅ | ⌛ | ⌛ |
+| ShortClassName | pmd-java | 5.0 | ✅ | ⌛ | ⌛ |
+| ShortMethodName | pmd-java | 0.3 | ✅ | ⌛ | ⌛ |
+| ShortVariable | pmd-java | 0.3 | ✅ | ⌛ | ⌛ |
+| SuspiciousConstantFieldName | pmd-java | 2.0 | ✅ | ⌛ | ⌛ |
+| TooManyStaticImports | pmd-java | 4.1 | ✅ | ⌛ | ⌛ |
+| UnnecessaryAnnotationValueElement | pmd-java | 6.2.0 | ✅ | ⌛ | ⌛ |
+| UnnecessaryCast | pmd-java | 6.24.0 | ✅ | ⌛ | ⌛ |
+| UnnecessaryConstructor | pmd-java | 1.0 | ✅ | ⌛ | ⌛ |
+| UnnecessaryFullyQualifiedName | pmd-java | 5.0 | ✅ | ⌛ | ⌛ |
+| UnnecessaryImport | pmd-java | 6.34.0 | ✅ | ⌛ | ⌛ |
+| UnnecessaryLocalBeforeReturn | pmd-java | 3.3 | ✅ | ⌛ | ⌛ |
+| UnnecessaryModifier | pmd-java | 1.02 | ✅ | ⌛ | ⌛ |
+| UnnecessaryReturn | pmd-java | 1.3 | ✅ | ⌛ | ⌛ |
+| UseDiamondOperator | pmd-java | 6.11.0 | ✅ | ⌛ | ⌛ |
+| UselessParentheses | pmd-java | 5.0 | ✅ | ⌛ | ⌛ |
+| UselessQualifiedThis | pmd-java | 5.4.0 | ✅ | ⌛ | ⌛ |
+| UseShortArrayInitializer | pmd-java | 6.15.0 | ✅ | ⌛ | ⌛ |
+| VariableNamingConventions | pmd-java | 1.2 | ✅ | ⌛ | ⌛ |
+| WhileLoopsMustUseBraces | pmd-java | 0.7 | ✅ | ⌛ | ⌛ |
+| [AddEmptyString](https://pmd.github.io/latest/pmd_rules_java_performance.html#addemptystring) | pmd-java | 4.0 | ✅ | ⌛ | ⌛ |
+| [AppendCharacterWithChar](https://pmd.github.io/latest/pmd_rules_java_performance.html#appendcharacterwithchar) | pmd-java | 3.5 | ✅ | ⌛ | ⌛ |
+| [AvoidArrayLoops](https://pmd.github.io/latest/pmd_rules_java_performance.html#avoidarrayloops) | pmd-java | 3.5 | ✅ | ⌛ | ⌛ |
+| [AvoidCalendarDateCreation](https://pmd.github.io/latest/pmd_rules_java_performance.html#avoidcalendardatecreation) | pmd-java | 6.25.0 | ✅ | ⌛ | ⌛ |
+| [AvoidFileStream](https://pmd.github.io/latest/pmd_rules_java_performance.html#avoidfilestream) | pmd-java | 6.0.0 | ✅ | ⌛ | ⌛ |
+| [AvoidInstantiatingObjectsInLoops](https://pmd.github.io/latest/pmd_rules_java_performance.html#avoidinstantiatingobjectsinloops) | pmd-java | 2.2 | ✅ | ⌛ | ⌛ |
+| [AvoidUsingShortType](https://pmd.github.io/latest/pmd_rules_java_performance.html#avoidusingshorttype) | pmd-java | 4.1 | ❌ | ⌛ | ⌛ |
+| [BigIntegerInstantiation](https://pmd.github.io/latest/pmd_rules_java_performance.html#bigintegerinstantiation) | pmd-java | 3.9 | ✅ | ⌛ | ⌛ |
+| [BooleanInstantiation](https://pmd.github.io/latest/pmd_rules_java_performance.html#booleaninstantiation) | pmd-java | 1.2 | ❌ | ⌛ | ⌛ |
+| [ByteInstantiation](https://pmd.github.io/latest/pmd_rules_java_performance.html#byteinstantiation) | pmd-java | 4.0 | ❌ | ⌛ | ⌛ |
+| [ConsecutiveAppendsShouldReuse](https://pmd.github.io/latest/pmd_rules_java_performance.html#consecutiveappendsshouldreuse) | pmd-java | 5.1 | ✅ | ⌛ | ⌛ |
+| [ConsecutiveLiteralAppends](https://pmd.github.io/latest/pmd_rules_java_performance.html#consecutiveliteralappends) | pmd-java | 3.5 | ✅ | ⌛ | ⌛ |
+| [InefficientEmptyStringCheck](https://pmd.github.io/latest/pmd_rules_java_performance.html#inefficientemptystringcheck) | pmd-java | 3.6 | ✅ | ⌛ | ⌛ |
+| [InefficientStringBuffering](https://pmd.github.io/latest/pmd_rules_java_performance.html#inefficientstringbuffering) | pmd-java | 3.4 | ✅ | ⌛ | ⌛ |
+| [InsufficientStringBufferDeclaration](https://pmd.github.io/latest/pmd_rules_java_performance.html#insufficientstringbufferdeclaration) | pmd-java | 3.6 | ✅ | ⌛ | ⌛ |
+| [IntegerInstantiation](https://pmd.github.io/latest/pmd_rules_java_performance.html#integerinstantiation) | pmd-java | 3.5 | ❌ | ⌛ | ⌛ |
+| [LongInstantiation](https://pmd.github.io/latest/pmd_rules_java_performance.html#longinstantiation) | pmd-java | 4.0 | ❌ | ⌛ | ⌛ |
+| [OptimizableToArrayCall](https://pmd.github.io/latest/pmd_rules_java_performance.html#optimizabletoarraycall) | pmd-java | 1.8 | ✅ | ⌛ | ⌛ |
+| [RedundantFieldInitializer](https://pmd.github.io/latest/pmd_rules_java_performance.html#redundantfieldinitializer) | pmd-java | 5.0 | ✅ | ⌛ | ⌛ |
+| [ShortInstantiation](https://pmd.github.io/latest/pmd_rules_java_performance.html#shortinstantiation) | pmd-java | 4.0 | ❌ | ⌛ | ⌛ |
+| [SimplifyStartsWith](https://pmd.github.io/latest/pmd_rules_java_performance.html#simplifystartswith) | pmd-java | 3.1 | ❌ | ⌛ | ⌛ |
+| [StringInstantiation](https://pmd.github.io/latest/pmd_rules_java_performance.html#stringinstantiation) | pmd-java | 1.0 | ✅ | ⌛ | ⌛ |
+| [StringToString](https://pmd.github.io/latest/pmd_rules_java_performance.html#stringtostring) | pmd-java | 1.0 | ✅ | ⌛ | ⌛ |
+| [TooFewBranchesForASwitchStatement](https://pmd.github.io/latest/pmd_rules_java_performance.html#toofewbranchesforaswitchstatement) | pmd-java | 4.2 | ✅ | ⌛ | ⌛ |
+| [UnnecessaryWrapperObjectCreation](https://pmd.github.io/latest/pmd_rules_java_performance.html#unnecessarywrapperobjectcreation) | pmd-java | 3.8 | ✅ | ⌛ | ⌛ |
+| [UseArrayListInsteadOfVector](https://pmd.github.io/latest/pmd_rules_java_performance.html#usearraylistinsteadofvector) | pmd-java | 3.0 | ✅ | ⌛ | ⌛ |
+| [UseArraysAsList](https://pmd.github.io/latest/pmd_rules_java_performance.html#usearraysaslist) | pmd-java | 3.5 | ✅ | ⌛ | ⌛ |
+| [UseIndexOfChar](https://pmd.github.io/latest/pmd_rules_java_performance.html#useindexofchar) | pmd-java | 3.5 | ✅ | ⌛ | ⌛ |
+| [UseIOStreamsWithApacheCommonsFileItem](https://pmd.github.io/latest/pmd_rules_java_performance.html#useiostreamswithapachecommonsfileitem) | pmd-java | 6.25.0 | ✅ | ⌛ | ⌛ |
+| [UselessStringValueOf](https://pmd.github.io/latest/pmd_rules_java_performance.html#uselessstringvalueof) | pmd-java | 3.8 | ✅ | ⌛ | ⌛ |
+| [UseStringBufferForStringAppends](https://pmd.github.io/latest/pmd_rules_java_performance.html#usestringbufferforstringappends) | pmd-java | 3.1 | ✅ | ⌛ | ⌛ |
+| [UseStringBufferLength](https://pmd.github.io/latest/pmd_rules_java_performance.html#usestringbufferlength) | pmd-java | 3.4 | ✅ | ⌛ | ⌛ |
+| [AvoidSynchronizedAtMethodLevel](https://pmd.github.io/latest/pmd_rules_java_multithreading.html#avoidsynchronizedatmethodlevel) | pmd-java | 3.0 | ✅ | ⌛ | ⌛ |
+| [AvoidThreadGroup](https://pmd.github.io/latest/pmd_rules_java_multithreading.html#avoidthreadgroup) | pmd-java | 3.6 | ✅ | ⌛ | ⌛ |
+| [AvoidUsingVolatile](https://pmd.github.io/latest/pmd_rules_java_multithreading.html#avoidusingvolatile) | pmd-java | 3.0 | ✅ | ⌛ | ⌛ |
+| [DoNotUseThreads](https://pmd.github.io/latest/pmd_rules_java_multithreading.html#donotusethreads) | pmd-java | 4.1 | ✅ | ⌛ | ⌛ |
+| [DontCallThreadRun](https://pmd.github.io/latest/pmd_rules_java_multithreading.html#dontcallthreadrun) | pmd-java | 3.0 | ✅ | ⌛ | ⌛ |
+| [DoubleCheckedLocking](https://pmd.github.io/latest/pmd_rules_java_multithreading.html#doublecheckedlocking) | pmd-java | 1.04 | ✅ | ⌛ | ⌛ |
+| [NonThreadSafeSingleton](https://pmd.github.io/latest/pmd_rules_java_multithreading.html#nonthreadsafesingleton) | pmd-java | 3.4 | ✅ | ⌛ | ⌛ |
+| [UnsynchronizedStaticDateFormatter](https://pmd.github.io/latest/pmd_rules_java_multithreading.html#unsynchronizedstaticdateformatter) | pmd-java | 3.6 | ❌ | ⌛ | ⌛ |
+| [UnsynchronizedStaticFormatter](https://pmd.github.io/latest/pmd_rules_java_multithreading.html#unsynchronizedstaticformatter) | pmd-java | 3.0 | ✅ | ⌛ | ⌛ |
+| [UseConcurrentHashMap](https://pmd.github.io/latest/pmd_rules_java_multithreading.html#unsynchronizedstaticformatter) | pmd-java | 4.2.6 | ❌ | ⌛ | ⌛ |
+| [UseNotifyAllInsteadOfNotify](https://pmd.github.io/latest/pmd_rules_java_multithreading.html#usenotifyallinsteadofnotify) | pmd-java | 3.0 | ✅ | ⌛ | ⌛ |
+| [CommentContent](https://pmd.github.io/latest/pmd_rules_java_documentation.html#ntcontent) | pmd-java | 5.0 | ❌ | ⌛ | ⌛ |
+| [CommentRequired](https://pmd.github.io/latest/pmd_rules_java_documentation.html#commentrequired) | pmd-java | 5.1 | 🌵 | ⌛ | ⌛ |
+| [UncommentedEmptyConstructor](https://pmd.github.io/latest/pmd_rules_java_documentation.html#uncommentedemptyconstructor) | pmd-java | 3.4 | ✅ | ⌛ | ⌛ |
+| [UncommentedEmptyMethodBody](https://pmd.github.io/latest/pmd_rules_java_documentation.html#uncommentedemptymethodbody) | pmd-java | 3.4 | ✅ | ⌛ | ⌛ |
+| [AbstractClassWithoutAnyMethod](https://pmd.github.io/latest/pmd_rules_java_design.html#abstractclasswithoutanymethod) | pmd-java | 4.2 | ✅ | ⌛ | ⌛ |
+| [AvoidCatchingGenericException](https://pmd.github.io/latest/pmd_rules_java_design.html#avoidcatchinggenericexception) | pmd-java | 4.2.6 | ❌ | ⌛ | ⌛ |
+| [AvoidDeeplyNestedIfStmts](https://pmd.github.io/latest/pmd_rules_java_design.html#avoiddeeplynestedifstmts) | pmd-java | 1.0 | ✅ | ⌛ | ⌛ |
+| [AvoidRethrowingException](https://pmd.github.io/latest/pmd_rules_java_design.html#avoidrethrowingexception) | pmd-java | 3.8 | ✅ | ⌛ | ⌛ |
+| [AvoidThrowingNewInstanceOfSameException](https://pmd.github.io/latest/pmd_rules_java_design.html#avoidthrowingnewinstanceofsameexception) | pmd-java | 4.2.5 | ✅ | ⌛ | ⌛ |
+| [AvoidThrowingNullPointerException](https://pmd.github.io/latest/pmd_rules_java_design.html#avoidthrowingnullpointerexception) | pmd-java | 1.8 | ✅ | ⌛ | ⌛ |
+| [AvoidThrowingRawExceptionTypes](https://pmd.github.io/latest/pmd_rules_java_design.html#avoidthrowingrawexceptiontypes) | pmd-java | 1.8 | ✅ | ⌛ | ⌛ |
+| [AvoidUncheckedExceptionsInSignatures](https://pmd.github.io/latest/pmd_rules_java_design.html#avoiduncheckedexceptionsinsignatures) | pmd-java | 6.13.0 | ✅ | ⌛ | ⌛ |
+| [ClassWithOnlyPrivateConstructorsShouldBeFinal](https://pmd.github.io/latest/pmd_rules_java_design.html#classwithonlyprivateconstructorsshouldbefinal) | pmd-java | 4.1 | ✅ | ⌛ | ⌛ |
+| [CollapsibleIfStatements](https://pmd.github.io/latest/pmd_rules_java_design.html#collapsibleifstatements) | pmd-java | 3.1 | ✅ | ⌛ | ⌛ |
+| [CouplingBetweenObjects](https://pmd.github.io/latest/pmd_rules_java_design.html#couplingbetweenobjects) | pmd-java | 1.0.4 | 🌵 | ⌛ | ⌛ |
+| [CognitiveComplexity](https://pmd.github.io/latest/pmd_rules_java_design.html#cognitivecomplexity) | pmd-java | 6.35.0 | ✅ | ⌛ | ⌛ |
+| [CyclomaticComplexity](https://pmd.github.io/latest/pmd_rules_java_design.html#cyclomaticcomplexity) | pmd-java | 1.03 | ✅ | ⌛ | ⌛ |
+| [DataClass](https://pmd.github.io/latest/pmd_rules_java_design.html#dataclass) | pmd-java | 6.0.0 | ✅ | ⌛ | ⌛ |
+| [DoNotExtendJavaLangError](https://pmd.github.io/latest/pmd_rules_java_design.html#donotextendjavalangerror) | pmd-java | 4.0 | ✅ | ⌛ | ⌛ |
+| [ExceptionAsFlowControl](https://pmd.github.io/latest/pmd_rules_java_design.html#exceptionasflowcontrol) | pmd-java | 1.8 | ✅ | ⌛ | ⌛ |
+| [ExcessiveClassLength](https://pmd.github.io/latest/pmd_rules_java_design.html#excessiveclasslength) | pmd-java | 0.6 | ✅ | ⌛ | ⌛ |
+| [ExcessiveImports](https://pmd.github.io/latest/pmd_rules_java_design.html#excessiveimports) | pmd-java | 1.04 | ✅ | ⌛ | ⌛ |
+| [ExcessiveMethodLength](https://pmd.github.io/latest/pmd_rules_java_design.html#excessivemethodlength) | pmd-java | 0.6 | ✅ | ⌛ | ⌛ |
+| [ExcessiveParameterList](https://pmd.github.io/latest/pmd_rules_java_design.html#excessiveparameterlist) | pmd-java | 0.9 | ✅ | ⌛ | ⌛ |
+| [ExcessivePublicCount](https://pmd.github.io/latest/pmd_rules_java_design.html#excessivepubliccount) | pmd-java | 1.04 | ✅ | ⌛ | ⌛ |
+| [FinalFieldCouldBeStatic](https://pmd.github.io/latest/pmd_rules_java_design.html#finalfieldcouldbestatic) | pmd-java | 1.1 | ✅ | ⌛ | ⌛ |
+| [GodClass](https://pmd.github.io/latest/pmd_rules_java_design.html#godclass) | pmd-java | 5.0 | ✅ | ⌛ | ⌛ |
+| [ImmutableField](https://pmd.github.io/latest/pmd_rules_java_design.html#immutablefield) | pmd-java | 2.0 | ✅ | ⌛ | ⌛ |
+| [LawOfDemeter](https://pmd.github.io/latest/pmd_rules_java_design.html#lawofdemeter) | pmd-java | 5.0 | ❌ | ⌛ | ⌛ |
+| [LogicInversion](https://pmd.github.io/latest/pmd_rules_java_design.html#logicinversion) | pmd-java | 5.0 | ✅ | ⌛ | ⌛ |
+| [LoosePackageCoupling](https://pmd.github.io/latest/pmd_rules_java_design.html#loosepackagecoupling) | pmd-java | 5.0 | ❌ | ⌛ | ⌛ |
+| [ModifiedCyclomaticComplexity](https://pmd.github.io/latest/pmd_rules_java_design.html#modifiedcyclomaticcomplexity) | pmd-java | 5.1.2 | ✅ | ⌛ | ⌛ |
+| [NcssConstructorCount](https://pmd.github.io/latest/pmd_rules_java_design.html#ncssconstructorcount) | pmd-java | 3.9 | ✅ | ⌛ | ⌛ |
+| [NcssCount](https://pmd.github.io/latest/pmd_rules_java_design.html#ncsscount) | pmd-java | 6.0.0 | ✅ | ⌛ | ⌛ |
+| [NcssMethodCount](https://pmd.github.io/latest/pmd_rules_java_design.html#ncssmethodcount) | pmd-java | 3.9 | ✅ | ⌛ | ⌛ |
+| [NcssTypeCount](https://pmd.github.io/latest/pmd_rules_java_design.html#ncsstypecount) | pmd-java | 3.9 | ✅ | ⌛ | ⌛ |
+| [NPathComplexity](https://pmd.github.io/latest/pmd_rules_java_design.html#npathcomplexity) | pmd-java | 3.9 | ✅ | ⌛ | ⌛ |
+| [SignatureDeclareThrowsException](https://pmd.github.io/latest/pmd_rules_java_design.html#signaturedeclarethrowsexception) | pmd-java | 1.2 | ❌ | ⌛ | ⌛ |
+| [SimplifiedTernary](https://pmd.github.io/latest/pmd_rules_java_design.html#simplifiedternary) | pmd-java | 5.4.0 | ✅ | ⌛ | ⌛ |
+| [SimplifyBooleanAssertion](https://pmd.github.io/latest/pmd_rules_java_design.html#simplifybooleanassertion) | pmd-java | 3.6 | ✅ | ⌛ | ⌛ |
+| [SimplifyBooleanExpressions](https://pmd.github.io/latest/pmd_rules_java_design.html#simplifybooleanexpressions) | pmd-java | 1.05 | ✅ | ⌛ | ⌛ |
+| [SimplifyBooleanReturns](https://pmd.github.io/latest/pmd_rules_java_design.html#simplifybooleanreturns) | pmd-java | 0.9 | ✅ | ⌛ | ⌛ |
+| [SimplifyConditional](https://pmd.github.io/latest/pmd_rules_java_design.html#simplifyconditional) | pmd-java | 3.1 | ✅ | ⌛ | ⌛ |
+| [SingularField](https://pmd.github.io/latest/pmd_rules_java_design.html#singularfield) | pmd-java | 3.1 | ✅ | ⌛ | ⌛ |
+| [StdCyclomaticComplexity](https://pmd.github.io/latest/pmd_rules_java_design.html#singularfield) | pmd-java | 5.1.2 | ❌ | ⌛ | ⌛ |
+| [SwitchDensity](https://pmd.github.io/latest/pmd_rules_java_design.html#switchdensity) | pmd-java | 1.02 | ✅ | ⌛ | ⌛ |
+| [TooManyFields](https://pmd.github.io/latest/pmd_rules_java_design.html#toomanyfields) | pmd-java | 3.0 | 🌵 | ⌛ | ⌛ |
+| [TooManyMethods](https://pmd.github.io/latest/pmd_rules_java_design.html#toomanymethods) | pmd-java | 4.2 | 🌵 | ⌛ | ⌛ |
+| [UselessOverridingMethod](https://pmd.github.io/latest/pmd_rules_java_design.html#uselessoverridingmethod) | pmd-java | 3.3 | ✅ | ⌛ | ⌛ |
+| [UseObjectForClearerAPI](https://pmd.github.io/latest/pmd_rules_java_design.html#useobjectforclearerapi) | pmd-java | 4.2.6 | ❌ | ⌛ | ⌛ |
+| [UseUtilityClass](https://pmd.github.io/latest/pmd_rules_java_design.html#useutilityclass) | pmd-java | 0.3 | ✅ | ⌛ | ⌛ |
+| [MutableStaticState](https://pmd.github.io/latest/pmd_rules_java_design.html#mutablestaticstate) | pmd-java | 6.35.0 | ✅ | ⌛ | ⌛ |
### How to use?
#### Maven (pom.xml)
diff --git a/src/main/resources/io/github/dgroup/arch4u/pmd/api/arch4u-rest-ruleset.xml b/src/main/resources/io/github/dgroup/arch4u/pmd/api/arch4u-rest-ruleset.xml
index 2793a2e..436be6d 100644
--- a/src/main/resources/io/github/dgroup/arch4u/pmd/api/arch4u-rest-ruleset.xml
+++ b/src/main/resources/io/github/dgroup/arch4u/pmd/api/arch4u-rest-ruleset.xml
@@ -80,9 +80,8 @@
import org.springframework.web.bind.annotation.GetMapping;
@RestController
- public class MyTypicalRestController extends ParentClass {
+ public class MyTypicalRestController implements TypicalRestApiGeneratedByOpenApi {
@Override
- @GetMapping("/get")
public String get() {
return null;
}
diff --git a/src/main/resources/io/github/dgroup/arch4u/pmd/arch4u-template-ruleset.xml b/src/main/resources/io/github/dgroup/arch4u/pmd/arch4u-template-ruleset.xml
index 8ba3107..7132b33 100644
--- a/src/main/resources/io/github/dgroup/arch4u/pmd/arch4u-template-ruleset.xml
+++ b/src/main/resources/io/github/dgroup/arch4u/pmd/arch4u-template-ruleset.xml
@@ -16,7 +16,8 @@
Avoid to use prohibited classes.
See discussion about tips/tricks implementation on Github:
- https://github.com/pmd/pmd/discussions/3705
+ - https://github.com/pmd/pmd/discussions/3705
+ - https://github.com/dgroup/arch4u-pmd/discussions/101
3
@@ -110,11 +111,9 @@
-
- TBD
-
3
@@ -63,6 +62,7 @@
+