# PMD vs Ruff

**Leader by vioscaleAI score:** Ruff

| Attribute | PMD | Ruff |
|---|---|---|
| **vioscaleAI score** | 55.6 (49% (low)) | 72.5 (68% (medium)) |
| activity.commits_last_30d | 64 | 100 |
| adoption.dependent_repos | 356 | 5,870 |
| adoption.github_stars | 5,508 | 49,914 |
| adoption.package_downloads_weekly | - | 77,677,334 |
| content.faq | `[{"answer":"PMD is a multilingual static code analyzer that detects common programming issues like unused variables and inefficient patterns. It includes over 400 built-in rules, supports 16+ languages with primary focus on Java, and supports custom rules via Java or XPath. It is indexed under Code Quality Tools.","source":"https://pmd.github.io/","question":"What is PMD?","confidence":0.6},{"answer":"PMD offers a free tier, so you can start without paying. Pricing changes often, so verify at source before relying on it.","source":"https://pmd.github.io/","question":"Is PMD free?","confidence":0.6},{"answer":"PMD supports Windows, macOS, Linux and a command-line interface. Platforms we have not confirmed are simply not listed here rather than ruled out.","source":"https://pmd.github.io/","question":"What platforms does PMD support?","confidence":0.6},{"answer":"Yes. PMD can be deployed self-hosted, so it does not have to run on the vendor's infrastructure.","source":"https://pmd.github.io/","question":"Can PMD be self-hosted?","confidence":0.6}]` | `[{"answer":"A fast Python linter built in Rust that consolidates multiple linting tools into a single interface. It supports over 500 rules, provides automated fixes for common issues, and runs significantly faster than traditional Python linters on even very large codebases. It is indexed under Code Quality Tools.","source":"https://astral.sh/ruff","question":"What is Ruff?","confidence":0.6},{"answer":"Ruff supports Windows, macOS, Linux and a command-line interface. Platforms we have not confirmed are simply not listed here rather than ruled out.","source":"https://astral.sh/ruff","question":"What platforms does Ruff support?","confidence":0.6},{"answer":"Yes. Ruff can be deployed self-hosted, so it does not have to run on the vendor's infrastructure.","source":"https://astral.sh/ruff","question":"Can Ruff be self-hosted?","confidence":0.6},{"answer":"We have confirmed 6 integrations for Ruff, including Flake8, isort, Autoflake, Pyflakes, pycodestyle and Pylint. This is what we could verify from public sources, so the vendor may support others we have not indexed.","source":"https://astral.sh/ruff","question":"What does Ruff integrate with?","confidence":0.6},{"answer":"We have independently confirmed GDPR for Ruff. Certifications we do not list are ones we have not been able to verify from public sources, which is not the same as Ruff not holding them. Always confirm compliance directly before you rely on it.","source":"https://astral.sh/legal/privacy","question":"What security certifications does Ruff have?","confidence":0.7},{"answer":"Yes. Ruff is published under the MIT licence, a permissive licence that generally allows commercial use and modification. Licence terms can change between releases, so verify against the repository for the version you intend to use.","source":"https://github.com/astral-sh/ruff","question":"Is Ruff open source?","confidence":0.95},{"answer":"Ruff is available worldwide. Its primary market is the United States. The vendor is headquartered in the United States.","source":"https://astral.sh/ruff","question":"Where is Ruff available?","confidence":0.75}]` |
| deployment.options | `{"self_hosted":true}` | `{"self_hosted":true}` |
| description.long | PMD is a static analysis tool that scans source code to detect bugs, code smells, and quality issues across many programming languages. It includes copy-paste detection capabilities and supports custom rule creation. | A tool for analyzing and formatting Python code, designed to be fast and efficient through Rust implementation, with support across multiple platforms. |
| features.capabilities | `{"metrics":true,"function":"static_analyzer","ci_gating":true,"deployment":"cli_local","open_source":"oss","config_model":"rule_packs","custom_rules":true,"impl_language":"Java","pricing_model":"free","language_scope":"multi_language","editor_integration":true}` | `{"autofix":true,"function":"linter","deployment":"cli_local","incremental":true,"open_source":"oss","impl_language":"Rust","pricing_model":"free","language_scope":"single_language","editor_integration":true}` |
| integrations.count | 4 | 6 |
| integrations.list | `[{"name":"Eclipse"},{"name":"Gradle PMD Plugin","native":true},{"name":"eclipse-pmd","native":true},{"name":"pmd-eclipse-plugin","native":true},{"name":"PMD X","native":true},{"name":"PMD","native":true},{"name":"Apex PMD","native":true},{"name":"PMD for Java","native":true},{"name":"Gradle","native":true,"category":"build_system"},{"name":"IntelliJ","native":false,"category":"editor"},{"name":"VS Code","native":false,"category":"editor"}]` | `[{"name":"Flake8"},{"name":"isort"},{"name":"Autoflake"},{"name":"Pyflakes"},{"name":"pycodestyle"},{"name":"Pylint"},{"name":"Visual Studio Code","native":false,"category":"editor","direction":"outbound"}]` |
| language.primary | Java | Rust |
| license.spdx | - | MIT |
| market.availability | `{"primaryMarkets":[],"availabilityScope":"global","availableCountries":[],"notAvailableCountries":[]}` | `{"hqCountry":"US","primaryMarkets":["US"],"availabilityScope":"global","availableCountries":[],"notAvailableCountries":[]}` |
| platform.support | `{"cli":true}` | `{"cli":true,"mac":true,"linux":true,"windows":true}` |
| pricing | `{"type":"open_source","freeTier":true,"sourceUrl":"https://pmd.github.io/","retrievedAt":"2026-09-14T13:23:26.960Z"}` | - |
| pricing.free_tier | yes | - |
| pricing.model | open_source | commercial |
| pricing.price_level | free | - |
| pricing.transparent | yes | - |
| release.cadence_days | 28 | 7 |
| release.history | `[{"url":"https://github.com/pmd/pmd/releases/tag/pmd_releases/7.29.0-SNAPSHOT","date":"2026-09-25T09:32:04Z","type":"prerelease","version":"pmd_releases/7.29.0-SNAPSHOT"},{"url":"https://github.com/pmd/pmd/releases/tag/pmd_releases/7.28.0","date":"2026-09-25T09:00:39Z","type":"stable","version":"pmd_releases/7.28.0"},{"url":"https://github.com/pmd/pmd/releases/tag/pmd_releases/7.27.0","date":"2026-08-28T12:41:56Z","type":"stable","version":"pmd_releases/7.27.0"},{"url":"https://github.com/pmd/pmd/releases/tag/pmd_releases/7.26.0","date":"2026-06-29T09:27:48Z","type":"stable","version":"pmd_releases/7.26.0"},{"url":"https://github.com/pmd/pmd/releases/tag/pmd_releases/7.25.0","date":"2026-05-29T07:31:55Z","type":"stable","version":"pmd_releases/7.25.0"},{"url":"https://github.com/pmd/pmd/releases/tag/pmd_releases/7.24.0","date":"2026-04-24T10:32:31Z","type":"stable","version":"pmd_releases/7.24.0"},{"url":"https://github.com/pmd/pmd/releases/tag/pmd_releases/7.23.0","date":"2026-03-27T11:16:41Z","type":"stable","version":"pmd_releases/7.23.0"},{"url":"https://github.com/pmd/pmd/releases/tag/pmd_releases/7.22.0","date":"2026-02-27T12:03:19Z","type":"stable","version":"pmd_releases/7.22.0"},{"url":"https://github.com/pmd/pmd/releases/tag/pmd_releases/7.21.0","date":"2026-01-30T09:52:21Z","type":"stable","version":"pmd_releases/7.21.0"},{"url":"https://github.com/pmd/pmd/releases/tag/pmd_releases/7.20.0","date":"2025-12-30T15:44:30Z","type":"stable","version":"pmd_releases/7.20.0"},{"url":"https://github.com/pmd/pmd/releases/tag/pmd_releases/7.19.0","date":"2025-11-28T11:36:32Z","type":"stable","version":"pmd_releases/7.19.0"},{"url":"https://github.com/pmd/pmd/releases/tag/pmd_releases/7.18.0","date":"2025-10-31T08:59:05Z","type":"stable","version":"pmd_releases/7.18.0"},{"url":"https://github.com/pmd/pmd/releases/tag/pmd_releases/7.17.0","date":"2025-09-12T08:10:30Z","type":"stable","version":"pmd_releases/7.17.0"},{"url":"https://github.com/pmd/pmd/releases/tag/pmd_releases/7.16.0","date":"2025-07-25T07:00:32Z","type":"stable","version":"pmd_releases/7.16.0"},{"url":"https://github.com/pmd/pmd/releases/tag/pmd_releases/7.15.0","date":"2025-06-27T12:45:08Z","type":"stable","version":"pmd_releases/7.15.0"},{"url":"https://github.com/pmd/pmd/releases/tag/pmd_releases/7.14.0","date":"2025-05-30T18:45:09Z","type":"stable","version":"pmd_releases/7.14.0"},{"url":"https://github.com/pmd/pmd/releases/tag/pmd_releases/7.13.0","date":"2025-04-25T08:32:19Z","type":"stable","version":"pmd_releases/7.13.0"},{"url":"https://github.com/pmd/pmd/releases/tag/pmd_releases/7.12.0","date":"2025-03-28T08:27:08Z","type":"stable","version":"pmd_releases/7.12.0"},{"url":"https://github.com/pmd/pmd/releases/tag/pmd_releases/7.11.0","date":"2025-02-28T11:24:10Z","type":"stable","version":"pmd_releases/7.11.0"},{"url":"https://github.com/pmd/pmd/releases/tag/pmd_releases/7.10.0","date":"2025-01-31T10:26:11Z","type":"stable","version":"pmd_releases/7.10.0"}]` | `[{"url":"https://github.com/astral-sh/ruff/releases/tag/0.16.10","date":"2026-10-01T18:04:27Z","type":"stable","version":"0.16.10"},{"url":"https://github.com/astral-sh/ruff/releases/tag/0.16.9","date":"2026-09-24T20:38:52Z","type":"stable","version":"0.16.9"},{"url":"https://github.com/astral-sh/ruff/releases/tag/0.16.8","date":"2026-09-16T15:56:22Z","type":"stable","version":"0.16.8"},{"url":"https://github.com/astral-sh/ruff/releases/tag/0.16.7","date":"2026-09-10T18:05:06Z","type":"stable","version":"0.16.7"},{"url":"https://github.com/astral-sh/ruff/releases/tag/0.16.6","date":"2026-09-03T17:20:13Z","type":"stable","version":"0.16.6"},{"url":"https://github.com/astral-sh/ruff/releases/tag/0.16.5","date":"2026-08-27T16:37:58Z","type":"stable","version":"0.16.5"},{"url":"https://github.com/astral-sh/ruff/releases/tag/0.16.4","date":"2026-08-20T17:44:56Z","type":"stable","version":"0.16.4"},{"url":"https://github.com/astral-sh/ruff/releases/tag/0.16.3","date":"2026-08-13T15:18:05Z","type":"stable","version":"0.16.3"},{"url":"https://github.com/astral-sh/ruff/releases/tag/0.16.2","date":"2026-08-07T13:31:55Z","type":"stable","version":"0.16.2"},{"url":"https://github.com/astral-sh/ruff/releases/tag/0.16.1","date":"2026-07-30T19:37:52Z","type":"stable","version":"0.16.1"},{"url":"https://github.com/astral-sh/ruff/releases/tag/0.16.0","date":"2026-07-23T19:12:22Z","type":"stable","version":"0.16.0"},{"url":"https://github.com/astral-sh/ruff/releases/tag/0.15.22","date":"2026-07-16T15:15:10Z","type":"stable","version":"0.15.22"},{"url":"https://github.com/astral-sh/ruff/releases/tag/0.15.21","date":"2026-07-09T20:02:30Z","type":"stable","version":"0.15.21"},{"url":"https://github.com/astral-sh/ruff/releases/tag/0.15.20","date":"2026-06-25T17:21:46Z","type":"stable","version":"0.15.20"},{"url":"https://github.com/astral-sh/ruff/releases/tag/0.15.19","date":"2026-06-24T01:11:40Z","type":"stable","version":"0.15.19"},{"url":"https://github.com/astral-sh/ruff/releases/tag/0.15.18","date":"2026-06-18T18:26:34Z","type":"stable","version":"0.15.18"},{"url":"https://github.com/astral-sh/ruff/releases/tag/0.15.17","date":"2026-06-11T17:57:00Z","type":"stable","version":"0.15.17"},{"url":"https://github.com/astral-sh/ruff/releases/tag/0.15.16","date":"2026-06-04T16:34:11Z","type":"stable","version":"0.15.16"},{"url":"https://github.com/astral-sh/ruff/releases/tag/0.15.15","date":"2026-05-28T14:18:02Z","type":"stable","version":"0.15.15"},{"url":"https://github.com/astral-sh/ruff/releases/tag/0.15.14","date":"2026-05-21T14:35:54Z","type":"stable","version":"0.15.14"}]` |
| security.gdpr | - | yes |
| security.scorecard | 6.2 | - |
| security.vulnerabilities | `{"count":0,"source":"https://advisories.ecosyste.ms/api/v1/advisories?ecosystem=maven&package_name=net.sourceforge.pmd%3Apmd-java&per_page=100","last_12m":0,"max_severity":null}` | `{"count":0,"source":"https://advisories.ecosyste.ms/api/v1/advisories?ecosystem=pypi&package_name=ruff&per_page=100","last_12m":0,"max_severity":null}` |

## Capabilities (Code Quality Tools)

| Capability | PMD | Ruff |
|---|:--:|:--:|
| **Core** |  |  |
| Function | Static analyzer | Linter |
| Language scope | Multi-language | Single-language |
| Implementation language | Java | Rust |
| **Capability** |  |  |
| Autofix | - | ✓ |
| **Config** |  |  |
| Config model | Rule packs | - |
| **Extensibility** |  |  |
| Custom rules | ✓ | - |
| **Deployment** |  |  |
| Deployment | CLI-local | CLI-local |
| **Delivery** |  |  |
| Editor integration | ✓ | ✓ |
| CI / VCS gating | ✓ | - |
| **Insight** |  |  |
| Code metrics | ✓ | - |
| **Performance** |  |  |
| Incremental / monorepo aware | - | ✓ |
| **Licensing** |  |  |
| Open-source | OSS | OSS |
| **Commercial** |  |  |
| Pricing model | Free | Free |

*Source: vioscaleAI. Generated 2026-10-16T20:58:04.625Z. "-" = undocumented, not absent.*
