Skip to content

Add a profile about Cyclomatic Complexity #387

@jabrena

Description

@jabrena
<maven-plugin-pmd.version>3.28.0</maven-plugin-pmd.version>
<maven-plugin-jxr.version>3.6.0</maven-plugin-jxr.version>
    <!-- Cyclomatic Complexity Analysis Profile -->
    <profile>
      <id>cyclomatic-complexity</id>
      <activation>
        <activeByDefault>false</activeByDefault>
      </activation>
      <build>
        <plugins>
          <!-- PMD Plugin for Cyclomatic Complexity Analysis -->
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-pmd-plugin</artifactId>
            <version>${maven-plugin-pmd.version}</version>
            <configuration>
              <rulesets>
                <ruleset>src/main/pmd/pmd-cyclomatic-complexity.xml</ruleset>
              </rulesets>
              <printFailingErrors>true</printFailingErrors>
              <linkXRef>true</linkXRef>
              <minimumTokens>100</minimumTokens>
            </configuration>
            <executions>
              <execution>
                <id>pmd-check</id>
                <phase>verify</phase>
                <goals>
                  <goal>check</goal>
                </goals>
              </execution>
              <execution>
                <id>pmd-report</id>
                <phase>site</phase>
                <goals>
                  <goal>pmd</goal>
                </goals>
              </execution>
            </executions>
          </plugin>

        </plugins>
      </build>
      <reporting>
        <plugins>
          <!-- PMD Report Plugin -->
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-pmd-plugin</artifactId>
            <version>${maven-plugin-pmd.version}</version>
            <configuration>
              <rulesets>
                <ruleset>src/main/pmd/pmd-cyclomatic-complexity.xml</ruleset>
              </rulesets>
              <linkXRef>true</linkXRef>
            </configuration>
          </plugin>
          
          <!-- JXR Plugin for Source Cross-Reference -->
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jxr-plugin</artifactId>
            <version>${maven-plugin-jxr.version}</version>
          </plugin>
        </plugins>
      </reporting>
    </profile>
<!-- src/main/pmd/pmd-cyclomatic-complexity.xml -->
<!-- pmd/pmd-cyclomatic-complexity.xml -->

<?xml version="1.0"?>
<ruleset name="Cyclomatic Complexity Ruleset"
    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">

    <description>
        Custom ruleset for cyclomatic complexity analysis only
    </description>

    <!-- https://pmd.github.io/pmd/pmd_rules_java_design.html#cyclomaticcomplexity -->
    <rule ref="category/java/design.xml/CyclomaticComplexity">
        <properties>
            <property name="classReportLevel" value="70" />
            <property name="methodReportLevel" value="25" />
            <property name="cycloOptions" value="" />
        </properties>
    </rule>

</ruleset>
./mvnw clean site -Pcyclomatic-complexity

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions