GitPedia

Gradle code quality tools plugin

Gradle plugin that generates Checkstyle, PMD, CPD, Lint & Ktlint Tasks for every subproject.

From vanniktech·Updated May 25, 2026·View on GitHub·

Gradle plugin that configures [Checkstyle](http://checkstyle.sourceforge.net/), [PMD](https://pmd.github.io/), [CPD](https://pmd.github.io/pmd-6.0.0/#cpd), [Lint](https://developer.android.com/studio/write/lint.html) & [Ktlint](https://github.com/shyiko/ktlint). All of these tools are also automatically hooked into the `check` gradle task. Below, I'll go more into depth how each of those plugins are configured. The project is written primarily in Kotlin, distributed under the Apache License 2.0 license, first published in 2015. Key topics include: android, checkstyle, code-quality, cpd, gradle.

Latest release: 0.25.0
January 12, 2026View Changelog →

gradle-code-quality-tools-plugin

Gradle plugin that configures Checkstyle, PMD, CPD, Lint & Ktlint. All of these tools are also automatically hooked into the check gradle task. Below, I'll go more into depth how each of those plugins are configured.

This plugin requires Gradle 5.0 or later.

Set up

root/build.gradle

gradle
buildscript { repositories { mavenCentral() google() } dependencies { classpath "com.vanniktech:gradle-code-quality-tools-plugin:0.25.0" } } apply plugin: "com.vanniktech.code.quality.tools"

Snapshot

gradle
buildscript { repositories { maven { url "https://oss.sonatype.org/content/repositories/snapshots" } } dependencies { classpath "com.vanniktech:gradle-code-quality-tools-plugin:0.26.0-SNAPSHOT" } } apply plugin: "com.vanniktech.code.quality.tools"

Configuration

The philosophy of this plugin is to fail early. This means having zero warnings / errors reported from any tools. If you're just getting started with this in a large code base you might not be able to achieve this right away in which case you might want to set failEarly to false and then apply at a finer more granular scope how each tool should behave e.g. checkstyle { ignoreFailures = false }.

Those are all the available configurations - shown with default values and their types. More information can be found in the Kotlin Documentation of the Extension and the respective extensions for designated integrations.

groovy
codeQualityTools { boolean failEarly = true boolean xmlReports = true boolean htmlReports = false boolean textReports = false String[] ignoreProjects = [] checkstyle { boolean enabled = true String toolVersion = '8.6' String configFile = 'code_quality_tools/checkstyle.xml' Boolean ignoreFailures = null Boolean showViolations = null String source = 'src' List<String> include = ['**/*.java'] List<String> exclude = ['**/gen/**'] } pmd { boolean enabled = true String toolVersion = '6.0.0' String ruleSetFile = 'code_quality_tools/pmd.xml' Boolean ignoreFailures = null String source = 'src' List<String> include = ['**/*.java'] List<String> exclude = ['**/gen/**'] } lint { boolean enabled = true Boolean textReport = true String textOutput = 'stdout' Boolean abortOnError = null Boolean warningsAsErrors = null Boolean checkAllWarnings = null String baselineFileName = null Boolean absolutePaths = null File lintConfig = null Boolean checkReleaseBuilds = false Boolean checkTestSources = null Boolean checkDependencies = null } ktlint { boolean enabled = true String toolVersion = '0.32.0' boolean experimental = false } cpd { boolean enabled = true String source = 'src' String language = 'java' Boolean ignoreFailures = null int minimumTokenCount = 50 } kotlin { boolean allWarningsAsErrors = true } }

Tools

Here I'll give a bit more information about how each of the tools will be applied. If there's a Gradle task that this plugin will generate it will also be hooked up into the check Gradle task. This means that when you execute check all of the rools will be running for you.

Checkstyle

It'll apply the Checkstyle Plugin and generate the checkstyle task that will execute checkstyle. The configuration properties of codeQualityTools -> checkstyle mirror the properties from the plugin.

PMD

It'll apply the PMD Plugin and generate the pmd task that will execute pmd. The configuration properties of codeQualityTools -> pmd mirror the properties from the plugin.

CPD

It'll apply the CPD Plugin and generate the cpdCheck task that will execute cpd. The configuration properties of codeQualityTools -> cpd mirror the properties from the plugin.

Lint

This will only work when one of the Android Plugins (com.android.application, com.android.library, etc.) are applied. The configuration properties of codeQualityTools -> lint mirror the properties from the lintOptions.

Ktlint

It'll use the specified ktlint version and then generate two tasks. ktlint which will run ktlint over your code and flag issues. ktlintFormat will reformat your code.

Note: There might be some configuration properties that are not mirrored in which case feel free to open a PR. Personally, I don't have the need for all of them.

License

Copyright (C) 2016 Vanniktech - Niklas Baudy

Licensed under the Apache License, Version 2.0

Contributors

Showing top 8 contributors by commit count.

View all contributors on GitHub →

This article is auto-generated from vanniktech/gradle-code-quality-tools-plugin via the GitHub API.Last fetched: 6/24/2026