<?xml version="1.0" encoding="UTF-8"?>

<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">

  <!--
      TIPS:

      - use "mvn versions:display-dependency-updates" to see what dependencies
        have updates available.

      - use "mvn versions:display-plugin-updates" to see what plugins have
        updates available.
  -->
  <modelVersion>4.0.0</modelVersion>

  <!-- Used for making releases. -->
  <parent>
    <artifactId>oss-parent</artifactId>
    <groupId>org.sonatype.oss</groupId>
    <version>9</version>
  </parent>

  <groupId>com.puppycrawl.tools</groupId>
  <artifactId>checkstyle</artifactId>
  <version>8.7</version>
  <packaging>jar</packaging>

  <name>checkstyle</name>
  <description>
    Checkstyle is a development tool to help programmers write Java code that adheres to a coding standard
  </description>
  <url>http://checkstyle.sourceforge.net/</url>
  <inceptionYear>2001</inceptionYear>
  <licenses>
    <license>
      <name>LGPL-2.1+</name>
      <url>http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt</url>
    </license>
  </licenses>

  <developers>
    <developer>
      <id>romani</id>
      <name>Roman Ivanov</name>
      <roles>
        <role>project admin, lead developer</role>
      </roles>
    </developer>
    <developer>
      <id>rnveach</id>
      <name>Richard Veach</name>
      <roles>
        <role>project admin, developer</role>
      </roles>
    </developer>
    <developer>
      <id>sabaka</id>
      <name>Ilja Dubinin</name>
      <roles>
        <role>developer</role>
      </roles>
    </developer>
    <developer>
      <id>MEZk</id>
      <name>Andrei Selkin</name>
      <roles>
        <role>developer</role>
      </roles>
    </developer>
    <developer>
      <id>Vladlis</id>
      <name>Vladislav Lisetskii</name>
      <roles>
        <role>developer</role>
      </roles>
    </developer>
    <developer>
      <id>oburn</id>
      <name>Oliver Burn</name>
      <roles>
        <role>founder (retired)</role>
      </roles>
    </developer>
    <developer>
      <id>mkordas</id>
      <name>Michał Kordas</name>
      <roles>
        <role>former developer</role>
      </roles>
    </developer>
    <developer>
      <id>rdiachenko</id>
      <name>Ruslan Diachenko</name>
      <roles>
        <role>former developer</role>
      </roles>
    </developer>
    <developer>
      <id>baratali</id>
      <name>Baratali Izmailov</name>
      <roles>
        <role>former developer</role>
      </roles>
    </developer>
    <developer>
      <id>daniilyar</id>
      <name>Daniil Yaroslavtsev</name>
      <roles>
        <role>former developer</role>
      </roles>
    </developer>
    <developer>
      <id>moradan</id>
      <name>Ivan Sopov</name>
      <roles>
        <role>former developer</role>
      </roles>
    </developer>
    <developer>
      <id>lkuehne</id>
      <name>Lars Kühne</name>
      <roles>
        <role>former developer</role>
      </roles>
    </developer>
    <developer>
      <id>rickgiles</id>
      <name>Rick Giles</name>
      <roles>
        <role>former developer</role>
      </roles>
    </developer>
    <developer>
      <id>o_sukhodolsky</id>
      <name>Oleg Sukhodolsky</name>
      <roles>
        <role>former developer</role>
      </roles>
    </developer>
    <developer>
      <id>mstudman</id>
      <name>Michael Studman</name>
      <roles>
        <role>former developer</role>
      </roles>
    </developer>
    <developer>
      <id>tschneeberger</id>
      <name>Travis Schneeberger</name>
      <roles>
        <role>former developer</role>
      </roles>
    </developer>
  </developers>
  <contributors>
    <contributor>
      <url>https://github.com/checkstyle/checkstyle/graphs/contributors</url>
    </contributor>
  </contributors>

  <mailingLists>
    <mailingList>
      <name>checkstyle-announce</name>
      <archive>https://groups.google.com/forum/#!forum/checkstyle-announce</archive>
      <subscribe>mailto:checkstyle-announce%2Bsubscribe@googlegroups.com</subscribe>
      <unsubscribe>mailto:checkstyle-announce%2Bunsubscribe@googlegroups.com</unsubscribe>
      <post>privilege of admins</post>
    </mailingList>
    <mailingList>
      <name>checkstyle</name>
      <archive>https://groups.google.com/forum/#!forum/checkstyle</archive>
      <subscribe>mailto:checkstyle%2Bsubscribe@googlegroups.com</subscribe>
      <unsubscribe>mailto:checkstyle%2Bunsubscribe@googlegroups.com</unsubscribe>
      <post>mailto:checkstyle@googlegroups.com</post>
    </mailingList>
    <mailingList>
      <name>checkstyle-devel</name>
      <archive>https://groups.google.com/forum/#!forum/checkstyle-devel</archive>
      <subscribe>mailto:checkstyle-devel%2Bsubscribe@googlegroups.com</subscribe>
      <unsubscribe>mailto:checkstyle-devel%2Bunsubscribe@googlegroups.com</unsubscribe>
      <post>mailto:checkstyle-devel@googlegroups.com</post>
    </mailingList>
  </mailingLists>

  <prerequisites>
    <maven>3.0.1</maven>
  </prerequisites>

  <scm>
    <connection>scm:git:git@github.com:checkstyle/checkstyle.git</connection>
    <developerConnection>scm:git:git@github.com:checkstyle/checkstyle.git</developerConnection>
    <url>https://github.com/checkstyle/checkstyle</url>
  </scm>
  <issueManagement>
    <system>GitHub Issues</system>
    <url>https://github.com/checkstyle/checkstyle/issues</url>
  </issueManagement>
  <ciManagement>
    <system>travis</system>
    <url>https://travis-ci.org/checkstyle/checkstyle</url>
  </ciManagement>
  <distributionManagement>
    <site>
      <id>sourceforge-new-site</id>
      <name>New Site</name>
      <url>scp://shell.sourceforge.net/home/project-web/checkstyle/htdocs/new-site</url>
    </site>
  </distributionManagement>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <projectVersion>${project.version}</projectVersion>
    <antlr4.version>4.7.1</antlr4.version>
    <maven.site.plugin.version>3.6</maven.site.plugin.version>
    <maven.findbugs.plugin.version>3.0.5</maven.findbugs.plugin.version>
    <maven.spotbugs.plugin.version>3.0.6</maven.spotbugs.plugin.version>
    <maven.pmd.plugin.version>3.8</maven.pmd.plugin.version>
    <pmd.version>5.8.1</pmd.version>
    <maven.jacoco.plugin.version>0.7.9</maven.jacoco.plugin.version>
    <saxon.version>9.8.0-7</saxon.version>
    <maven.checkstyle.plugin.version>2.17</maven.checkstyle.plugin.version>
    <maven.sevntu.checkstyle.plugin.version>1.25.0</maven.sevntu.checkstyle.plugin.version>
    <maven.sevntu-checkstyle-check.checkstyle.version>8.6</maven.sevntu-checkstyle-check.checkstyle.version>
    <maven.versions.plugin.version>2.5</maven.versions.plugin.version>
    <java.version>1.8</java.version>
    <tools.jar.version>${java.version}.0</tools.jar.version>
    <tools.jar.path>${java.home}/../lib/tools.jar</tools.jar.path>
    <pitest.plugin.version>1.3.1</pitest.plugin.version>
    <pitest.plugin.timeout.factor>10</pitest.plugin.timeout.factor>
    <pitest.plugin.timeout.constant>50000</pitest.plugin.timeout.constant>
    <pitest.plugin.threads>4</pitest.plugin.threads>
    <sonar.test.exclusions>**/test/resources/**/*,**/it/resources/**/*</sonar.test.exclusions>
  </properties>

  <!-- that repositories are required for testing plugin's snapshot version -->
  <pluginRepositories>
    <pluginRepository>
      <id>nexus-codehaus-snapshot</id>
      <name>Codehaus Snapshots</name>
      <url>https://oss.sonatype.org/content/repositories/codehaus-snapshots/</url>
    </pluginRepository>
    <pluginRepository>
      <id>sevntu-maven</id>
      <name>sevntu-maven</name>
      <url>http://sevntu-checkstyle.github.io/sevntu.checkstyle/maven2</url>
    </pluginRepository>
  </pluginRepositories>

  <dependencies>
    <dependency>
      <groupId>antlr</groupId>
      <artifactId>antlr</artifactId>
      <version>2.7.7</version>
    </dependency>
    <dependency>
      <groupId>org.antlr</groupId>
      <artifactId>antlr4-runtime</artifactId>
      <version>${antlr4.version}</version>
    </dependency>
    <dependency>
      <groupId>commons-beanutils</groupId>
      <artifactId>commons-beanutils</artifactId>
      <version>1.9.3</version>
    </dependency>
    <dependency>
      <groupId>commons-cli</groupId>
      <artifactId>commons-cli</artifactId>
      <version>1.4</version>
    </dependency>
    <dependency>
      <groupId>com.google.guava</groupId>
      <artifactId>guava</artifactId>
      <version>23.6-jre</version>
    </dependency>
    <dependency>
      <groupId>org.apache.ant</groupId>
      <artifactId>ant</artifactId>
      <version>1.10.1</version>
      <scope>provided</scope>
    </dependency>

    <!-- test scope stuff -->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>com.github.stefanbirkner</groupId>
      <artifactId>system-rules</artifactId>
      <version>1.17.0</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>nl.jqno.equalsverifier</groupId>
      <artifactId>equalsverifier</artifactId>
      <version>2.4</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.powermock</groupId>
      <artifactId>powermock-api-mockito</artifactId>
      <version>1.7.3</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.powermock</groupId>
      <artifactId>powermock-module-junit4</artifactId>
      <version>1.7.3</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>2.6</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.eclipse.jgit</groupId>
      <artifactId>org.eclipse.jgit</artifactId>
      <version>4.9.2.201712150930-r</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-simple</artifactId>
      <version>1.7.25</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.jacoco</groupId>
      <artifactId>org.jacoco.agent</artifactId>
      <version>${maven.jacoco.plugin.version}</version>
      <scope>test</scope>
      <classifier>runtime</classifier>
    </dependency>
    <dependency>
      <groupId>net.sf.saxon</groupId>
      <artifactId>Saxon-HE</artifactId>
      <version>${saxon.version}</version>
    </dependency>
  </dependencies>

  <build>
    <pluginManagement>
      <plugins>
        <!-- from super-pom http://maven.apache.org/ref/3.5.2/maven-model-builder/super-pom.html BEGIN -->
        <!-- we need to override just make "mvn versions:plugin-updates-report" see no old versions -->
        <plugin>
          <artifactId>maven-antrun-plugin</artifactId>
          <version>1.8</version>
        </plugin>
        <plugin>
          <artifactId>maven-assembly-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-dependency-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-release-plugin</artifactId>
          <!-- version is same as in supper-pom as it is better to use same version as in sonatype-nexus-staging -->
          <version>2.1</version>
        </plugin>
        <!-- from super-pom END -->
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>cobertura-maven-plugin</artifactId>
          <version>2.7</version>
        </plugin>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>sonar-maven-plugin</artifactId>
          <version>3.4.0.905</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-shade-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>
        <plugin>
          <groupId>org.pitest</groupId>
          <artifactId>pitest-maven</artifactId>
          <version>${pitest.plugin.version}</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-javadoc-plugin</artifactId>
          <version>3.0.0</version>
          <configuration>
            <source>${java.version}</source>
            <failOnError>true</failOnError>
            <linksource>true</linksource>
            <tags>
              <tag>
                <name>noinspection</name>
                <placement>X</placement>
              </tag>
            </tags>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-pmd-plugin</artifactId>
          <version>${maven.pmd.plugin.version}</version>
          <configuration>
            <targetJdk>${java.version}</targetJdk>
            <minimumTokens>20</minimumTokens>
            <skipEmptyReport>false</skipEmptyReport>
            <failOnViolation>true</failOnViolation>
            <printFailingErrors>true</printFailingErrors>
            <includeTests>true</includeTests>
            <rulesets>
              <ruleset>config/pmd-main.xml</ruleset>
              <ruleset>config/pmd-test.xml</ruleset>
            </rulesets>
            <excludeRoots>
              <excludeRoot>src/it/resources</excludeRoot>
              <excludeRoot>src/test/resources</excludeRoot>
              <excludeRoot>target/generated-sources/antlr</excludeRoot>
              <excludeRoot>target/generated-sources/antlr/com/puppycrawl/tools/checkstyle/grammars/javadoc</excludeRoot>
            </excludeRoots>
          </configuration>
          <dependencies>
            <dependency>
              <groupId>net.sourceforge.pmd</groupId>
              <artifactId>pmd-java</artifactId>
              <version>${pmd.version}</version>
            </dependency>
            <dependency>
              <groupId>net.sourceforge.pmd</groupId>
              <artifactId>pmd-core</artifactId>
              <version>${pmd.version}</version>
            </dependency>
            <dependency>
              <groupId>net.sourceforge.pmd</groupId>
              <artifactId>pmd-javascript</artifactId>
              <version>${pmd.version}</version>
            </dependency>
            <dependency>
              <groupId>net.sourceforge.pmd</groupId>
              <artifactId>pmd-jsp</artifactId>
              <version>${pmd.version}</version>
            </dependency>
          </dependencies>
        </plugin>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>findbugs-maven-plugin</artifactId>
          <version>${maven.findbugs.plugin.version}</version>
          <configuration>
            <effort>Max</effort>
            <threshold>Low</threshold>
            <excludeFilterFile>config/findbugs-exclude.xml</excludeFilterFile>
          </configuration>
        </plugin>

        <plugin>
          <groupId>com.github.hazendaz.spotbugs</groupId>
          <artifactId>spotbugs-maven-plugin</artifactId>
          <version>${maven.spotbugs.plugin.version}</version>
          <configuration>
            <effort>Max</effort>
            <threshold>Low</threshold>
            <excludeFilterFile>config/findbugs-exclude.xml</excludeFilterFile>
            <findbugsXmlOutputDirectory>target/spotbugsreports</findbugsXmlOutputDirectory>
          </configuration>
        </plugin>

        <!-- This plugin's configuration is used to store Eclipse
             m2e settings only. It has no influence on the Maven build itself.
        -->
        <plugin>
          <groupId>org.eclipse.m2e</groupId>
          <artifactId>lifecycle-mapping</artifactId>
          <version>1.0.0</version>
          <configuration>
            <lifecycleMappingMetadata>
              <pluginExecutions>
                <pluginExecution>
                  <pluginExecutionFilter>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-antrun-plugin</artifactId>
                    <versionRange>[1.0,)</versionRange>
                    <goals>
                      <goal>run</goal>
                    </goals>
                  </pluginExecutionFilter>
                  <action>
                    <execute />
                  </action>
                </pluginExecution>
                <pluginExecution>
                  <pluginExecutionFilter>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>antlr-maven-plugin</artifactId>
                    <versionRange>[1.0,)</versionRange>
                    <goals>
                      <goal>generate</goal>
                    </goals>
                  </pluginExecutionFilter>
                  <action>
                    <execute />
                  </action>
                </pluginExecution>
                <pluginExecution>
                  <pluginExecutionFilter>
                    <groupId>org.antlr</groupId>
                    <artifactId>antlr4-maven-plugin</artifactId>
                    <versionRange>[4.2,)</versionRange>
                    <goals>
                      <goal>antlr4</goal>
                    </goals>
                  </pluginExecutionFilter>
                  <action>
                    <execute>
                      <runOnIncremental>true</runOnIncremental>
                    </execute>
                  </action>
                </pluginExecution>
                <pluginExecution>
                  <pluginExecutionFilter>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-enforcer-plugin</artifactId>
                    <versionRange>[1.2,)</versionRange>
                    <goals>
                      <goal>enforce</goal>
                    </goals>
                  </pluginExecutionFilter>
                  <action>
                    <ignore />
                  </action>
                </pluginExecution>
                <pluginExecution>
                  <pluginExecutionFilter>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>tidy-maven-plugin</artifactId>
                    <versionRange>1.0-beta-1</versionRange>
                    <goals>
                      <goal>check</goal>
                    </goals>
                  </pluginExecutionFilter>
                  <action>
                    <execute />
                  </action>
                </pluginExecution>
              </pluginExecutions>
            </lifecycleMappingMetadata>
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>
    <plugins>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-checkstyle-plugin</artifactId>
        <version>${maven.checkstyle.plugin.version}</version>
        <dependencies>
          <dependency>
            <groupId>com.github.sevntu-checkstyle</groupId>
            <artifactId>sevntu-checkstyle-maven-plugin</artifactId>
            <version>${maven.sevntu.checkstyle.plugin.version}</version>
          </dependency>
          <dependency>
            <groupId>com.puppycrawl.tools</groupId>
            <artifactId>checkstyle</artifactId>
            <version>${maven.sevntu-checkstyle-check.checkstyle.version}</version>
          </dependency>
        </dependencies>
        <!-- Specifying configuration here will take effect on the execution of "mvn checkstyle:checkstyle",
             but will not take effect on the execution of "mvn site"  -->
        <executions>
          <execution>
            <id>sevntu-checkstyle-check</id>
            <phase>verify</phase>
            <configuration>
              <configLocation>${project.basedir}/config/checkstyle_sevntu_checks.xml</configLocation>
              <failOnViolation>true</failOnViolation>
              <includeResources>false</includeResources>
              <includeTestResources>false</includeTestResources>
              <logViolationsToConsole>true</logViolationsToConsole>
              <maxAllowedViolations>0</maxAllowedViolations>
              <violationSeverity>error</violationSeverity>
              <propertyExpansion>project.basedir=${project.basedir}</propertyExpansion>
              <sourceDirectory>${project.basedir}/src</sourceDirectory>
              <excludes>**/it/resources/**/*,**/test/resources/**/*,**/test/resources-noncompilable/**/*</excludes>
            </configuration>
            <goals>
              <goal>check</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-clean-plugin</artifactId>
        <version>3.0.0</version>
      </plugin>

      <!-- It brakes linkcheck plugin report.
           It works when linkcheck.forceSite=false, but
           at this case linkcheck report is full of false-positives

      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>tidy-maven-plugin</artifactId>
        <version>1.0-beta-1</version>
        <executions>
          <execution>
            <id>validate</id>
            <phase>validate</phase>
            <goals>
              <goal>check</goal>
            </goals>
          </execution>
        </executions>
      </plugin> -->

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-resources-plugin</artifactId>
        <version>3.0.2</version>
        <executions>
          <execution>
            <id>copy-resources</id>
            <phase>pre-site</phase>
            <goals>
              <goal>copy-resources</goal>
            </goals>
            <configuration>
              <outputDirectory>${basedir}/target/site/dtds</outputDirectory>
              <resources>
                <resource>
                  <directory>src/main/resources/com/puppycrawl/tools/checkstyle</directory>
                  <includes>
                    <include>*.dtd</include>
                  </includes>
                </resource>
                <resource>
                  <directory>src/main/resources/com/puppycrawl/tools/checkstyle/checks/imports</directory>
                  <includes>
                    <include>*.dtd</include>
                  </includes>
                </resource>
              </resources>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.7.0</version>
        <configuration>
          <source>${java.version}</source>
          <target>${java.version}</target>
        </configuration>
        <!-- till https://github.com/checkstyle/checkstyle/issues/2160
        <executions>
          <execution>
            <id>compile-without-error-prone</id>
            <goals>
              <goal>testCompile</goal>
            </goals>
            <configuration>
              <testIncludes>
                <testInclude>**/Input*.java</testInclude>
              </testIncludes>
            </configuration>
          </execution>
          <execution>
            <id>compile-with-error-prone</id>
            <goals>
              <goal>testCompile</goal>
            </goals>
            <configuration>
              <compilerId>javac-with-errorprone</compilerId>
              <forceJavacCompilerUse>true</forceJavacCompilerUse>
              <testExcludes>
                <testExclude>**/*Input*.java</testExclude>
              </testExcludes>
            </configuration>
          </execution>
        </executions>
        <dependencies>
          <dependency>
            <groupId>org.codehaus.plexus</groupId>
            <artifactId>plexus-compiler-javac-errorprone</artifactId>
            <version>2.6</version>
          </dependency>
          <dependency>
            <groupId>com.google.errorprone</groupId>
            <artifactId>error_prone_core</artifactId>
            <version>2.0.5</version>
          </dependency>
        </dependencies>
        -->
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-install-plugin</artifactId>
        <version>2.5.2</version>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-deploy-plugin</artifactId>
        <version>2.8.2</version>
      </plugin>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>versions-maven-plugin</artifactId>
        <version>${maven.versions.plugin.version}</version>
        <configuration>
          <generateBackupPoms>false</generateBackupPoms>
          <rulesUri>file://${basedir}/config/version-number-rules.xml</rulesUri>
          <formats>
            <format>xml</format>
            <format>html</format>
          </formats>
        </configuration>
      </plugin>
      <plugin>
          <groupId>org.sonatype.plugins</groupId>
          <artifactId>nexus-staging-maven-plugin</artifactId>
          <version>1.6.8</version>
          <extensions>true</extensions>
          <configuration>
              <!-- serverId is ID of a <server> section from Maven's settings.xml
                   to pick authentication information from
              -->
              <serverId>sonatype-nexus-staging</serverId>
              <nexusUrl>https://oss.sonatype.org/</nexusUrl>
              <autoReleaseAfterClose>true</autoReleaseAfterClose>
          </configuration>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-site-plugin</artifactId>
        <version>${maven.site.plugin.version}</version>
        <configuration>
          <xdocDirectory>${basedir}/src/xdocs</xdocDirectory>
          <!-- false till https://issues.apache.org/jira/browse/MSITE-774 -->
          <validate>false</validate>
        </configuration>
        <dependencies>
          <dependency>
            <!-- add support for ssh/scp -->
            <groupId>org.apache.maven.wagon</groupId>
            <artifactId>wagon-ssh</artifactId>
            <version>3.0.0</version>
          </dependency>
        </dependencies>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-enforcer-plugin</artifactId>
        <version>1.4.1</version>
        <executions>
          <execution>
            <id>enforce-versions</id>
            <goals>
              <goal>enforce</goal>
            </goals>
            <configuration>
              <rules>
                <requireJavaVersion>
                  <version>1.6</version>
                </requireJavaVersion>
                <!-- we can not use this as it require
                compilation on 1.6 only, due to dependency to 'tools'
                <enforceBytecodeVersion>
                  <maxJdkVersion>1.6</maxJdkVersion>
                </enforceBytecodeVersion>
                -->
              </rules>
            </configuration>
          </execution>
        </executions>
        <!-- we can not use this as it require
        compilation on 1.6 only, due to dependency to 'tool'
        <dependencies>
          <dependency>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>extra-enforcer-rules</artifactId>
            <version>1.0-beta-2</version>
            <scope>compile</scope>
          </dependency>
        </dependencies>
        -->
      </plugin>

      <!-- Generate the ANTLRv2 grammar -->
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>antlr-maven-plugin</artifactId>
        <version>2.2</version>
        <configuration>
          <sourceDirectory>${basedir}/src/main/resources/com/puppycrawl/tools/checkstyle/grammars</sourceDirectory>
          <grammars>java.g</grammars>
        </configuration>
        <executions>
          <execution>
            <goals>
              <goal>generate</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

      <!-- Generate the ANTLRv4 grammar -->
      <plugin>
        <groupId>org.antlr</groupId>
        <artifactId>antlr4-maven-plugin</artifactId>
        <version>${antlr4.version}</version>
        <configuration>
          <visitor>false</visitor>
          <listener>false</listener>
          <sourceDirectory>${basedir}/src/main/resources/</sourceDirectory>
          <outputDirectory>${project.build.directory}/generated-sources/antlr/</outputDirectory>
          <includes>
            <include>com/puppycrawl/tools/checkstyle/grammars/javadoc/*.g4</include>
          </includes>
        </configuration>
        <executions>
          <execution>
            <goals>
              <goal>antlr4</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>build-helper-maven-plugin</artifactId>
        <version>3.0.0</version>
        <executions>
          <execution>
            <id>add-source</id>
            <phase>generate-sources</phase>
            <goals>
              <goal>add-source</goal>
            </goals>
            <configuration>
              <sources>
                <source>${project.build.directory}/generated-sources/antlr/</source>
              </sources>
            </configuration>
          </execution>
          <execution>
            <id>add-test-source</id>
            <phase>process-resources</phase>
            <goals>
              <goal>add-test-source</goal>
            </goals>
            <configuration>
              <sources>
                <source>src/test/resources</source>
              </sources>
            </configuration>
          </execution>
          <execution>
            <id>add-it-test-source</id>
            <phase>process-resources</phase>
            <goals>
              <goal>add-test-source</goal>
            </goals>
            <configuration>
              <sources>
                <source>src/it/java</source>
              </sources>
            </configuration>
          </execution>
          <execution>
            <id>add-it-test-resource</id>
            <phase>process-resources</phase>
            <goals>
              <goal>add-test-source</goal>
            </goals>
            <configuration>
              <sources>
                <source>src/it/resources</source>
              </sources>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-failsafe-plugin</artifactId>
        <version>2.20.1</version>
        <configuration>
          <includes>
            <include>com/google/**/*.java</include>
          </includes>
        </configuration>
        <executions>
          <execution>
            <id>integration-test</id>
            <goals>
              <goal>integration-test</goal>
            </goals>
          </execution>
          <execution>
            <id>verify</id>
            <goals>
              <goal>verify</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

      <!-- Used to set custom properties -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.20.1</version>
        <configuration>
          <systemPropertyVariables>
            <jacoco-agent.destfile>${project.build.directory}/jacoco/jacoco.exec</jacoco-agent.destfile>
          </systemPropertyVariables>
          <additionalClasspathElements>
            <additionalClasspathElement>src/test/resources-noncompilable</additionalClasspathElement>
          </additionalClasspathElements>
          <includes>
            <include>com/puppycrawl/**/*.java</include>
          </includes>
        </configuration>
      </plugin>

      <!-- Generate checkstylecompilation.properties -->

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-antrun-plugin</artifactId>
        <version>1.8</version>
        <executions>
          <execution>
            <id>ant-phase-compile</id>
            <phase>compile</phase>
            <goals>
              <goal>run</goal>
            </goals>
            <configuration>
              <target>
                <property name="mvn.project.build.outputDirectory" value="${project.build.outputDirectory}" />
                <property name="mvn.project.version" value="${project.version}" />
                <property name="mvn.compile_classpath" refid="maven.compile.classpath" />
                <ant antfile="config/ant-phase-compile.xml" />
              </target>
            </configuration>
          </execution>
          <execution>
            <id>ant-phase-verify</id>
            <phase>verify</phase>
            <goals>
              <goal>run</goal>
            </goals>
            <configuration>
              <target>
                <property name="mvn.project.build.directory" value="${project.build.directory}" />
                <property name="mvn.project.version" value="${project.version}" />
                <property name="mvn.runtime_classpath" refid="maven.runtime.classpath" />
                <property name="project.basedir" value="${project.basedir}" />
                <ant antfile="config/ant-phase-verify.xml" />
              </target>
            </configuration>
          </execution>
        </executions>
        <dependencies>
          <dependency>
            <groupId>org.apache.ant</groupId>
            <artifactId>ant-nodeps</artifactId>
            <version>1.8.1</version>
          </dependency>
        </dependencies>
      </plugin>

      <!-- Ensure the manifest has all the gory details -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>3.0.2</version>
        <configuration>
          <archive>
            <manifest>
              <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
              <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
            </manifest>
          </archive>
        </configuration>
        <executions>
          <execution>
            <goals>
              <goal>test-jar</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-eclipse-plugin</artifactId>
        <version>2.10</version>
        <configuration>
          <downloadSources>true</downloadSources>
          <downloadJavadocs>true</downloadJavadocs>
        </configuration>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-pmd-plugin</artifactId>
        <executions>
          <execution>
            <phase>verify</phase>
            <goals>
              <goal>check</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>findbugs-maven-plugin</artifactId>
        <executions>
          <execution>
            <goals>
              <goal>check</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>com.github.hazendaz.spotbugs</groupId>
        <artifactId>spotbugs-maven-plugin</artifactId>
        <version>${maven.spotbugs.plugin.version}</version>
        <executions>
          <execution>
            <goals>
              <goal>check</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>xml-maven-plugin</artifactId>
        <version>1.0.1</version>
        <executions>
          <execution>
            <goals>
              <goal>validate</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <validationSets>
            <validationSet>
              <dir>config</dir>
              <excludes>
                <exclude>java.header</exclude>
                <exclude>java_regexp.header</exclude>
                <exclude>org.eclipse.jdt.core.prefs</exclude>
                <exclude>intellij-idea-inspections.properties</exclude>
              </excludes>
            </validationSet>
            <validationSet>
              <dir>src/site/resources/files</dir>
              <systemId>src/main/resources/com/puppycrawl/tools/checkstyle/suppressions_1_0.dtd</systemId>
            </validationSet>
            <validationSet>
              <dir>src/site</dir>
              <includes>
                <include>site.xml</include>
              </includes>
              <systemId>http://maven.apache.org/xsd/decoration-1.0.0.xsd</systemId>
            </validationSet>
            <validationSet>
              <dir>src/test/resources</dir>
              <includes>
                <include>com/puppycrawl/tools/checkstyle/packagenamesloader/InputPackageNamesLoaderFile.xml</include>
                <include>com/puppycrawl/tools/checkstyle/treewalker/InputTreeWalkerNotJava.xml</include>
              </includes>
              <systemId>src/main/resources/com/puppycrawl/tools/checkstyle/packages_1_0.dtd</systemId>
            </validationSet>
            <validationSet>
              <dir>src/main/resources</dir>
              <includes>
                <include>google_checks.xml</include>
                <include>sun_checks.xml</include>
              </includes>
              <systemId>src/main/resources/com/puppycrawl/tools/checkstyle/configuration_1_3.dtd</systemId>
            </validationSet>
          </validationSets>
          <catalogs>
            <catalog>config/catalog.xml</catalog>
          </catalogs>
        </configuration>
      </plugin>
      <plugin>
      <groupId>de.thetaphi</groupId>
      <artifactId>forbiddenapis</artifactId>
      <version>2.4.1</version>
      <configuration>
        <targetVersion>${java.version}</targetVersion>
        <failOnUnsupportedJava>false</failOnUnsupportedJava>
        <bundledSignatures>
          <bundledSignature>jdk-unsafe</bundledSignature>
          <bundledSignature>jdk-deprecated</bundledSignature>
          <bundledSignature>jdk-system-out</bundledSignature>
          <bundledSignature>jdk-non-portable</bundledSignature>
        </bundledSignatures>
        <excludes>
          <!-- system-out is ok there, that is CLI -->
          <exclude>**/Main.class</exclude>
          <!-- generated classes, unfortunately use problematic api -->
          <exclude>**/GeneratedJavaLexer.class</exclude>
          <exclude>**/JavadocParser.class</exclude>
          <exclude>**/Input*</exclude>
        </excludes>
      </configuration>
      <executions>
        <execution>
          <goals>
            <goal>check</goal>
            <goal>testCheck</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
      <plugin>
        <groupId>edu.illinois</groupId>
        <artifactId>nondex-maven-plugin</artifactId>
        <version>1.1.1</version>
      </plugin>
    </plugins>
  </build>

  <reporting>
    <plugins>
      <plugin>
        <artifactId>maven-project-info-reports-plugin</artifactId>
        <version>2.9</version>
      </plugin>

      <plugin>
        <artifactId>maven-javadoc-plugin</artifactId>
        <reportSets>
          <reportSet>
            <id>default</id>
            <reports>
              <report>javadoc</report>
            </reports>
          </reportSet>
        </reportSets>
      </plugin>

      <!--
       dsm-maven plugin does not support Java 1.8
       Deactivated until https://github.com/sevntu-checkstyle/dsm-maven-plugin/issues/31
       -->
      <!--<plugin>-->
        <!--<groupId>com.github.sevntu-checkstyle</groupId>-->
        <!--<artifactId>dsm-maven-plugin</artifactId>-->
        <!--<version>2.1.4</version>-->
        <!--<configuration>-->
          <!--<obfuscatePackageNames>true</obfuscatePackageNames>-->
        <!--</configuration>-->
      <!--</plugin>-->

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-report-plugin</artifactId>
        <version>2.20.1</version>
      </plugin>

      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>cobertura-maven-plugin</artifactId>
        <reportSets>
          <reportSet>
            <reports>
              <report>cobertura</report>
            </reports>
          </reportSet>
        </reportSets>
        <configuration>
          <quiet>true</quiet>
          <formats>
            <format>xml</format>
            <format>html</format>
          </formats>
          <check />
        </configuration>
      </plugin>

      <plugin>
        <groupId>org.jacoco</groupId>
        <artifactId>jacoco-maven-plugin</artifactId>
        <version>${maven.jacoco.plugin.version}</version>
        <configuration>
          <dataFile>${project.build.directory}/jacoco/jacoco.exec</dataFile>
          <excludes>
            <exclude>com/puppycrawl/tools/checkstyle/ant/CheckstyleAntTask*.class</exclude>
            <exclude>com/puppycrawl/tools/checkstyle/grammars/*.class</exclude>
            <exclude>com/puppycrawl/tools/checkstyle/grammars/javadoc/*.class</exclude>
            <exclude>com/puppycrawl/tools/checkstyle/gui/*.class</exclude>
          </excludes>
        </configuration>
        <reportSets>
          <reportSet>
            <reports>
              <report>report</report>
            </reports>
          </reportSet>
        </reportSets>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jxr-plugin</artifactId>
        <version>2.5</version>
      </plugin>

      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>jdepend-maven-plugin</artifactId>
        <version>2.0</version>
      </plugin>

      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>taglist-maven-plugin</artifactId>
        <version>2.4</version>
        <configuration>
          <!-- skip till http://jira.codehaus.org/browse/MTAGLIST-71 -->
          <skipTestSources>true</skipTestSources>
          <tagListOptions>
            <tagClasses>
              <tagClass>
                <displayName>Todo Work</displayName>
                <tags>
                  <tag>
                    <matchString>todo</matchString>
                    <matchType>ignoreCase</matchType>
                  </tag>
                  <tag>
                    <matchString>FIXME</matchString>
                    <matchType>exact</matchType>
                  </tag>
                </tags>
              </tagClass>
            </tagClasses>
          </tagListOptions>
        </configuration>
      </plugin>

      <plugin>
        <groupId>org.codehaus.sonar-plugins</groupId>
        <artifactId>maven-report</artifactId>
        <version>0.1</version>
        <configuration>
          <sonarHostURL>https://sonarcloud.io</sonarHostURL>
        </configuration>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-pmd-plugin</artifactId>
        <version>${maven.pmd.plugin.version}</version>
        <reportSets>
          <reportSet>
            <reports>
              <report>pmd</report>
            </reports>
          </reportSet>
        </reportSets>
      </plugin>

      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>findbugs-maven-plugin</artifactId>
        <version>${maven.findbugs.plugin.version}</version>
      </plugin>

      <plugin>
        <groupId>com.github.hazendaz.spotbugs</groupId>
        <artifactId>spotbugs-maven-plugin</artifactId>
        <version>${maven.spotbugs.plugin.version}</version>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-linkcheck-plugin</artifactId>
        <version>1.2</version>
        <configuration>
          <httpMethod>GET</httpMethod>
          <timeout>6000</timeout>
          <httpFollowRedirect>false</httpFollowRedirect>
          <forceSite>true</forceSite>
          <!-- To resolve redirection violation, to find new target url, use:
              URL=https://www.cs.....
              curl -s -I $URL -L | awk '/Location: (.*)/ {print $2}' | tail -n 1
          -->
          <excludedPages>
            <excludedPage>dependencies.html</excludedPage>
            <excludedPage>cobertura/**</excludedPage>
            <excludedPage>dsm/**</excludedPage>
            <excludedPage>xref/**</excludedPage>
            <excludedPage>xref-test/**</excludedPage>
            <excludedPage>pmd.html</excludedPage>
            <excludedPage>findbugs.html</excludedPage>
            <excludedPage>surefire-report.html</excludedPage>
            <!-- Excluded due to checkstyle's issue #549 until http://jira.codehaus.org/browse/MTAGLIST-69 will be fixed -->
            <excludedPage>taglist.html</excludedPage>
          </excludedPages>
          <excludedHttpStatusErrors>
            <excludedHttpStatusError>401</excludedHttpStatusError>
          </excludedHttpStatusErrors>
          <excludedLinks>
            <excludedLink>reports/google-style/guava</excludedLink>
            <excludedLink>reports/javadoc/openjdk8</excludedLink>
            <!-- temporal suppress till javadoc tool starts generating links to https -->
            <excludedLink>http://docs.oracle.com/javase</excludedLink>
            <!-- SSL -->
            <excludedLink>https://travis-ci.org/</excludedLink>
            <excludedLink>https://travis-ci.org/checkstyle/checkstyle</excludedLink>
            <excludedLink>https://coveralls.io/r/checkstyle/checkstyle</excludedLink>

            <!-- we did too much requests to github, now github reject all requests "429 Too Many Requests"
                 https://codeship.com/projects/124310/builds/12027213  -->
            <excludedLink>https://github.com/*</excludedLink>
            <excludedLink>http://search.maven.org/*</excludedLink>
            <!-- codehaus does not exists anymore -->
            <excludedLink>http://sonar-plugins.codehaus.org/maven-report</excludedLink>
            <excludedLink>http://www.mojohaus.org/sonar-maven-plugin/sonar-maven-plugin</excludedLink>
            <!-- this plugin does not have site at all -->
            <excludedLink>http://hazendaz.github.io/findbugs-maven-plugin/</excludedLink>
            <!-- SSLHandshakeException but page is opening -->
            <excludedLink>http://www.sickboy.cz/checkstyle/</excludedLink>
            <!-- Excluded due to Maven Enforcer Plugin's issue #234: https://issues.apache.org/jira/browse/MENFORCER-234-->
            <excludedLink>http://maven.apache.org/enforcer/maven-enforcer-plugin</excludedLink>
            <!-- Excluded due to Maven Codehaus Plugin's issue #4: https://github.com/mojohaus/mojohaus.github.io/issues/4-->
            <excludedLink>http://mojo.codehaus.org/antlr-maven-plugin</excludedLink>
            <!-- Excluded due to Maven Build Helper Plugin's issue #3: https://github.com/mojohaus/build-helper-maven-plugin/issues/3-->
            <excludedLink>http://mojo.codehaus.org/build-helper-maven-plugin</excludedLink>
            <!-- Excluded due to Maven Cobertura Plugin's issue #5: https://github.com/mojohaus/cobertura-maven-plugin/issues/5-->
            <excludedLink>http://mojo.codehaus.org/cobertura-maven-plugin/</excludedLink>
            <!-- Excluded due to Maven JDepend Plugin's issue #2: https://github.com/mojohaus/jdepend-maven-plugin/issues/2-->
            <excludedLink>http://mojo.codehaus.org/jdepend-maven-plugin</excludedLink>
            <!-- Excluded due to Maven Taglist Plugin's issue #3: https://github.com/mojohaus/taglist-maven-plugin/issues/3-->
            <excludedLink>http://mojo.codehaus.org/taglist-maven-plugin</excludedLink>
            <!-- Excluded due to Maven XML Plugin's issue #1: https://github.com/mojohaus/xml-maven-plugin/issues/1-->
            <excludedLink>http://mojo.codehaus.org/xml-maven-plugin</excludedLink>
            <!-- Excluded due to Maven ANTLR4 Plugin's issue #978: https://github.com/antlr/antlr4/issues/978-->
            <excludedLink>http://www.antlr.org/antlr4-maven-plugin</excludedLink>
            <!-- Excluded due to Maven Release Plugin's issue #919: https://issues.apache.org/jira/browse/MRELEASE-919-->
            <excludedLink>http://maven.apache.org/plugins/maven-release-plugin/</excludedLink>
            <!-- Excluded till https://issues.sonatype.org/browse/NEXUS-9643 -->
            <excludedLink>http://www.sonatype.com/public-parent/nexus-maven-plugins/nexus-staging/nexus-staging-maven-plugin/</excludedLink>
            <!-- This link exists, but it has too much content and github has problems with rendering it quickly, so to avoid ocasional "Read timed out" we exclude it -->
            <excludedLink>https://github.com/checkstyle/checkstyle/issues/1555</excludedLink>
            <!-- Excluded, because the link is generated by sonar's maven report plugin and we
            can not correct the link while it will not be changed in effective pom.xml of the plugin
            by sonar's developers. It is not allowed to open issue against sonar's maven report plugin
            at sonar's issue tracker: http://jira.codehaus.org/browse/MSONAR
            Sonar's mailing lists: http://www.mojohaus.org/sonar-maven-plugin/mail-lists.html-->
            <excludedLink>https://sonarcloud.io/project/index/com.puppycrawl.tools:checkstyle</excludedLink>
            <!-- SSL error, skip validating released "-all" jar on sourceforge as it is uploaded after site generation-->
            <excludedLink>http://downloads.sourceforge.net/project/checkstyle/checkstyle/*/checkstyle-*-all.jar</excludedLink>

            <!-- Excluded due to linkcheck's issue #22: https://issues.apache.org/jira/browse/MLINKCHECK-22-->
            <excludedLink>https://twitter.com/checkstyle_java/</excludedLink>
            <!-- Excluded due to linkcheck's issue #23: https://issues.apache.org/jira/browse/MLINKCHECK-23-->
            <excludedLink>http://www.kclee.com/clemens/java/javancss</excludedLink>
            <!-- It is not a strict link, no needt ovalidate, github gives "429 Too Many Requests" for it -->
            <excludedLink>https://github.com/search*</excludedLink>
            <!-- till https://github.com/apache/maven-plugins/pull/81 -->
            <excludedLink>http://git-scm.com*</excludedLink>
            <!-- links works but not in linkcheck -->
            <excludedLink>https://marketplace.visualstudio.com/items?itemName=shengchen.vscode-checkstyle</excludedLink>

            <!-- reason described at https://github.com/checkstyle/checkstyle/issues/3080 -->
            <excludedLink>https://www.scm-manager.org/</excludedLink>
            <!-- linkcheck plugin can not resolve &amps; inside url -->
            <excludedLink>https://flattr.com/submit/</excludedLink>
            <!-- Too unstable sites to keep validate them -->
            <excludedLink>http://tide.olympe.in/*</excludedLink>
            <excludedLink>http://dl.acm.org/*</excludedLink>
            <!-- permanent SSLHandshakeException -->
            <excludedLink>https://www.codacy.com/</excludedLink>
            <!-- permanent SSLHandshakeException https://issues.apache.org/jira/browse/MLINKCHECK-28 -->
            <excludedLink>https://sourceforge.net/p/checkstyle/news/feed</excludedLink>
            <!-- permanent SSLHandshakeException https://issues.apache.org/jira/browse/MLINKCHECK-28 -->
            <excludedLink>https://sourceforge.net/projects/checkstyle/</excludedLink>
            <!-- permanent SSLHandshakeException https://issues.apache.org/jira/browse/MLINKCHECK-28 -->
            <excludedLink>https://sourceforge.net/projects/checkstyle/files/checkstyle/</excludedLink>
            <!-- permanent SSLHandshakeException -->
            <excludedLink>https://vim.sourceforge.io/</excludedLink>
            <excludedLink>https://vim.sourceforge.io/scripts/script.php?script_id=448</excludedLink>
            <!-- permanent SSLException -->
            <excludedLink>https://button.flattr.com/flattr-badge-large.png</excludedLink>
            <!-- permanent SSLException -->
            <excludedLink>https://git-scm.com</excludedLink>
            <!-- till https://github.com/gleclaire/findbugs-maven-plugin/pull/69 merged and released -->
            <excludedLink>http://gleclaire.github.io/findbugs-maven-plugin/</excludedLink>
            <!-- I do not know how to resolve this "302 Found" responce -->
            <excludedLink>https://plus.google.com/+CheckstyleJava</excludedLink>
            <!-- it permanently gives 404, but image is opening in browser without problems -->
            <excludedLink>https://www.ej-technologies.com/images/product_banners/jprofiler_medium.png</excludedLink>
            <!-- permanent SSLHandshakeException -->
            <excludedLink>https://www.ej-technologies.com/products/jprofiler/overview.html</excludedLink>
            <!-- permanent java.net.SocketException : Connection reset -->
            <excludedLink>https://www.jarchitect.com</excludedLink>
            <!-- permanent: avax.net.ssl.SSLException : Received fatal alert: internal_error -->
            <excludedLink>https://salt.bountysource.com/teams/checkstyle</excludedLink>
            <excludedLink>https://www.bountysource.com/teams/checkstyle/issues</excludedLink>
            <!--  javax.net.ssl.SSLHandshakeException : Received fatal alert: handshake_failure -->
            <excludedLink>https://eclipse.org</excludedLink>
          </excludedLinks>
        </configuration>
      </plugin>

      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>versions-maven-plugin</artifactId>
        <version>${maven.versions.plugin.version}</version>
        <reportSets>
          <reportSet>
            <reports>
              <report>dependency-updates-report</report>
              <report>plugin-updates-report</report>
            </reports>
          </reportSet>
        </reportSets>
      </plugin>

    </plugins>
  </reporting>

  <profiles>

    <!-- Bring in tools.jar for platforms which provide it
    that is required for javadoc doclets that are in use -->
    <profile>
      <id>default-tools.jar-oracle</id>
      <activation>
        <property>
          <name>java.vendor</name>
          <value>Oracle Corporation</value>
        </property>
        <jdk>[,1.9)</jdk>
      </activation>
      <dependencies>
        <dependency>
          <groupId>com.sun</groupId>
          <artifactId>tools</artifactId>
          <version>${tools.jar.version}</version>
          <scope>system</scope>
          <systemPath>${tools.jar.path}</systemPath>
        </dependency>
      </dependencies>
    </profile>

    <profile>
      <!-- To be used during development. Run the command-->
      <!-- mvn -Pno-validations site -->
      <id>no-validations</id>
      <properties>
        <skipTests>true</skipTests>
        <checkstyle.ant.skip>true</checkstyle.ant.skip>
        <checkstyle.skip>true</checkstyle.skip>
        <pmd.skip>true</pmd.skip>
        <findbugs.skip>true</findbugs.skip>
        <xml.skip>true</xml.skip>
        <forbiddenapis.skip>true</forbiddenapis.skip>
        <cobertura.skip>true</cobertura.skip>
        <maven.javadoc.skip>true</maven.javadoc.skip>
        <linkcheck.skip>true</linkcheck.skip>
      </properties>
    </profile>

    <profile>
      <!-- To be used during development. Run the command-->
      <!-- mvn -Passembly package -->
      <id>assembly</id>
      <properties>
        <skipTests>true</skipTests>
        <checkstyle.ant.skip>true</checkstyle.ant.skip>
        <checkstyle.skip>true</checkstyle.skip>
        <pmd.skip>true</pmd.skip>
        <findbugs.skip>true</findbugs.skip>
        <xml.skip>true</xml.skip>
        <forbiddenapis.skip>true</forbiddenapis.skip>
        <cobertura.skip>true</cobertura.skip>
        <maven.javadoc.skip>true</maven.javadoc.skip>
        <linkcheck.skip>true</linkcheck.skip>
        <!-- difference from "no-validations" -->
        <maven.site.skip>true</maven.site.skip>
      </properties>

      <build>
        <plugins>
          <!-- Generates the site, which is required for assembly -->
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-site-plugin</artifactId>
            <version>${maven.site.plugin.version}</version>
            <executions>
              <execution>
                <id>gen-site</id>
                <phase>prepare-package</phase>
                <goals>
                  <goal>site</goal>
                </goals>
              </execution>
            </executions>
          </plugin>

          <!-- Creates the all inclusive uber jar -->
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <executions>
              <execution>
                <phase>package</phase>
                <goals>
                  <goal>shade</goal>
                </goals>
                <configuration>
                  <filters>
                    <filter>
                      <artifact>*:*</artifact>
                      <excludes>
                        <exclude>META-INF/*.SF</exclude>
                        <exclude>META-INF/*.DSA</exclude>
                        <exclude>META-INF/*.RSA</exclude>
                      </excludes>
                    </filter>
                  </filters>
                  <shadedArtifactAttached>true</shadedArtifactAttached>
                  <shadedClassifierName>all</shadedClassifierName>
                  <transformers>
                    <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                      <mainClass>com.puppycrawl.tools.checkstyle.Main</mainClass>
                    </transformer>
                  </transformers>
                </configuration>
              </execution>
            </executions>
          </plugin>

          <!-- Creates the binary and source distributions -->
          <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <configuration>
              <descriptors>
                <descriptor>config/assembly-bin.xml</descriptor>
                <descriptor>config/assembly-src.xml</descriptor>
              </descriptors>
              <tarLongFileMode>gnu</tarLongFileMode>
            </configuration>
            <executions>
              <execution>
                <id>make-bundle</id>
                <phase>package</phase>
                <goals>
                  <goal>single</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>

    </profile>

    <profile>
      <id>sonar</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>sonar-maven-plugin</artifactId>
          </plugin>
        </plugins>
      </build>
    </profile>

    <profile>
      <id>cobertura-check</id>
      <activation>
        <jdk>[1.8,)</jdk>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>cobertura-maven-plugin</artifactId>
            <configuration>
              <quiet>true</quiet>
              <formats>
                <format>xml</format>
                <format>html</format>
              </formats>
              <check>
                <haltOnFailure>true</haltOnFailure>
                <branchRate>100</branchRate>
                <lineRate>100</lineRate>
                <totalBranchRate>84</totalBranchRate>
                <totalLineRate>89</totalLineRate>
                <regexes>
                  <regex>
                    <pattern>com.puppycrawl.tools.checkstyle.grammars.GeneratedJavaRecognizer</pattern>
                    <branchRate>72</branchRate>
                    <lineRate>96</lineRate>
                  </regex>
                  <regex>
                    <pattern>com.puppycrawl.tools.checkstyle.grammars.GeneratedJavaLexer</pattern>
                    <branchRate>79</branchRate>
                    <lineRate>96</lineRate>
                  </regex>
                  <regex>
                    <pattern>com.puppycrawl.tools.checkstyle.grammars.javadoc.JavadocParser</pattern>
                    <branchRate>42</branchRate>
                    <lineRate>53</lineRate>
                  </regex>
                  <regex>
                    <pattern>com.puppycrawl.tools.checkstyle.grammars.javadoc.JavadocLexer</pattern>
                    <branchRate>64</branchRate>
                    <lineRate>84</lineRate>
                  </regex>
                </regexes>
              </check>
              <instrumentation>
                <excludes>
                  <!-- Terence Parr, The Definitive ANTLR 4 Reference, 2.4 Building Language Applications Using Parse Trees:
                       "To better support access to the elements within specific nodes, ANTLR generates
                       a RuleNode subclass for each rule. ... Given this description of the concrete types, we could write
                       code by hand to perform a depth-first walk of the tree. We could perform whatever actions we
                       wanted as we discovered and finished nodes. Typical operations are things such as
                       computing results, updating data structures, or generating output."
                       We don't need these classes as we use only ParseTree methods for walking. -->
                  <exclude>com/puppycrawl/tools/checkstyle/grammars/javadoc/JavadocParser$*.class</exclude>
                  <!-- Swing related classes -->
                  <exclude>com/puppycrawl/tools/checkstyle/gui/BaseCellEditor*.class</exclude>
                  <exclude>com/puppycrawl/tools/checkstyle/gui/CodeSelector.class</exclude>
                  <exclude>com/puppycrawl/tools/checkstyle/gui/TreeTable*.class</exclude>
                  <exclude>com/puppycrawl/tools/checkstyle/gui/ListToTreeSelectionModelWrapper*.class</exclude>
                  <exclude>com/puppycrawl/tools/checkstyle/gui/Main*.class</exclude>
                  <exclude>com/puppycrawl/tools/checkstyle/gui/MainFrame*.class</exclude>
                  <exclude>com/puppycrawl/tools/checkstyle/gui/ParseTreeTableModel*.class</exclude>
                  <exclude>com/puppycrawl/tools/checkstyle/gui/TreeTableCellRenderer*.class</exclude>
                  <exclude>com/puppycrawl/tools/checkstyle/gui/TreeTableModelAdapter*.class</exclude>
                  <!-- deprecated classes -->
                  <exclude>com/puppycrawl/tools/checkstyle/checks/naming/AbstractTypeParameterNameCheck.class</exclude>
                </excludes>
              </instrumentation>
            </configuration>
            <executions>
              <execution>
                <goals>
                  <goal>check</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>

    <profile>
      <id>pitest-checks-misc</id>
      <properties>
        <skipTests>true</skipTests>
      </properties>
      <build>
        <plugins>
          <plugin>
            <groupId>org.pitest</groupId>
            <artifactId>pitest-maven</artifactId>
            <version>${pitest.plugin.version}</version>
            <configuration>
              <targetClasses>
                <param>com.puppycrawl.tools.checkstyle.checks.ArrayTypeStyleCheck</param>
                <param>com.puppycrawl.tools.checkstyle.checks.AvoidEscapedUnicodeCharactersCheck</param>
                <param>com.puppycrawl.tools.checkstyle.checks.DescendantTokenCheck</param>
                <param>com.puppycrawl.tools.checkstyle.checks.FileSetCheckLifecycle</param>
                <param>com.puppycrawl.tools.checkstyle.checks.FinalParametersCheck</param>
                <param>com.puppycrawl.tools.checkstyle.checks.NewlineAtEndOfFileCheck</param>
                <param>com.puppycrawl.tools.checkstyle.checks.OuterTypeFilenameCheck</param>
                <!-- this class will be rewritten in future releases -->
                <!--<param>com.puppycrawl.tools.checkstyle.checks.SuppressWarningsHolder</param>-->
                <param>com.puppycrawl.tools.checkstyle.checks.TodoCommentCheck</param>
                <param>com.puppycrawl.tools.checkstyle.checks.TrailingCommentCheck</param>
                <param>com.puppycrawl.tools.checkstyle.checks.TranslationCheck</param>
                <param>com.puppycrawl.tools.checkstyle.checks.UncommentedMainCheck</param>
                <param>com.puppycrawl.tools.checkstyle.checks.UniquePropertiesCheck</param>
                <param>com.puppycrawl.tools.checkstyle.checks.UpperEllCheck</param>
              </targetClasses>
              <targetTests>
                <param>com.puppycrawl.tools.checkstyle.checks.ArrayTypeStyleCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.AvoidEscapedUnicodeCharactersCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.DescendantTokenCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.FinalParametersCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.NewlineAtEndOfFileCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.OuterTypeFilenameCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.SuppressWarningsHolderTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.TodoCommentCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.TrailingCommentCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.TranslationCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.UncommentedMainCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.UniquePropertiesCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.UpperEllCheckTest</param>
              </targetTests>
              <coverageThreshold>100</coverageThreshold>
              <mutationThreshold>100</mutationThreshold>
              <timeoutFactor>${pitest.plugin.timeout.factor}</timeoutFactor>
              <timeoutConstant>${pitest.plugin.timeout.constant}</timeoutConstant>
              <threads>${pitest.plugin.threads}</threads>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>pitest-checks-annotation</id>
      <properties>
        <skipTests>true</skipTests>
      </properties>
      <build>
        <plugins>
          <plugin>
            <groupId>org.pitest</groupId>
            <artifactId>pitest-maven</artifactId>
            <version>${pitest.plugin.version}</version>
            <configuration>
              <targetClasses>
                <param>com.puppycrawl.tools.checkstyle.checks.annotation.AnnotationLocationCheck</param>
                <param>com.puppycrawl.tools.checkstyle.checks.annotation.AnnotationOnSameLineCheck</param>
                <param>com.puppycrawl.tools.checkstyle.checks.annotation.AnnotationUseStyleCheck</param>
                <param>com.puppycrawl.tools.checkstyle.checks.annotation.MissingDeprecatedCheck</param>
                <param>com.puppycrawl.tools.checkstyle.checks.annotation.MissingOverrideCheck</param>
                <param>com.puppycrawl.tools.checkstyle.checks.annotation.PackageAnnotationCheck</param>
                <param>com.puppycrawl.tools.checkstyle.checks.annotation.SuppressWarningsCheck</param>
              </targetClasses>
              <targetTests>
                <param>com.puppycrawl.tools.checkstyle.checks.annotation.AnnotationLocationCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.annotation.AnnotationOnSameLineCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.annotation.AnnotationUseStyleCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.annotation.MissingDeprecatedCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.annotation.MissingOverrideCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.annotation.PackageAnnotationCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.annotation.SuppressWarningsCheckTest</param>
              </targetTests>
              <coverageThreshold>100</coverageThreshold>
              <mutationThreshold>100</mutationThreshold>
              <timeoutFactor>${pitest.plugin.timeout.factor}</timeoutFactor>
              <timeoutConstant>${pitest.plugin.timeout.constant}</timeoutConstant>
              <threads>${pitest.plugin.threads}</threads>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>pitest-checks-blocks</id>
      <properties>
        <skipTests>true</skipTests>
      </properties>
      <build>
        <plugins>
          <plugin>
            <groupId>org.pitest</groupId>
            <artifactId>pitest-maven</artifactId>
            <version>${pitest.plugin.version}</version>
            <configuration>
              <targetClasses>
                <param>com.puppycrawl.tools.checkstyle.checks.blocks.*</param>
              </targetClasses>
              <targetTests>
                <param>com.puppycrawl.tools.checkstyle.checks.blocks.*</param>
              </targetTests>
              <coverageThreshold>100</coverageThreshold>
              <mutationThreshold>97</mutationThreshold>
              <timeoutFactor>${pitest.plugin.timeout.factor}</timeoutFactor>
              <timeoutConstant>${pitest.plugin.timeout.constant}</timeoutConstant>
              <threads>${pitest.plugin.threads}</threads>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>pitest-checks-coding</id>
      <properties>
        <skipTests>true</skipTests>
      </properties>
      <build>
        <plugins>
          <plugin>
            <groupId>org.pitest</groupId>
            <artifactId>pitest-maven</artifactId>
            <version>${pitest.plugin.version}</version>
            <configuration>
              <targetClasses>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.*</param>
              </targetClasses>
              <targetTests>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.*</param>
              </targetTests>
              <coverageThreshold>100</coverageThreshold>
              <mutationThreshold>98</mutationThreshold>
              <timeoutFactor>${pitest.plugin.timeout.factor}</timeoutFactor>
              <timeoutConstant>${pitest.plugin.timeout.constant}</timeoutConstant>
              <threads>${pitest.plugin.threads}</threads>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>pitest-checks-design</id>
      <properties>
        <skipTests>true</skipTests>
      </properties>
      <build>
        <plugins>
          <plugin>
            <groupId>org.pitest</groupId>
            <artifactId>pitest-maven</artifactId>
            <version>${pitest.plugin.version}</version>
            <configuration>
              <targetClasses>
                <param>com.puppycrawl.tools.checkstyle.checks.design.*</param>
              </targetClasses>
              <targetTests>
                <param>com.puppycrawl.tools.checkstyle.checks.design.*</param>
              </targetTests>
              <coverageThreshold>100</coverageThreshold>
              <mutationThreshold>100</mutationThreshold>
              <timeoutFactor>${pitest.plugin.timeout.factor}</timeoutFactor>
              <timeoutConstant>${pitest.plugin.timeout.constant}</timeoutConstant>
              <threads>${pitest.plugin.threads}</threads>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>pitest-checks-header</id>
      <properties>
        <skipTests>true</skipTests>
      </properties>
      <build>
        <plugins>
          <plugin>
            <groupId>org.pitest</groupId>
            <artifactId>pitest-maven</artifactId>
            <version>${pitest.plugin.version}</version>
            <configuration>
              <targetClasses>
                <param>com.puppycrawl.tools.checkstyle.checks.header.*</param>
              </targetClasses>
              <targetTests>
                <param>com.puppycrawl.tools.checkstyle.checks.header.*</param>
              </targetTests>
              <coverageThreshold>100</coverageThreshold>
              <mutationThreshold>100</mutationThreshold>
              <timeoutFactor>${pitest.plugin.timeout.factor}</timeoutFactor>
              <timeoutConstant>${pitest.plugin.timeout.constant}</timeoutConstant>
              <threads>${pitest.plugin.threads}</threads>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>pitest-checks-imports</id>
      <properties>
        <skipTests>true</skipTests>
      </properties>
      <build>
        <plugins>
          <plugin>
            <groupId>org.pitest</groupId>
            <artifactId>pitest-maven</artifactId>
            <version>${pitest.plugin.version}</version>
            <configuration>
              <targetClasses>
                <param>com.puppycrawl.tools.checkstyle.checks.imports.*</param>
              </targetClasses>
              <targetTests>
                <param>com.puppycrawl.tools.checkstyle.checks.imports.*</param>
              </targetTests>
              <coverageThreshold>100</coverageThreshold>
              <mutationThreshold>96</mutationThreshold>
              <timeoutFactor>${pitest.plugin.timeout.factor}</timeoutFactor>
              <timeoutConstant>${pitest.plugin.timeout.constant}</timeoutConstant>
              <threads>${pitest.plugin.threads}</threads>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>pitest-checks-indentation</id>
      <properties>
        <skipTests>true</skipTests>
      </properties>
      <build>
        <plugins>
          <plugin>
            <groupId>org.pitest</groupId>
            <artifactId>pitest-maven</artifactId>
            <version>${pitest.plugin.version}</version>
            <configuration>
              <targetClasses>
                <param>com.puppycrawl.tools.checkstyle.checks.indentation.*</param>
              </targetClasses>
              <targetTests>
                <param>com.puppycrawl.tools.checkstyle.checks.indentation.*</param>
              </targetTests>
              <coverageThreshold>100</coverageThreshold>
              <mutationThreshold>94</mutationThreshold>
              <timeoutFactor>${pitest.plugin.timeout.factor}</timeoutFactor>
              <timeoutConstant>${pitest.plugin.timeout.constant}</timeoutConstant>
              <threads>${pitest.plugin.threads}</threads>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>pitest-checks-javadoc</id>
      <properties>
        <skipTests>true</skipTests>
      </properties>
      <build>
        <plugins>
          <plugin>
            <groupId>org.pitest</groupId>
            <artifactId>pitest-maven</artifactId>
            <version>${pitest.plugin.version}</version>
            <configuration>
              <targetClasses>
                <param>com.puppycrawl.tools.checkstyle.checks.javadoc.*</param>
              </targetClasses>
              <targetTests>
                <param>com.puppycrawl.tools.checkstyle.checks.javadoc.*</param>
              </targetTests>
              <coverageThreshold>100</coverageThreshold>
              <mutationThreshold>95</mutationThreshold>
              <timeoutFactor>${pitest.plugin.timeout.factor}</timeoutFactor>
              <timeoutConstant>${pitest.plugin.timeout.constant}</timeoutConstant>
              <threads>${pitest.plugin.threads}</threads>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>pitest-checks-metrics</id>
      <properties>
        <skipTests>true</skipTests>
      </properties>
      <build>
        <plugins>
          <plugin>
            <groupId>org.pitest</groupId>
            <artifactId>pitest-maven</artifactId>
            <version>${pitest.plugin.version}</version>
            <configuration>
              <targetClasses>
                <param>com.puppycrawl.tools.checkstyle.checks.metrics.*</param>
              </targetClasses>
              <targetTests>
                <param>com.puppycrawl.tools.checkstyle.checks.metrics.*</param>
              </targetTests>
              <coverageThreshold>100</coverageThreshold>
              <mutationThreshold>100</mutationThreshold>
              <timeoutFactor>${pitest.plugin.timeout.factor}</timeoutFactor>
              <timeoutConstant>${pitest.plugin.timeout.constant}</timeoutConstant>
              <threads>${pitest.plugin.threads}</threads>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>pitest-checks-modifier</id>
      <properties>
        <skipTests>true</skipTests>
      </properties>
      <build>
        <plugins>
          <plugin>
            <groupId>org.pitest</groupId>
            <artifactId>pitest-maven</artifactId>
            <version>${pitest.plugin.version}</version>
            <configuration>
              <targetClasses>
                <param>com.puppycrawl.tools.checkstyle.checks.modifier.*</param>
              </targetClasses>
              <targetTests>
                <param>com.puppycrawl.tools.checkstyle.checks.modifier.*</param>
              </targetTests>
              <coverageThreshold>100</coverageThreshold>
              <mutationThreshold>100</mutationThreshold>
              <timeoutFactor>${pitest.plugin.timeout.factor}</timeoutFactor>
              <timeoutConstant>${pitest.plugin.timeout.constant}</timeoutConstant>
              <threads>${pitest.plugin.threads}</threads>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>pitest-checks-naming</id>
      <properties>
        <skipTests>true</skipTests>
      </properties>
      <build>
        <plugins>
          <plugin>
            <groupId>org.pitest</groupId>
            <artifactId>pitest-maven</artifactId>
            <version>${pitest.plugin.version}</version>
            <configuration>
              <targetClasses>
                <param>com.puppycrawl.tools.checkstyle.checks.naming.*</param>
              </targetClasses>
              <targetTests>
                <param>com.puppycrawl.tools.checkstyle.checks.naming.*</param>
              </targetTests>
              <excludedClasses>
                <!-- deprecated class -->
                <param>com.puppycrawl.tools.checkstyle.checks.naming.AbstractTypeParameterNameCheck</param>
              </excludedClasses>
              <coverageThreshold>100</coverageThreshold>
              <mutationThreshold>100</mutationThreshold>
              <timeoutFactor>${pitest.plugin.timeout.factor}</timeoutFactor>
              <timeoutConstant>${pitest.plugin.timeout.constant}</timeoutConstant>
              <threads>${pitest.plugin.threads}</threads>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>pitest-checks-regexp</id>
      <properties>
        <skipTests>true</skipTests>
      </properties>
      <build>
        <plugins>
          <plugin>
            <groupId>org.pitest</groupId>
            <artifactId>pitest-maven</artifactId>
            <version>${pitest.plugin.version}</version>
            <configuration>
              <targetClasses>
                <param>com.puppycrawl.tools.checkstyle.checks.regexp.*</param>
              </targetClasses>
              <targetTests>
                <param>com.puppycrawl.tools.checkstyle.checks.regexp.*</param>
              </targetTests>
              <coverageThreshold>100</coverageThreshold>
              <mutationThreshold>100</mutationThreshold>
              <timeoutFactor>${pitest.plugin.timeout.factor}</timeoutFactor>
              <timeoutConstant>${pitest.plugin.timeout.constant}</timeoutConstant>
              <threads>${pitest.plugin.threads}</threads>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>pitest-checks-sizes</id>
      <properties>
        <skipTests>true</skipTests>
      </properties>
      <build>
        <plugins>
          <plugin>
            <groupId>org.pitest</groupId>
            <artifactId>pitest-maven</artifactId>
            <version>${pitest.plugin.version}</version>
            <configuration>
              <targetClasses>
                <param>com.puppycrawl.tools.checkstyle.checks.sizes.*</param>
              </targetClasses>
              <targetTests>
                <param>com.puppycrawl.tools.checkstyle.checks.sizes.*</param>
              </targetTests>
              <coverageThreshold>100</coverageThreshold>
              <mutationThreshold>100</mutationThreshold>
              <timeoutFactor>${pitest.plugin.timeout.factor}</timeoutFactor>
              <timeoutConstant>${pitest.plugin.timeout.constant}</timeoutConstant>
              <threads>${pitest.plugin.threads}</threads>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>pitest-checks-whitespace</id>
      <properties>
        <skipTests>true</skipTests>
      </properties>
      <build>
        <plugins>
          <plugin>
            <groupId>org.pitest</groupId>
            <artifactId>pitest-maven</artifactId>
            <version>${pitest.plugin.version}</version>
            <configuration>
              <targetClasses>
                <param>com.puppycrawl.tools.checkstyle.checks.whitespace.*</param>
              </targetClasses>
              <targetTests>
                <param>com.puppycrawl.tools.checkstyle.checks.whitespace.*</param>
              </targetTests>
              <coverageThreshold>100</coverageThreshold>
              <mutationThreshold>100</mutationThreshold>
              <timeoutFactor>${pitest.plugin.timeout.factor}</timeoutFactor>
              <timeoutConstant>${pitest.plugin.timeout.constant}</timeoutConstant>
              <threads>${pitest.plugin.threads}</threads>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
   <!-- Non-checks code profiles -->
    <profile>
      <id>pitest-checkstyle-common</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.pitest</groupId>
            <artifactId>pitest-maven</artifactId>
            <version>${pitest.plugin.version}</version>
            <configuration>
              <targetClasses>
                <param>com.puppycrawl.tools.checkstyle.AuditEventDefaultFormatter</param>
                <param>com.puppycrawl.tools.checkstyle.ConfigurationLoader*</param>
                <param>com.puppycrawl.tools.checkstyle.PackageNamesLoader</param>
                <param>com.puppycrawl.tools.checkstyle.DefaultConfiguration</param>
                <param>com.puppycrawl.tools.checkstyle.DefaultContext</param>
                <param>com.puppycrawl.tools.checkstyle.DefaultLogger</param>
                <param>com.puppycrawl.tools.checkstyle.Definitions</param>
                <param>com.puppycrawl.tools.checkstyle.XMLLogger</param>
                <param>com.puppycrawl.tools.checkstyle.PackageObjectFactory</param>
                <param>com.puppycrawl.tools.checkstyle.PropertiesExpander</param>
                <param>com.puppycrawl.tools.checkstyle.PropertyCacheFile</param>
                <param>com.puppycrawl.tools.checkstyle.Checker</param>
                <param>com.puppycrawl.tools.checkstyle.ant.*</param>
                <param>com.puppycrawl.tools.checkstyle.doclets.*</param>
                <param>com.puppycrawl.tools.checkstyle.ThreadModeSettings</param>
              </targetClasses>
              <targetTests>
                <param>com.puppycrawl.tools.checkstyle.AuditEventDefaultFormatterTest</param>
                <param>com.puppycrawl.tools.checkstyle.ConfigurationLoaderTest</param>
                <param>com.puppycrawl.tools.checkstyle.PackageNamesLoaderTest</param>
                <param>com.puppycrawl.tools.checkstyle.DefaultConfigurationTest</param>
                <param>com.puppycrawl.tools.checkstyle.DefaultLoggerTest</param>
                <param>com.puppycrawl.tools.checkstyle.DefinitionsTest</param>
                <param>com.puppycrawl.tools.checkstyle.XMLLoggerTest</param>
                <param>com.puppycrawl.tools.checkstyle.PackageObjectFactoryTest</param>
                <param>com.puppycrawl.tools.checkstyle.PropertiesExpanderTest</param>
                <param>com.puppycrawl.tools.checkstyle.PropertyCacheFileTest</param>
                <param>com.puppycrawl.tools.checkstyle.CheckerTest</param>
                <param>com.puppycrawl.tools.checkstyle.ant.*</param>
                <param>com.puppycrawl.tools.checkstyle.doclets.*</param>
                <param>com.puppycrawl.tools.checkstyle.ThreadModeSettingsTest</param>
              </targetTests>
              <coverageThreshold>100</coverageThreshold>
              <mutationThreshold>100</mutationThreshold>
              <timeoutFactor>${pitest.plugin.timeout.factor}</timeoutFactor>
              <timeoutConstant>${pitest.plugin.timeout.constant}</timeoutConstant>
              <threads>${pitest.plugin.threads}</threads>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>pitest-checkstyle-main</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.pitest</groupId>
            <artifactId>pitest-maven</artifactId>
            <version>${pitest.plugin.version}</version>
            <configuration>
              <targetClasses>
                <param>com.puppycrawl.tools.checkstyle.Main</param>
              </targetClasses>
              <targetTests>
                <param>com.puppycrawl.tools.checkstyle.MainTest</param>
              </targetTests>
              <coverageThreshold>100</coverageThreshold>
              <mutationThreshold>100</mutationThreshold>
              <timeoutFactor>${pitest.plugin.timeout.factor}</timeoutFactor>
              <timeoutConstant>${pitest.plugin.timeout.constant}</timeoutConstant>
              <threads>${pitest.plugin.threads}</threads>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>pitest-checkstyle-tree-walker</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.pitest</groupId>
            <artifactId>pitest-maven</artifactId>
            <version>${pitest.plugin.version}</version>
            <configuration>
              <targetClasses>
                <param>com.puppycrawl.tools.checkstyle.JavadocDetailNodeParser</param>
                <param>com.puppycrawl.tools.checkstyle.DetailNodeTreeStringPrinter</param>
                <param>com.puppycrawl.tools.checkstyle.AstTreeStringPrinter</param>
                <param>com.puppycrawl.tools.checkstyle.TreeWalker</param>
              </targetClasses>
              <targetTests>
                <param>com.puppycrawl.tools.checkstyle.DetailNodeTreeStringPrinterTest</param>
                <param>com.puppycrawl.tools.checkstyle.AstTreeStringPrinterTest</param>
                <param>com.puppycrawl.tools.checkstyle.TreeWalkerTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.PackageDeclarationCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.imports.ImportControlCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.indentation.IndentationCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.javadoc.*</param>
                <param>com.puppycrawl.tools.checkstyle.checks.metrics.ClassDataAbstractionCouplingCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.naming.TypeNameCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.regexp.RegexpSinglelineJavaCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.sizes.MethodCountCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.whitespace.SingleSpaceSeparatorCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.whitespace.EmptyLineSeparatorCheckTest</param>
              </targetTests>
              <excludedMethods>
                <!-- destroy in TreeWalker was added in case module had to free up resources before ending,
                but currently it does nothing, so we cannot check it. If we remove this destroy we would have
                to remove all of them as they are chained together, so we just exclude it from pitest check. -->
                <param>destroy</param>
              </excludedMethods>
              <coverageThreshold>100</coverageThreshold>
              <mutationThreshold>100</mutationThreshold>
              <timeoutFactor>${pitest.plugin.timeout.factor}</timeoutFactor>
              <timeoutConstant>${pitest.plugin.timeout.constant}</timeoutConstant>
              <threads>${pitest.plugin.threads}</threads>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>pitest-checkstyle-api</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.pitest</groupId>
            <artifactId>pitest-maven</artifactId>
            <version>${pitest.plugin.version}</version>
            <configuration>
              <targetClasses>
                <param>com.puppycrawl.tools.checkstyle.api.*</param>
              </targetClasses>
              <targetTests>
                <param>com.puppycrawl.tools.checkstyle.api.*</param>
                <param>com.puppycrawl.tools.checkstyle.grammars.comments.CommentsTest</param>
                <param>com.puppycrawl.tools.checkstyle.filefilters.*</param>
                <param>com.puppycrawl.tools.checkstyle.filters.*</param>
                <param>com.puppycrawl.tools.checkstyle.checks.javadoc.JavadocMethodCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.imports.ImportControlCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.javadoc.WriteTagCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.naming.ParameterNameCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.ConfigurationLoaderTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.TranslationCheckTest</param>
              </targetTests>
              <excludedMethods>
                <!--cause of https://github.com/checkstyle/checkstyle/issues/3605-->
                <param>addFeaturesForVerySecureJavaInstallations</param>
              </excludedMethods>
              <avoidCallsTo>
                <!--cause of https://github.com/checkstyle/checkstyle/issues/3605-->
                <avoidCallsTo>com.puppycrawl.tools.checkstyle.XmlLoader$FeaturesForVerySecureJavaInstallations</avoidCallsTo>
              </avoidCallsTo>
              <coverageThreshold>100</coverageThreshold>
              <mutationThreshold>100</mutationThreshold>
              <timeoutFactor>${pitest.plugin.timeout.factor}</timeoutFactor>
              <timeoutConstant>${pitest.plugin.timeout.constant}</timeoutConstant>
              <threads>${pitest.plugin.threads}</threads>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>pitest-checkstyle-filters</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.pitest</groupId>
            <artifactId>pitest-maven</artifactId>
            <version>${pitest.plugin.version}</version>
            <configuration>
              <targetClasses>
                <param>com.puppycrawl.tools.checkstyle.filefilters.*</param>
                <param>com.puppycrawl.tools.checkstyle.filters.*</param>
              </targetClasses>
              <targetTests>
                <param>com.puppycrawl.tools.checkstyle.filefilters.*</param>
                <param>com.puppycrawl.tools.checkstyle.filters.*</param>
              </targetTests>
              <coverageThreshold>100</coverageThreshold>
              <mutationThreshold>100</mutationThreshold>
              <timeoutFactor>${pitest.plugin.timeout.factor}</timeoutFactor>
              <timeoutConstant>${pitest.plugin.timeout.constant}</timeoutConstant>
              <threads>${pitest.plugin.threads}</threads>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>pitest-checkstyle-utils</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.pitest</groupId>
            <artifactId>pitest-maven</artifactId>
            <version>${pitest.plugin.version}</version>
            <configuration>
              <targetClasses>
                <param>com.puppycrawl.tools.checkstyle.utils.*</param>
              </targetClasses>
              <targetTests>
                <param>com.puppycrawl.tools.checkstyle.utils.*</param>
                <!-- 12% mutation in CommonUtils, 3% coverage in CommonUtils, 2% coverage in JavadocUtils -->
                <param>com.puppycrawl.tools.checkstyle.AstTreeStringPrinterTest</param>
                <!-- 2% mutation in CommonUtils -->
                <param>com.puppycrawl.tools.checkstyle.DetailNodeTreeStringPrinterTest</param>
                <!-- ModuleReflectionUtils -->
                <param>com.puppycrawl.tools.checkstyle.PackageObjectFactoryTest</param>
                <!-- 3% coverage in BlockCommentPosition, 11% mutation in JavadocUtils, 10% coverage in JavadocUtils, ScopeUtils -->
                <param>com.puppycrawl.tools.checkstyle.checks.javadoc.AbstractJavadocCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.javadoc.SingleLineJavadocCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.javadoc.JavadocVariableCheckTest</param>
              </targetTests>
              <coverageThreshold>100</coverageThreshold>
              <mutationThreshold>100</mutationThreshold>
              <timeoutFactor>${pitest.plugin.timeout.factor}</timeoutFactor>
              <timeoutConstant>${pitest.plugin.timeout.constant}</timeoutConstant>
              <threads>${pitest.plugin.threads}</threads>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>pitest-checkstyle-gui</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.pitest</groupId>
            <artifactId>pitest-maven</artifactId>
            <version>${pitest.plugin.version}</version>
            <configuration>
              <targetClasses>
                <param>com.puppycrawl.tools.checkstyle.gui.*</param>
              </targetClasses>
              <targetTests>
                <param>com.puppycrawl.tools.checkstyle.gui.*</param>
              </targetTests>
              <coverageThreshold>100</coverageThreshold>
              <mutationThreshold>30</mutationThreshold>
              <timeoutFactor>${pitest.plugin.timeout.factor}</timeoutFactor>
              <timeoutConstant>${pitest.plugin.timeout.constant}</timeoutConstant>
              <threads>${pitest.plugin.threads}</threads>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>eclipse-compiler</id>
      <dependencies>
        <dependency>
            <groupId>org.eclipse.jdt</groupId>
            <artifactId>org.eclipse.jdt.annotation</artifactId>
            <version>2.1.0</version>
        </dependency>
      </dependencies>
      <build>
        <plugins>
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <version>1.6.0</version>
            <configuration>
              <executable>.ci/eclipse-compiler-javac.sh</executable>
              <classpathScope>test</classpathScope>
              <arguments>
                <classpath />
              </arguments>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>pitest-checkstyle-xpath</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.pitest</groupId>
            <artifactId>pitest-maven</artifactId>
            <version>${pitest.plugin.version}</version>
            <configuration>
              <targetClasses>
                <param>com.puppycrawl.tools.checkstyle.xpath.*</param>
              </targetClasses>
              <targetTests>
                <param>com.puppycrawl.tools.checkstyle.xpath.*</param>
              </targetTests>
              <coverageThreshold>100</coverageThreshold>
              <mutationThreshold>100</mutationThreshold>
              <timeoutFactor>${pitest.plugin.timeout.factor}</timeoutFactor>
              <timeoutConstant>${pitest.plugin.timeout.constant}</timeoutConstant>
              <threads>${pitest.plugin.threads}</threads>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>
</project>
