# Danger PMD [![Latest release](https://img.shields.io/github/v/release/mathroule/danger-pmd.svg)](https://github.com/mathroule/danger-pmd/releases/latest) [![Deploy](https://github.com/mathroule/danger-pmd/workflows/Deploy/badge.svg)](https://github.com/mathroule/danger-pmd/actions) [![codecov](https://codecov.io/gh/mathroule/danger-pmd/branch/main/graph/badge.svg?token=HYA9XW0GL5)](https://codecov.io/gh/mathroule/danger-pmd) Checks on your Gradle project's Java source files. This is done using [PMD](https://pmd.github.io) Results are passed out as tables in markdown. This plugin is inspired from https://github.com/kazy1991/danger-findbugs. ## Installation $ gem install danger-pmd ## Usage Methods and attributes from this plugin are available in your `Dangerfile` under the `pmd` namespace.
Running PMD with its basic configurationpmd.report
Running PMD with a specific Gradle task or report file (glob accepted)pmd.gradle_task = 'module:pmd' # default: 'pmd' pmd.report_file = 'module/build/reports/pmd/pmd.xml' # default: 'app/build/reports/pmd/pmd.xml' pmd.report
Running PMD with a specific root pathpmd.root_path = '/Users/developer/project' # default: result of `git rev-parse --show-toplevel` pmd.report
Running PMD with an array of report files (glob accepted)pmd.report_files = ['modules/**/build/reports/pmd/pmd.xml', 'app/build/reports/pmd/pmd.xml'] pmd.report
Running PMD without running a Gradle taskpmd.skip_gradle_task = true # default: false pmd.report
Running PMD without inline comment#### Attributes `gradle_task` - Custom Gradle task to run. This is useful when your project has different flavors. Defaults to "pmd". `skip_gradle_task` - Skip Gradle task. If you skip Gradle task, for example project does not manage Gradle. Defaults to `false`. `root_path` - An absolute path to a root. To comment errors to VCS, this needs to know relative path of files from the root. Defaults to result of "git rev-parse --show-toplevel". `report_file` - Location of report file. If your pmd task outputs to a different location, you can specify it here. Defaults to "app/build/reports/pmd/pmd.xml". `report_files` - Location of report files. If your pmd task outputs to a different location, you can specify it here. Defaults to ['app/build/reports/pmd/pmd.xml']. #### Methods `report` - Calls PMD task of your Gradle project. It fails if `gradlew` cannot be found inside current directory. It fails if `report_file` cannot be found inside current directory. It fails if `report_files` is empty. `gradle_task` - A getter for `gradle_task`, returning Gradle task report. `skip_gradle_task` - A getter for `skip_gradle_task`. `root_path` - A getter for `root_path`. `report_file` - A getter for `report_file`. `report_files` - A getter for `report_files`. ## Development 1. Clone this repo 2. Run `bundle install` to setup dependencies. 3. Run `bundle exec rake spec` to run the tests. 4. Use `bundle exec guard` to automatically have tests run as you make changes. 5. Make your changes.pmd.report(inline_mode: false) # default: true