arch4u-pmd is a library with pmd rules that bring new regulations related to known problems in REST API, logging, monitoring, etc., including reconfigured default pmd rules to decrease false-positive violations during usage of well-known frameworks like Spring, Quarkus, etc.
In addition to our custom/reconfigured rules we are using the latest stable pmd-java version which is 7.6.0
with more than 320+ rules with default configuration.
Legend:
arch4u-ruleset.xml
arch4u-ruleset.xml
arch4u-ruleset.xml
... <build> <plugins> ... <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-pmd-plugin</artifactId> <version>3.15.0</version> <executions> <execution> <phase>test</phase> <goals> <goal>check</goal> </goals> </execution> </executions> <configuration> <printFailingErrors>true</printFailingErrors> <rulesets> ... <ruleset>io/github/dgroup/arch4u/pmd/arch4u-ruleset.xml</ruleset> ... </rulesets> <excludeRoots> <excludeRoot>target/generated-sources/</excludeRoot> </excludeRoots> </configuration> <dependencies> <!-- Latest arch4u-rules --> <dependency> <groupId>io.github.dgroup</groupId> <artifactId>arch4u-pmd</artifactId> <version>${version}</version> </dependency> </dependencies> </plugin> ... </plugins> </build> ...
apply plugin: 'pmd' dependencies { ... pmd "io.github.dgroup:arch4u-pmd:${version}" // use latest arch4u-pmd rules version pmd "commons-io:commons-io:2.11.0" // required dependency by pmd engine ... } pmd { consoleOutput = true ruleSetFiles = files("io/github/dgroup/arch4u/pmd/arch4u-ruleset.xml") ruleSets = [] // Keep it as is, workaround for pmd }Include arch4u-pmd rules into your existing custom ruleset
your-pmd-ruleset.xml
<rule ref="io/github/dgroup/arch4u/pmd/arch4u-ruleset.xml"/>
to your-pmd-ruleset.xml
<?xml version="1.0"?> <ruleset name="pmd ruleset with your rules" xmlns="http://pmd.sourceforge.net/ruleset/2.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pmd.sourceforge.net/ruleset/2.0.0 https://pmd.sourceforge.io/ruleset_2_0_0.xsd"> ... <rule ref="io/github/dgroup/arch4u/pmd/arch4u-ruleset.xml"/> ... </ruleset>
<?xml version="1.0"?> <ruleset name="pmd ruleset with your rules"> ... <rule ref="io/github/dgroup/arch4u/pmd/arch4u-ruleset.xml"> <exclude name="UseExistingMediaTypeConstant"/> </rule> ... </ruleset>
<?xml version="1.0"?> <ruleset name="pmd ruleset with your rules"> ... <!-- 1. Exclude rule with default configuration --> <rule ref="io/github/dgroup/arch4u/pmd/arch4u-ruleset.xml"> <exclude name="UseExistingMediaTypeConstant"/> </rule> <!-- 2. Reconfigure rule with expected property --> <rule name="UseExistingMediaTypeConstant" language="java" externalInfoUrl="https://github.com/dgroup/arch4u-pmd/discussions/43" message="Use existing MediaType constant instead of string literal: https://github.com/dgroup/arch4u-pmd/discussions/43" class="io.github.dgroup.arch4u.pmd.UseExistingConstant"> <priority>3</priority> <properties> <!-- 3. Set the 'regexPattern' considering your needs --> <property name="regexPattern" description="Regular expression of prohibited string" value="(^|\s)(application\/(json|xml|atom\+xml|x-www-form-urlencoded|octet-stream|svg\+xml|xhtml\+xml)|(multipart\/form-data)|(text\/(html|xml|plain)))(\s|$)"/> </properties> </rule> ... </ruleset>Exclude particular folder from inspection
<?xml version="1.0"?> <ruleset name="pmd ruleset with your rules"> ... <!-- Exclude target folder that may contain generated sources --> <exclude-pattern>.*/target/generated-sources/.*</exclude-pattern> <exclude-pattern>.*/build/generated-sources/.*</exclude-pattern> <!-- Exclude test folder --> <exclude-pattern>.*/src/test/java/org/tbd/tbd/tbd/.*</exclude-pattern> ... </ruleset>
mvn -Pqulice clean install
<dependency> <groupId>io.github.dgroup</groupId> <artifactId>arch4u-pmd</artifactId> <version>${version}</version> </dependency>
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4