This action runs PMD static code analysis checks.
It can execute PMD with your own ruleset against your project. It creates a SARIF report which is uploaded as a build artifact. Furthermore the build can be failed based on the number of violations (see the extended examples).
The action can also be used as a code scanner to create "Code scanning alerts".
The input rulesets
is mandatory.
steps: - uses: actions/checkout@v4 - uses: actions/setup-java@v4 with: distribution: 'temurin' java-version: '11' - uses: pmd/pmd-github-action@v2 with: rulesets: 'ruleset.xml'
Use a specific PMD version (6.55.0) and fail the build based on the number of violations:
steps: - uses: actions/checkout@v4 - uses: actions/setup-java@v4 with: distribution: 'temurin' java-version: '11' - uses: pmd/pmd-github-action@v2 id: pmd with: version: '6.55.0' sourcePath: 'src/main/java' rulesets: 'rulesets/java/quickstart.xml,ruleset.xml' - name: Fail build if there are violations if: steps.pmd.outputs.violations != 0 run: exit 1
Create Code scanning alerts by uploading a SARIF file to GitHub:
steps: - uses: actions/checkout@v4 - uses: actions/setup-java@v4 with: distribution: 'temurin' java-version: '11' - uses: pmd/pmd-github-action@v2 with: rulesets: 'ruleset.xml' analyzeModifiedFilesOnly: false - name: Upload SARIF file uses: github/codeql-action/upload-sarif@v3 with: sarif_file: pmd-report.sarif
The created alerts are available in the project under "Security" / "Code scanning alerts". See also Uploading a SARIF file to GitHub.
input required default descriptiontoken
no "github.token" Personal access token (PAT) used to query the latest PMD release via api.github.com and to determine the modified files of a push/pull request (see option "analyzeModifiedFilesOnly").
version
no "latest" PMD version to use. Using "latest" automatically downloads the latest version.
downloadUrl
no "" Manually specify the download URL from where the PMD binary distribution will be downloaded. By default, this parameter is empty and the download URL is automatically determined by querying the PMD releases at https://github.com/pmd/pmd/releases.
sourcePath
no "." Root directory for sources. Uses by default the current directory rulesets
yes Comma separated list of ruleset names to use. analyzeModifiedFilesOnly
no "true" Instead of analyze all files under "sourcePath", only the files that have been touched in a pull request or push will be analyzed. This makes the analysis faster and helps especially bigger projects which gradually want to introduce PMD. This helps in enforcing that no new code violation is introduced.
createGitHubAnnotations
no "true" By default, all detected violations are added as annotations to the pull request. You can disable this by setting FALSE. This can be useful if you are using another tool for this purpose. uploadSarifReport
no "true" By default, the generated SARIF report will be uploaded as an artifact named "PMD Report". This can be disabled, e.g. if there are multiple executions on multiple os of this action. output description violations
Number of detected violations. Can be used to fail the build.
Below are a list of known limitations for the PMD GitHub Action:
You can analyze Java sources. But this actions current lacks the ability to configure the auxclasspath
hence the results won't be as good as they could be. For Java projects, integrating PMD via maven or gradle is recommended. Furthermore, the project is analyzed as is. No build is initiated before by this action. For Java this means, that the project is not compiled.
While you can provide a custom ruleset, you can only use custom rules entirely defined within your ruleset. This means that this action is limited to XPath rules for custom rules. In order to support custom Java based rules, the accompanying jar file containing the custom rule implementation would need to be provided.
Setting additional environment variables is not possible. This might be needed for some languages, e.g. Visualforce.
Github Marketplace PMD Actions:
The scripts and documentation in this project are released under the MIT License
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4