Showing content from https://github.com/pmd/pmd/issues/4830 below:
Consolidate packages in each maven module · Issue #4830 · pmd/pmd · GitHub
Part of this should also be done for 7.0.0 - this is some more cleanup.
See "Task list for 7.0.0" below, what should be done for 7.0.0.
Project structure and java base package names
The general rules for mapping between maven modules and package names and languages should be:
- for language modules:
- maven module name:
pmd-<language id>
- base package name:
net.sourceforge.pmd.lang.<language id>
- for other modules:
- maven module name:
pmd-<module name>
- base package name:
net.sourceforge.pmd.<module name>
See ADR 3: https://docs.pmd-code.org/snapshot/pmd_projectdocs_decisions_adr_3.html#project-structure-and-java-base-packages-names
Exceptions
There are notable exceptions from this general rule:
- pmd-core: no base package, not even package net.sourceforge.pmd.core
- pmd-javascript: two base packages, none of them is "javascript"
- pmd-visualforce: base package is net.sourceforge.pmd.lang.vf and not net.sourceforge.pmd.lang.visualforce
and the language id is "vf" and not "visualforce"
- pmd-xml: contains four languages
Other notes
- pmd-core defines the following packages, that's why we can't have a language module with name ast, document, impl, metrics, rule, symboltable
- there are several other modules, that's why we can't have a language module with name core, cli, ant, doc, lang-test, test, test-schema
- That may be a reason to revise ADR a bit, e.g. remove the exception for pmd-core, extend to cover maven module names
Future notes (to be resolved for 7.x or 8)
- pmd-core base package: should be maybe net.sourceforge.pmd.core? no exception anymore
- move language modules in filesystem under a common directory, e.g.
/pmd-java
-> /pmd-languages/pmd-java
- prefix language module names, e.g.
pmd-java
-> pmd-lang-java
- maybe get rid of prefix
pmd
- it's all about pmd anyway, don't need to repeat...
Task list for 7.0.0:
- incompatible changes:
- pmd-html
- net.sourceforge.pmd.lang.html.ast.HtmlCpdLexer -> net.sourceforge.pmd.lang.html.cpd.HtmlCpdLexer
- pmd-doc main+test package:
net.sourceforge.pmd.docs -> net.sourceforge.pmd.doc.internal
the whole module can be considered internal API...
- pmd-lang-test main packages:
- use common base package: net.sourceforge.pmd.lang.test
- pmd-scala maven module:
- remove the deprecated top level module pmd-scala
- pmd-scala-modules/pmd-scala-common
- net.sourceforge.pmd.cpd -> net.sourceforge.pmd.lang.scala.cpd
- pmd-test main packages:
- use common base package: net.sourceforge.pmd.test
- pmd-xml: move packages under lang.xml
- lang.pom -> lang.xml.pom
- lang.wsdl -> lang.xml.wsdl
- lang.xsl -> lang.xml.xsl
- changes in tests:
- pmd-core test packages:
- net.sourceforge.pmd.cli
- net.sourceforge.pmd.processor -> net.sourceforge.pmd.lang.impl
- pmd-apex test packages:
- net.sourceforge.pmd.lang.apex.metrics.impl -> ?? net.sourceforge.pmd.lang.apex.metrics.internal?
- pmd-dist test packages:
- net.sourceforge.pmd.it -> net.sourceforge.pmd.dist
- pmd-java test packages:
- net.sourceforge.pmd -> net.sourceforge.pmd.lang.java
- net.sourceforge.pmd.ant -> ??
- net.sourceforge.pmd.coverage -> ??
- pmd-javascript test packages:
- net.sourceforge.pmd -> net.sourceforge.pmd.lang.ecmascript??
- net.sourceforge.pmd.ant -> ??
- pmd-jsp test packages:
- net.sourceforge.pmd -> net.sourceforge.pmd.lang.jsp
- pmd-plsql test packages:
- net.sourceforge.pmd -> net.sourceforge.pmd.lang.plsql
- pmd-scala-modules/pmd-scala-common test packages
- net.sourceforge.pmd.cpd -> net.sourceforge.pmd.lang.scala.cpd
- pmd-visualforce test packages:
- net.sourceforge.pmd -> net.sourceforge.pmd.lang.vf
- pmd-xml test packages:
- net.sourceforge.pmd.ant -> net.sourceforge.pmd.lang.xml
- rename pmd-vf to pmd-visualforce - the abbreviation is maybe not good to read/understand
- rename pmd-vm to pmd-vtl or pmd-velocity - the abbreviation "vm" is just wrong
- create followup issues for 7.x or 8.0.0: Project structure and java package names #4832
List of all packages
As of 2024-02-22...
with impl packages (as they might become public API in the future), but without internal packages.
- pmd-core: -> common base package: net.sourceforge.pmd
- net.sourceforge.pmd.annotation
- net.sourceforge.pmd.benchmark
- net.sourceforge.pmd.cache
- net.sourceforge.pmd.cpd
- net.sourceforge.pmd.cpd.impl
- net.sourceforge.pmd.lang
- net.sourceforge.pmd.lang.ast
- net.sourceforge.pmd.lang.ast.impl
- net.sourceforge.pmd.lang.ast.impl.antlr4
- net.sourceforge.pmd.lang.ast.impl.javacc
- net.sourceforge.pmd.lang.document
- net.sourceforge.pmd.lang.impl
- net.sourceforge.pmd.lang.metrics
- net.sourceforge.pmd.lang.rule
- net.sourceforge.pmd.lang.rule.xpath
- net.sourceforge.pmd.lang.rule.xpath.impl
- net.sourceforge.pmd.lang.symboltable ([core] Deprecate old symboltable API #4767)
- net.sourceforge.pmd.properties
- net.sourceforge.pmd.renderers
- net.sourceforge.pmd.reporting
- net.sourceforge.pmd.util
- net.sourceforge.pmd.util.database
- net.sourceforge.pmd.util.designerbindings
- net.sourceforge.pmd.util.log
- net.sourceforge.pmd.util.treeexport
- pmd-ant: -> common base package: net.sourceforge.pmd.ant
- pmd-apex: -> common base package: net.sourceforge.pmd.lang.apex, language id: apex
- net.sourceforge.pmd.lang.apex
- net.sourceforge.pmd.lang.apex.ast
- net.sourceforge.pmd.lang.apex.cpd
- net.sourceforge.pmd.lang.apex.metrics
- net.sourceforge.pmd.lang.apex.multifile
- net.sourceforge.pmd.lang.apex.rule
- net.sourceforge.pmd.lang.apex.rule.bestpractices
- net.sourceforge.pmd.lang.apex.rule.codestyle
- net.sourceforge.pmd.lang.apex.rule.design
- net.sourceforge.pmd.lang.apex.rule.documentation
- net.sourceforge.pmd.lang.apex.rule.errorprone
- net.sourceforge.pmd.lang.apex.rule.performance
- net.sourceforge.pmd.lang.apex.rule.security
- pmd-cli: -> common base package: net.sourceforge.pmd.cli
- net.sourceforge.pmd.cli
- net.sourceforge.pmd.cli.commands
- net.sourceforge.pmd.cli.commands.mixins (contains only internal)
- net.sourceforge.pmd.cli.commands.typesupport (contains only internal)
- me.tongfei.progressbar
- pmd-coco: -> common base package: net.sourceforge.pmd.lang.coco, language id: coco
- net.sourceforge.pmd.lang.coco
- net.sourceforge.pmd.lang.coco.ast
- net.sourceforge.pmd.lang.coco.cpd
- pmd-cpp: -> common base package: net.sourceforge.pmd.lang.cpp, language id: cpp
- net.sourceforge.pmd.lang.cpp
- net.sourceforge.pmd.lang.cpp.cpd
- pmd-cs: -> common base package: net.sourceforge.pmd.lang.cs, language id: cs
- net.sourceforge.pmd.lang.cs
- net.sourceforge.pmd.lang.cs.cpd
- pmd-dart: -> common base package: net.sourceforge.pmd.lang.dart, language id: dart
- net.sourceforge.pmd.lang.dart
- net.sourceforge.pmd.lang.dart.cpd
- pmd-doc: -> common base package: net.sourceforge.pmd.docs
- pmd-fortran: -> common base package: net.sourceforge.pmd.lang.fortran, language id: fortran
- net.sourceforge.pmd.lang.fortran
- net.sourceforge.pmd.lang.fortran.cpd (test only)
- pmd-gherkin: -> common base package: net.sourceforge.pmd.lang.gherkin, language id: gherkin
- net.sourceforge.pmd.lang.gherkin
- net.sourceforge.pmd.lang.gherkin.ast
- net.sourceforge.pmd.lang.gherkin.cpd
- pmd-go: -> common base package: net.sourceforge.pmd.lang.go, language id: go
- net.sourceforge.pmd.lang.go
- net.sourceforge.pmd.lang.go.cpd
- pmd-groovy: -> common base package: net.sourceforge.pmd.lang.groovy, language id: groovy
- net.sourceforge.pmd.lang.groovy
- net.sourceforge.pmd.lang.groovy.ast
- net.sourceforge.pmd.lang.groovy.ast.impl
- net.sourceforge.pmd.lang.groovy.ast.impl.antlr4
- net.sourceforge.pmd.lang.groovy.cpd
- pmd-html: -> common base package: net.sourceforge.pmd.lang.html, language id: html
- net.sourceforge.pmd.lang.html
- net.sourceforge.pmd.lang.html.ast
- net.sourceforge.pmd.lang.html.rule
- net.sourceforge.pmd.lang.html.bestpractices
- net.sourceforge.pmd.lang.html.cpd (only test...)
- pmd-java: -> common base package: net.sourceforge.pmd.lang.java, language id: java
- net.sourceforge.pmd.lang.java
- net.sourceforge.pmd.lang.java.ast
- net.sourceforge.pmd.lang.java.cpd
- net.sourceforge.pmd.lang.java.javadoc
- net.sourceforge.pmd.lang.java.metrics
- net.sourceforge.pmd.lang.java.rule
- net.sourceforge.pmd.lang.java.rule.bestpractices
- net.sourceforge.pmd.lang.java.rule.codestyle
- net.sourceforge.pmd.lang.java.rule.design
- net.sourceforge.pmd.lang.java.rule.documentation
- net.sourceforge.pmd.lang.java.rule.errorprone
- net.sourceforge.pmd.lang.java.rule.multithreading
- net.sourceforge.pmd.lang.java.rule.performance
- net.sourceforge.pmd.lang.java.rule.security
- net.sourceforge.pmd.lang.java.rule.xpath (internal only, contains custom XPath functions)
- net.sourceforge.pmd.lang.java.symbols
- net.sourceforge.pmd.lang.java.symbols.table
- net.sourceforge.pmd.lang.java.symbols.table.coreimpl
- net.sourceforge.pmd.lang.java.types
- net.sourceforge.pmd.lang.java.types.ast
- pmd-javascript: -> no common base package....but two: ecmascript + typescript, language id: ecmascript + typescript
- net.sourceforge.pmd.lang.ecmascript
- net.sourceforge.pmd.lang.ecmascript.ast
- net.sourceforge.pmd.lang.ecmascript.cpd
- net.sourceforge.pmd.lang.ecmascript.rule
- net.sourceforge.pmd.lang.ecmascript.rule.bestpractices
- net.sourceforge.pmd.lang.typescript
- net.sourceforge.pmd.lang.typescript.ast
- net.sourceforge.pmd.lang.typescript.cpd
- pmd-jsp: -> common base package: net.sourceforge.pmd.lang.jsp, language id: jsp
- net.sourceforge.pmd.lang.jsp
- net.sourceforge.pmd.lang.jsp.ast
- net.sourceforge.pmd.lang.jsp.cpd
- net.sourceforge.pmd.lang.jsp.rule
- net.sourceforge.pmd.lang.jsp.rule.codestyle
- net.sourceforge.pmd.lang.jsp.rule.design
- net.sourceforge.pmd.lang.jsp.rule.security
- pmd-julia: -> common base package: net.sourceforge.pmd.lang.julia, language id: julia
- net.sourceforge.pmd.lang.julia
- net.sourceforge.pmd.lang.julia.ast
- net.sourceforge.pmd.lang.julia.cpd
- pmd-kotlin: -> common base package: net.sourceforge.pmd.lang.kotlin, language id: kotlin
- net.sourceforge.pmd.lang.kotlin
- net.sourceforge.pmd.lang.kotlin.ast
- net.sourceforge.pmd.lang.kotlin.cpd
- net.sourceforge.pmd.lang.kotlin.rule
- net.sourceforge.pmd.lang.kotlin.rule.errorprone
- net.sourceforge.pmd.lang.kotlin.rule.xpath (internal only, base class for potential custom XPath functions)
- pmd-lang-test: -> no common base package...
- net.sourceforge.pmd.test
- net.sourceforge.pmd.cpd.test
- net.sourceforge.pmd.lang.ast.test
- pmd-lua: -> common base package: net.sourceforge.pmd.lang.lua, language id: lua
- net.sourceforge.pmd.lang.lua
- net.sourceforge.pmd.lang.lua.cpd
- pmd-matlab: -> common base package: net.sourceforge.pmd.lang.matlab, language id: matlab
- net.sourceforge.pmd.lang.matlab
- net.sourceforge.pmd.lang.matlab.cpd
- pmd-modelica: -> common base package: net.sourceforge.pmd.lang.modelica, language id: modelica
- net.sourceforge.pmd.lang.modelica
- net.sourceforge.pmd.lang.modelica.ast
- net.sourceforge.pmd.lang.modelica.cpd
- net.sourceforge.pmd.lang.modelica.resolver
- net.sourceforge.pmd.lang.modelica.rule
- net.sourceforge.pmd.lang.modelica.rule.bestpractices
- pmd-objectivec: -> common base package: net.sourceforge.pmd.lang.objectivec, language id: objectivec
- net.sourceforge.pmd.lang.objectivec
- net.sourceforge.pmd.lang.objectivec.cpd
- pmd-perl: -> common base package: net.sourceforge.pmd.lang.perl, language id: perl
- net.sourceforge.pmd.lang.perl
- net.sourceforge.pmd.lang.perl.cpd (test only)
- pmd-php: -> common base package: net.sourceforge.pmd.lang.php, language id: php
- net.sourceforge.pmd.lang.php
- pmd-plsql: -> common base package: net.sourceforge.pmd.lang.plsql, language id: plsql
- net.sourceforge.pmd.lang.plsql
- net.sourceforge.pmd.lang.plsql.ast
- net.sourceforge.pmd.lang.plsql.cpd
- net.sourceforge.pmd.lang.plsql.rule
- net.sourceforge.pmd.lang.plsql.rule.codestyle
- net.sourceforge.pmd.lang.plsql.rule.design
- net.sourceforge.pmd.lang.plsql.symboltable
- pmd-python: -> common base package: net.sourceforge.pmd.lang.python. language id: python
- net.sourceforge.pmd.lang.python
- net.sourceforge.pmd.lang.python.cpd
- pmd-ruby: -> common base package: net.sourceforge.pmd.lang.ruby, language id: ruby
- net.sourceforge.pmd.lang.ruby
- pmd-scala: -> common base package: net.sourceforge.pmd.lang.scala, language id: scala
- net.sourceforge.pmd.cpd (!)
- net.sourceforge.pmd.lang.scala
- net.sourceforge.pmd.lang.scala.ast
- net.sourceforge.pmd.lang.scala.rule
- pmd-swift: -> common base package: net.sourceforge.pmd.lang.swift, langauge id: swift
- net.sourceforge.pmd.lang.swift
- net.sourceforge.pmd.lang.swift.ast
- net.sourceforge.pmd.lang.swift.cpd
- net.sourceforge.pmd.lang.swift.rule
- net.sourceforge.pmd.lang.swift.rule.bestpractices
- pmd-test: -> no common base package
- net.sourceforge.pmd
- net.sourceforge.pmd.ant
- net.sourceforge.pmd.lang.rule
- net.sourceforge.pmd.testframework
- pmd-test-schema: -> common base package: net.sourceforge.pmd.test.schema
- net.sourceforge.pmd.test.schema
- pmd-tsql: -> common base package: net.sourceforge.pmd.lang.tsql, language id: tsql
- net.sourceforge.pmd.lang.tsql
- net.sourceforge.pmd.lang.tsql.ast
- net.sourceforge.pmd.lang.tsql.cpd
- pmd-visualforce: -> common base package: net.sourceforge.pmd.lang.vf, language id: vf
- net.sourceforge.pmd.lang.vf
- net.sourceforge.pmd.lang.vf.ast
- net.sourceforge.pmd.lang.vf.cpd
- net.sourceforge.pmd.lang.vf.rule
- net.sourceforge.pmd.lang.vf.rule.security
- pmd-vm: -> common base package: net.sourceforge.pmd.lang.vm, language id: vm
- net.sourceforge.pmd.lang.vm
- net.sourceforge.pmd.lang.vm.ast
- net.sourceforge.pmd.lang.vm.cpd
- net.sourceforge.pmd.lang.vm.rule
- net.sourceforge.pmd.lang.vm.rule.bestpractices
- net.sourceforge.pmd.lang.vm.rule.design
- net.sourceforge.pmd.lang.vm.rule.errorprone
- pmd-xml: multiple base packages (pom, wsdl, xml, xsl), language ids: pom, wsdl, xml, xsl
- net.sourceforge.pmd.lang.pom
- net.sourceforge.pmd.lang.wsdl
- net.sourceforge.pmd.lang.xml
- net.sourceforge.pmd.lang.xml.ast
- net.sourceforge.pmd.lang.xml.cpd
- net.sourceforge.pmd.lang.xml.rule
- net.sourceforge.pmd.lang.xsl
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