2017-01-05 11:27:08 +01:00
# How to contribute to PMD
First off, thanks for taking the time to contribute!
2020-04-17 18:02:34 +02:00
Please note that this project is released with a Contributor Code of Conduct.
By participating in this project you agree to abide by its terms.
You can find the code of conduct in the file [code_of_conduct.md ](code_of_conduct.md ).
2017-01-05 11:27:08 +01:00
2020-05-18 21:16:04 +02:00
| NB: the rule designer is developed over at [pmd/pmd-designer ](https://github.com/pmd/pmd-designer ). Please refer to the specific [contributor documentation ](https://github.com/pmd/pmd-designer/blob/master/CONTRIBUTING.md ) if your issue, feature request or PR touches the designer. |
2019-03-03 11:54:41 +01:00
| --- |
2017-01-05 11:27:08 +01:00
## Pull requests
* Please create your pull request against the `master` branch. We will rebase/merge it to the maintenance
branches, if necessary.
* We are using [checkstyle ](http://checkstyle.sourceforge.net/ ) to enforce a common code style.
The check is integrated into the default build - so, make sure, you can [build PMD ](BUILDING.md ) without errors.
See [code style ](#code-style ) for more info.
## Bug reports
2020-02-15 19:07:20 +01:00
We use the issue tracker on Github. Please report new bugs at < https: / / github . com / pmd / pmd / issues > .
2017-01-05 11:27:08 +01:00
When filing a bug report, please provide as much information as possible, so that we can reproduce the issue:
* The name of the rule, that is buggy
* A code snippet, which triggers a false positive/negative or crash
* How do you execute PMD? (command line, ant, maven, gradle, other)
## Documentation
2020-02-15 19:07:20 +01:00
There is some documentation available under < https: / / pmd . github . io / latest > . Feel free to create a bug report if
2018-03-22 14:33:24 +01:00
documentation is missing, incomplete or outdated. See [Bug reports ](#bug-reports ).
2017-01-05 11:27:08 +01:00
2018-03-20 14:09:17 +01:00
The documentation is generated as a Jekyll site, the source is available at: < https: / / github . com / pmd / pmd / tree / master / docs > . You can find build instructions there.
2018-03-22 14:33:24 +01:00
For more on contributing documentation check < https: / / pmd . github . io / pmd / pmd_devdocs_writing_documentation . html >
2017-01-05 11:27:08 +01:00
## Questions
There are various channels, on which you can ask questions:
2020-02-15 19:07:20 +01:00
* On [StackOverflow ](https://stackoverflow.com/questions/tagged/pmd ): Make sure, to tag your question with "pmd".
2017-01-05 11:27:08 +01:00
2021-01-07 12:09:10 +01:00
* Create a new discussion for your question at < https: // github . com / pmd / pmd / discussions > .
2017-01-05 11:27:08 +01:00
2020-02-15 19:07:20 +01:00
* Ask your question on Gitter < https: // gitter . im / pmd / pmd > .
2017-01-05 11:27:08 +01:00
## Code Style
PMD uses [checkstyle ](http://checkstyle.sourceforge.net/ ) to enforce a common code style.
2020-02-15 19:07:20 +01:00
See [pmd-checkstyle-config.xml ](https://github.com/pmd/build-tools/blob/master/src/main/resources/net/sourceforge/pmd/pmd-checkstyle-config.xml ) for the configuration and
[the eclipse configuration files ](https://github.com/pmd/build-tools/tree/master/eclipse ) that can
2017-01-05 11:27:08 +01:00
be imported into a fresh workspace.
2021-08-20 16:16:31 +02:00
## Add yourself as contributor
2017-01-05 11:27:08 +01:00
2021-08-20 16:16:31 +02:00
We use [All Contributors ](https://allcontributors.org/en ).
2021-09-09 14:50:32 +02:00
To add yourself to the table of contributors, follow the
[bot usage instructions ](https://allcontributors.org/docs/en/bot/usage ) ;).
Or use the CLI:
2021-09-02 11:14:26 +02:00
1. Install the CLI: `npm i` (in PMD's top level directory)
2021-08-20 16:16:31 +02:00
2. Add yourself: `npx all-contributors add <username> <contribution>`
Where `username` is your GitHub username and `contribution` is a `,` -separated list
of contributions. See [Emoji Key ](https://allcontributors.org/docs/en/emoji-key ) for a list
2021-09-09 14:50:32 +02:00
of valid types. Common types are: "code", "doc", "bug", "blog", "talk", "test", "tutorial".
2021-08-20 16:16:31 +02:00
See also [cli documentation ](https://allcontributors.org/docs/en/cli/usage )