arch4u-pmd
Used in:
components
- OverviewOverview
- VersionsVersions
- DependentsDependents
- DependenciesDependencies
<dependency> <groupId>io.github.dgroup</groupId> <artifactId>arch4u-pmd</artifactId> <version>0.2.6</version> </dependency>
<!-- ~ MIT License ~ ~ Copyright (c) 2019-2022 Yurii Dubinka ~ ~ Permission is hereby granted, free of charge, to any person obtaining a copy ~ of this software and associated documentation files (the "Software"), ~ to deal in the Software without restriction, including without limitation ~ the rights to use, copy, modify, merge, publish, distribute, sublicense, ~ and/or sell copies of the Software, and to permit persons to whom ~ the Software is furnished to do so, subject to the following conditions: ~ ~ The above copyright notice and this permission notice shall be included ~ in all copies or substantial portions of the Software. ~ ~ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR ~ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ~ FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE ~ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER ~ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ~ ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE ~ OR OTHER DEALINGS IN THE SOFTWARE. --> <project xmlns="http://maven.apache.org/POM/4.0.0" 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"> <modelVersion>4.0.0</modelVersion> <groupId>io.github.dgroup</groupId> <artifactId>arch4u-pmd</artifactId> <version>0.2.6</version> <packaging>jar</packaging> <name>${project.artifactId}</name> <description>Linting rules for Java frameworks like Spring, Quarkus, Jackson, SLF4J, etc., to avoid known problems in REST API, logging, observability, performance, and general best practices.</description> <url>https://github.com/dgroup/arch4u-pmd</url> <licenses> <license> <name>${project.licence}</name> <url>${project.licence.url}</url> <distribution>repo</distribution> </license> </licenses> <developers> <developer> <name>Yurii Dubinka</name> <email>yurii.dubinka@gmail.com</email> <organization>io.github.dgroup</organization> <organizationUrl>https://github.com/dgroup</organizationUrl> </developer> </developers> <scm> <connection>scm:git:git:github.com/dgroup/arch4u-pmd.git</connection> <developerConnection>scm:git:ssh://github.com:dgroup/arch4u-pmd.git</developerConnection> <url>http://github.com/dgroup/arch4u-pmd/tree/master</url> <tag>HEAD</tag> </scm> <distributionManagement> <snapshotRepository> <id>ossrh</id> <url>https://oss.sonatype.org/content/repositories/snapshots</url> </snapshotRepository> <repository> <id>ossrh</id> <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url> </repository> </distributionManagement> <properties> <!-- Application properties --> <build.version>${project.version}</build.version> <license>MIT License</license> <license.url>https://github.com/dgroup/arch4u-pmd/blob/master/license.txt</license.url> <!-- System, mvn plugins, etc --> <jdk.version>1.8</jdk.version> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <mvn.compiler.version>3.7.0</mvn.compiler.version> <mvn.jar.version>3.0.2</mvn.jar.version> <mvn.assembly.version>3.1.0</mvn.assembly.version> <mvn.resources.version>3.0.2</mvn.resources.version> <mvn.gh.release.version>1.2.0</mvn.gh.release.version> <mvn.nexus.version>1.6.8</mvn.nexus.version> <mvn.javadoc.version>3.3.1</mvn.javadoc.version> <mvn.source.version>2.2.1</mvn.source.version> <mvn.surefire.version>3.0.0-M3</mvn.surefire.version> <mvn.failsafe.version>3.0.0-M3</mvn.failsafe.version> <mvn.gpg.version>1.5</mvn.gpg.version> <mvn.properties.version>1.0.0</mvn.properties.version> <compiler-plugin.version>3.8.1</compiler-plugin.version> <jacoco.version>0.8.6</jacoco.version> <qulice.version>0.18.19</qulice.version> <sonar.version>3.4.0.905</sonar.version> <commons-logging.version>1.2</commons-logging.version> <!-- General dependencies --> <pmd.rules.version>6.55.0</pmd.rules.version> <!-- Testing --> <hamcrest.version>2.2</hamcrest.version> <cactoos-matchers.version>0.25</cactoos-matchers.version> <assertj.version>3.22.0</assertj.version> <jmh.version>1.36</jmh.version> <jmh.suite.name>arch4u-pmd-benchmarks</jmh.suite.name> <!-- Code quality --> <code.cvrg.classes-without-tests>3</code.cvrg.classes-without-tests> <code.cvrg.instructions>0.6</code.cvrg.instructions> <code.cvrg.complexity>0.55</code.cvrg.complexity> <code.cvrg.methods>0.5</code.cvrg.methods> <code.cvrg.branch>0.65</code.cvrg.branch> <code.cvrg.line>0.5</code.cvrg.line> <sonar.projectKey>dgroup_arch4u-pmd</sonar.projectKey> <sonar.organization>dgroup-github</sonar.organization> <sonar.host.url>https://sonarcloud.io</sonar.host.url> <sonar.coverage.exclusions> **/*Exception.java,**/*Fake*.java,**/*.Fake*.java,**/**.Fake*.java </sonar.coverage.exclusions> <sonar.coverage.jacoco.xmlReportPaths>${project.basedir}/target/site/jacoco/jacoco.xml </sonar.coverage.jacoco.xmlReportPaths> </properties> <dependencies> <dependency> <groupId>org.hamcrest</groupId> <artifactId>hamcrest</artifactId> <version>${hamcrest.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.assertj</groupId> <artifactId>assertj-core</artifactId> <version>${assertj.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.llorllale</groupId> <artifactId>cactoos-matchers</artifactId> <version>${cactoos-matchers.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.openjdk.jmh</groupId> <artifactId>jmh-core</artifactId> <version>${jmh.version}</version> </dependency> <dependency> <groupId>org.openjdk.jmh</groupId> <artifactId>jmh-generator-annprocess</artifactId> <version>${jmh.version}</version> <scope>provided</scope> </dependency> <dependency> <groupId>net.sourceforge.pmd</groupId> <artifactId>pmd-java</artifactId> <version>${pmd.rules.version}</version> <exclusions> <exclusion> <groupId>com.beust</groupId> <artifactId>jcommander</artifactId> </exclusion> <exclusion> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> </exclusion> <exclusion> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>net.sourceforge.pmd</groupId> <artifactId>pmd-test</artifactId> <version>${pmd.rules.version}</version> <scope>test</scope> </dependency> <!-- Dependencies needed in tests --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.13.4.2</version> <scope>test</scope> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.35</version> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <!-- @todo #/DEV Activate de.thetaphi:forbiddenapis in order to forbid the usage of forbidden API like static matchers, etc --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>${mvn.compiler.version}</version> <configuration> <source>${jdk.version}</source> <target>${jdk.version}</target> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <version>${mvn.source.version}</version> <executions> <execution> <id>attach-sources</id> <goals> <goal>jar-no-fork</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javadoc-plugin</artifactId> <version>${mvn.javadoc.version}</version> <executions> <execution> <id>attach-javadocs</id> <goals> <goal>jar</goal> </goals> </execution> </executions> <configuration> <doclint>none</doclint> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>${mvn.surefire.version}</version> <configuration> <reuseForks>true</reuseForks> <useSystemClassLoader>false</useSystemClassLoader> <threadCount>4</threadCount> </configuration> </plugin> <!-- @todo #/DEV Activate JMH for testing on JDK8 https://stackoverflow.com/questions/23583625/how-do-you-specify-the-jmh-microbenchmarks-test-to-run-without-using-a-resource https://gist.github.com/nicoulaj/5517176 http://tutorials.jenkov.com/java-performance/jmh.html --> </plugins> </build> <profiles> <profile> <id>qulice</id> <build> <plugins> <plugin> <groupId>com.qulice</groupId> <artifactId>qulice-maven-plugin</artifactId> <version>${qulice.version}</version> <configuration> <license>file:${basedir}/license.txt</license> <excludes combine.children="append"> <exclude>duplicatefinder:.*</exclude> <exclude>dependencies:org.cactoos:cactoos</exclude> <exclude>dependencies:org.llorllale:cactoos-matchers</exclude> <exclude>dependencies:org.openjdk.jmh</exclude> <exclude>dependencies:net.sourceforge.pmd:pmd-java</exclude> </excludes> </configuration> <executions> <execution> <id>apply-qulice-validations</id> <phase>validate</phase> <goals> <goal>check</goal> </goals> </execution> </executions> <dependencies> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>${commons-logging.version}</version> </dependency> </dependencies> </plugin> <plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <version>${jacoco.version}</version> <configuration> <output>file</output> <excludes> <exclude>io/dgroup/**/*Exception.*</exclude> <exclude>io/dgroup/**/*/*Fake*.*</exclude> <exclude>io/dgroup/**/*Envelope.*</exclude> </excludes> </configuration> <executions> <execution> <id>jacoco-initialize</id> <phase>process-resources</phase> <goals> <goal>prepare-agent</goal> </goals> </execution> <execution> <id>jacoco-check</id> <phase>test</phase> <goals> <goal>check</goal> </goals> <configuration> <rules> <rule> <element>BUNDLE</element> <limits> <limit> <counter>INSTRUCTION</counter> <value>COVEREDRATIO</value> <minimum>${code.cvrg.instructions}</minimum> </limit> <limit> <counter>LINE</counter> <value>COVEREDRATIO</value> <minimum>${code.cvrg.line}</minimum> </limit> <limit> <counter>BRANCH</counter> <value>COVEREDRATIO</value> <minimum>${code.cvrg.branch}</minimum> </limit> <limit> <counter>COMPLEXITY</counter> <value>COVEREDRATIO</value> <minimum>${code.cvrg.complexity}</minimum> </limit> <limit> <counter>METHOD</counter> <value>COVEREDRATIO</value> <minimum>${code.cvrg.methods}</minimum> </limit> <limit> <counter>CLASS</counter> <value>MISSEDCOUNT</value> <maximum>${code.cvrg.classes-without-tests}</maximum> </limit> </limits> </rule> </rules> </configuration> </execution> <execution> <id>jacoco-report</id> <phase>install</phase> <goals> <goal>report</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </profile> <profile> <id>ossrh-arch4u-pmd</id> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-gpg-plugin</artifactId> <version>${mvn.gpg.version}</version> <executions> <execution> <id>sign-artifacts</id> <phase>verify</phase> <goals> <goal>sign</goal> </goals> </execution> </executions> <configuration> <gpgArguments> <arg>--pinentry-mode</arg> <arg>loopback</arg> </gpgArguments> </configuration> </plugin> <plugin> <groupId>org.sonatype.plugins</groupId> <artifactId>nexus-staging-maven-plugin</artifactId> <version>${mvn.nexus.version}</version> <extensions>true</extensions> <configuration> <serverId>ossrh</serverId> <nexusUrl>https://oss.sonatype.org/</nexusUrl> <autoReleaseAfterClose>true</autoReleaseAfterClose> </configuration> </plugin> </plugins> </build> </profile> </profiles> </project>