Skip to content

[core] Cleanup remaining experimental and deprecated API #4349

@adangel

Description

@adangel
  • Review all types, methods, fields, that are marked as
    • @Deprecated
    • @DeprecatedUntil700
    • @Experimental
  • Consider deleting the deprecated APIs
  • Consider promoting the experimental APIs
  • The goal is, that there are almost no deprecated APIs in PMD 7, so that we can start fresh with the next version cycle (deprecating other APIs, introducing new APIs, ...)
  • This includes deprecated CLI parameters

Tasks:

  • Remove deprecated rules

  • deprecations in pmd-jsp

    • net.sourceforge.pmd.lang.jsp.ast.JspNode#jjtAccept
    • net.sourceforge.pmd.lang.jsp.ast.JspParserVisitor
    • net.sourceforge.pmd.lang.jsp.ast.JspParserVisitorAdapter
  • deprecations in pmd-modelica

    • net.sourceforge.pmd.lang.modelica.ast.ModelicaNode#jjtAccept
    • net.sourceforge.pmd.lang.modelica.ast.ModelicaParserVisitor
    • net.sourceforge.pmd.lang.modelica.ast.ModelicaParserVisitorAdapter
    • net.sourceforge.pmd.lang.modelica.rule.AmbiguousResolutionRule
    • net.sourceforge.pmd.lang.modelica.rule.ConnectUsingNonConnector
  • deprecations in pmd-plsql

    • net.sourceforge.pmd.lang.plsql.ast.PLSQLNode#jjtAccept
    • net.sourceforge.pmd.lang.plsql.ast.PLSQLParserVisitor
    • net.sourceforge.pmd.lang.plsql.ast.PLSQLParserVisitorAdapter
  • deprecations in pmd-scala

    • net.sourceforge.pmd.lang.scala.ast.AbstractScalaNode#getNode
    • net.sourceforge.pmd.lang.scala.ast.ScalaNode#accept
    • net.sourceforge.pmd.lang.scala.ast.ScalaNode#getNode
    • ⚠️ Note: Also rename ScalaParserVisitor -> ScalaVisitor, and ScalaParserVisitorAdapter -> ScalaVisitorBase
  • deprecations in pmd-vm

    • net.sourceforge.pmd.lang.vm.ast.VmNode#jjtAccept
    • net.sourceforge.pmd.lang.vm.ast.VmParserVisitor
    • net.sourceforge.pmd.lang.vm.ast.VmParserVisitorAdapter
  • deprecations in pmd-javascript

    • net.sourceforge.pmd.lang.ecmascript.ast.AbstractEcmascriptNode#getNode
    • net.sourceforge.pmd.lang.ecmascript.ast.ASTFunctionNode#getBody(int)
    • net.sourceforge.pmd.lang.ecmascript.ast.ASTTryStatement#isCatch
    • net.sourceforge.pmd.lang.ecmascript.ast.ASTTryStatement#isFinally
    • net.sourceforge.pmd.lang.ecmascript.ast.EcmascriptNode#jjtAccept
    • net.sourceforge.pmd.lang.ecmascript.ast.EcmascriptNode#getNode
    • net.sourceforge.pmd.lang.ecmascript.ast.EcmascriptParserVisitor
    • net.sourceforge.pmd.lang.ecmascript.ast.EcmascriptParserVisitorAdapter
  • deprecations in pmd-apex

    • net.sourceforge.pmd.lang.apex.ast.ApexNode#jjtAccept
    • net.sourceforge.pmd.lang.apex.ast.ApexParserVisitor
    • net.sourceforge.pmd.lang.apex.ast.ApexParserVisitorAdapter
    • net.sourceforge.pmd.lang.apex.ast.ASTAssignmentExpression#getOperator
    • net.sourceforge.pmd.lang.apex.ast.ASTBinaryExpression#getOperator
    • net.sourceforge.pmd.lang.apex.ast.ASTBooleanExpression#getOperator
    • net.sourceforge.pmd.lang.apex.ast.ASTPostfixExpression#getOperator
    • net.sourceforge.pmd.lang.apex.ast.ASTPrefixExpression#getOperator
    • net.sourceforge.pmd.lang.apex.rule.security.Helper
  • deprecations in pmd-visualforce

    • net.sourceforge.pmd.lang.vf.ast.VfNode#jjtAccept
    • net.sourceforge.pmd.lang.vf.ast.VfParserVisitor
    • net.sourceforge.pmd.lang.vf.ast.VfParserVisitorAdapter
    • net.sourceforge.pmd.lang.vf.DataType#fromBasicType
  • deprecations in pmd-core

    • net.sourceforge.pmd.cpd.CpdLanguageProperties#DEFAULT_SKIP_BLOCKS_PATTERN
    • net.sourceforge.pmd.internal.LogMessages#runWithHelpFlagMessage
    • net.sourceforge.pmd.lang.ast.impl.antlr4.BaseAntlrNode#joinTokenText
    • net.sourceforge.pmd.lang.ast.Node#getImage and net.sourceforge.pmd.lang.ast.Node#hasImageEqualTo -> [core] Undeprecate Node::getImage() in PMD 7 #4792
    • net.sourceforge.pmd.lang.ast.Node#getNthParent, getFirstParentOfType, getParentsOfType, findChildrenOfType, findDescendantsOfType, findDescendantsOfType, getFirstChildOfType, getFirstDescendantOfType, hasDescendantOfType, findChildNodesWithXPath
    • net.sourceforge.pmd.lang.document.FileCollector#addZipFile
    • net.sourceforge.pmd.lang.document.FileId#toString
    • net.sourceforge.pmd.lang.document.TextDocument#readOnlyString(java.lang.CharSequence, java.lang.String, net.sourceforge.pmd.lang.LanguageVersion)
    • net.sourceforge.pmd.lang.document.TextFile#dataSourceCompat
    • net.sourceforge.pmd.lang.rule.xpath.XPathVersion#XPATH_1_0, XPATH_1_0_COMPATIBILITY, XPATH_2_0
    • net.sourceforge.pmd.lang.rule.AbstractDelegateRule
    • net.sourceforge.pmd.lang.rule.AbstractRule#deepCopyValuesTo
    • net.sourceforge.pmd.lang.rule.AbstractRule#addRuleChainVisit
    • net.sourceforge.pmd.lang.rule.RuleReference#setRuleSetReference
    • net.sourceforge.pmd.lang.rule.RuleReference#hasOverriddenProperty
    • net.sourceforge.pmd.lang.rule.XPathRule#XPATH_DESCRIPTOR
    • net.sourceforge.pmd.lang.rule.XPathRule#VERSION_DESCRIPTOR
    • net.sourceforge.pmd.lang.Language#getTerseName
    • net.sourceforge.pmd.lang.LanguageRegistry#getLanguage
    • net.sourceforge.pmd.lang.LanguageRegistry#findLanguageByTerseName
    • net.sourceforge.pmd.lang.LanguageRegistry#findByExtension
    • net.sourceforge.pmd.lang.LanguageVersionDiscoverer#getLanguagesForFile(java.io.File)
    • net.sourceforge.pmd.properties.AbstractPropertySource#propertyDescriptors
    • net.sourceforge.pmd.properties.AbstractPropertySource#propertyValuesByDescriptor
    • net.sourceforge.pmd.properties.AbstractPropertySource#copyPropertyDescriptors
    • net.sourceforge.pmd.properties.AbstractPropertySource#copyPropertyValues
    • net.sourceforge.pmd.properties.PropertySource#dysfunctionReason -> [core] Undeprecate PropertySource::dysfunctionReason in PMD 7 #4793
    • net.sourceforge.pmd.reporting.Reportable#getBeginLine, getEndLine, getBeginColumn, getEndColumn
    • net.sourceforge.pmd.util.datasource.internal.AbstractDataSource
    • net.sourceforge.pmd.util.datasource.DataSource
    • net.sourceforge.pmd.util.datasource.FileDataSource
    • net.sourceforge.pmd.util.datasource.ReaderDataSource
    • net.sourceforge.pmd.util.datasource.ZipDataSource
    • net.sourceforge.pmd.util.treeexport.TreeExportConfiguration
    • net.sourceforge.pmd.util.CollectionUtil#mapFrom
    • net.sourceforge.pmd.util.CollectionUtil#invertedMapFrom
    • net.sourceforge.pmd.util.IteratorUtil.AbstractIterator#remove
    • net.sourceforge.pmd.AbstractConfiguration#setInputPaths
    • net.sourceforge.pmd.AbstractConfiguration#setInputFilePath(java.lang.String)
    • net.sourceforge.pmd.AbstractConfiguration#setIgnoreFilePath(java.lang.String)
    • net.sourceforge.pmd.AbstractConfiguration#setInputUri(java.lang.String)
    • net.sourceforge.pmd.PMDConfiguration#prependClasspath
    • net.sourceforge.pmd.PMDConfiguration#getRuleSets
    • net.sourceforge.pmd.PMDConfiguration#setRuleSets(java.lang.String)
    • net.sourceforge.pmd.PMDConfiguration#getReportFile
    • net.sourceforge.pmd.PMDConfiguration#setReportFile(java.lang.String)
    • net.sourceforge.pmd.Report#merge
    • net.sourceforge.pmd.RuleSetLoader#toFactory
    • net.sourceforge.pmd.RuleSetReferenceId#toString
    • net.sourceforge.pmd.RuleViolation#getPackageName, getClassName, getMethodName, getVariableName
  • deprecations in pmd-java

    • net.sourceforge.pmd.lang.java.ast.AbstractPackageNameModuleDirective#getImage
    • net.sourceforge.pmd.lang.java.ast.AbstractTypeDeclaration#getImage
    • net.sourceforge.pmd.lang.java.ast.ASTAnnotation#getAnnotationName
    • net.sourceforge.pmd.lang.java.ast.ASTClassType#ASTClassType(java.lang.String)
    • net.sourceforge.pmd.lang.java.ast.ASTClassType#getImage
    • net.sourceforge.pmd.lang.java.ast.ASTClassType#isReferenceToClassSameCompilationUnit
    • net.sourceforge.pmd.lang.java.ast.ASTFieldDeclaration#getVariableName
    • net.sourceforge.pmd.lang.java.ast.AstImplUtil#bumpParenDepth(net.sourceforge.pmd.lang.java.ast.ASTPattern) - might be removed only with Java 22 support and support for Java 20 preview removed -> [java] Support JDK 22 #4794
    • net.sourceforge.pmd.lang.java.ast.ASTLiteral#isStringLiteral, isCharLiteral, isNullLiteral, isBooleanLiteral, isNumericLiteral, isIntLiteral, isLongLiteral, isFloatLiteral, isDoubleLiteral
    • net.sourceforge.pmd.lang.java.ast.ASTMethodDeclaration#getMethodName
    • net.sourceforge.pmd.lang.java.ast.ASTMethodReference#getImage
    • net.sourceforge.pmd.lang.java.ast.ASTModuleName#getImage
    • net.sourceforge.pmd.lang.java.ast.ASTPattern#getParenthesisDepth - might be removed only with Java 22 support and support for Java 20 preview removed -> [java] Support JDK 22 #4794
    • net.sourceforge.pmd.lang.java.ast.ASTPrimitiveType#getImage
    • net.sourceforge.pmd.lang.java.ast.ASTType#getTypeImage
    • net.sourceforge.pmd.lang.java.ast.ASTType#getArrayDepth
    • net.sourceforge.pmd.lang.java.ast.ASTType#isPrimitiveType, isArrayType, isClassOrInterfaceType
    • net.sourceforge.pmd.lang.java.ast.ASTTypeDeclaration#getImage
    • net.sourceforge.pmd.lang.java.ast.ASTUnaryExpression#isPrefix
    • net.sourceforge.pmd.lang.java.ast.ASTVariableId#getImage
    • net.sourceforge.pmd.lang.java.ast.ASTVariableId#getVariableName
    • net.sourceforge.pmd.lang.java.ast.InternalApiBridge#newVarId
    • net.sourceforge.pmd.lang.java.ast.JavaComment#getImage
    • net.sourceforge.pmd.lang.java.ast.JavaNode#jjtAccept
    • net.sourceforge.pmd.lang.java.ast.JavaParserVisitor
    • net.sourceforge.pmd.lang.java.ast.JavaParserVisitorAdapter
      net.sourceforge.pmd.lang.java.ast.ModifierOwner#isFinal, isAbstract, isStrictfp, isSynchronized, isNative, isStatic, isVolatile, isTransient, isPrivate, isPublic, isProtected, isPackagePrivate, isSyntacticallyAbstract, isSyntacticallyPublic, isSyntacticallyStatic, isSyntacticallyFinal
    • net.sourceforge.pmd.lang.java.ast.TypeNode#getType
  • Experimental in pmd-apex

    • net.sourceforge.pmd.lang.apex.ast.ASTCommentContainer
    • net.sourceforge.pmd.lang.apex.multifile.ApexMultifileAnalysis
  • Experimental in pmd-core

    • net.sourceforge.pmd.cpd.CPDReport#filterMatches
    • net.sourceforge.pmd.lang.ast.impl.antlr4.AntlrToken#getKind
    • net.sourceforge.pmd.lang.ast.impl.javacc.AbstractJjtreeNode
    • net.sourceforge.pmd.lang.ast.impl.TokenDocument
    • net.sourceforge.pmd.lang.ast.AstInfo#getSuppressionComments
    • net.sourceforge.pmd.lang.ast.AstInfo#withSuppressMap
    • net.sourceforge.pmd.lang.ast.GenericToken#getKind
    • net.sourceforge.pmd.lang.document.FileCollector#addZipFileWithContent
    • net.sourceforge.pmd.lang.document.FileCollector#newZipCollector
    • net.sourceforge.pmd.lang.document (package-info)
    • net.sourceforge.pmd.lang.LanguageVersionHandler#getLanguageMetricsProvider
    • net.sourceforge.pmd.lang.LanguageVersionHandler#getDesignerBindings
    • net.sourceforge.pmd.lang.PlainTextLanguage
    • net.sourceforge.pmd.properties.PropertyConstraint#getXmlConstraint
    • net.sourceforge.pmd.properties.PropertyConstraint#toOptionalConstraint
    • net.sourceforge.pmd.properties.PropertyConstraint#fromPredicate(java.util.function.Predicate<? super U>, java.lang.String)
    • net.sourceforge.pmd.properties.PropertyConstraint#fromPredicate(java.util.function.Predicate<? super U>, java.lang.String, java.util.Map<java.lang.String,java.lang.String>)
    • net.sourceforge.pmd.renderers.AbstractRenderer#setReportFile
    • net.sourceforge.pmd.renderers.Renderer#setReportFile
    • net.sourceforge.pmd.util.designerbindings.DesignerBindings
    • net.sourceforge.pmd.util.designerbindings.DesignerBindings.TreeIconId
    • net.sourceforge.pmd.util.designerbindings.RelatedNodesSelector
    • net.sourceforge.pmd.util.Predicate
    • net.sourceforge.pmd.Report#filterViolations
    • net.sourceforge.pmd.Report#union
  • Experimental in pmd-groovy

    • net.sourceforge.pmd.lang.groovy.ast.impl.antlr4.GroovyToken#getKind
  • Experimental in pmd-html

    • net.sourceforge.pmd.lang.html (package-info) - whole language?
  • Experimental in pmd-java

    • net.sourceforge.pmd.lang.java.ast.ASTCompilationUnit#isUnnamedClass - JLS Preview
    • net.sourceforge.pmd.lang.java.ast.ASTExpression#getConversionContext
    • net.sourceforge.pmd.lang.java.ast.ASTPattern#getParenthesisDepth - Part of Java 20 Preview only -> [java] Support JDK 22 #4794
    • net.sourceforge.pmd.lang.java.ast.ASTRecordPattern#getParenthesisDepth - Part of Java 20 Preview only -> [java] Support JDK 22 #4794
    • net.sourceforge.pmd.lang.java.ast.ASTTemplate - JLS Preview
    • net.sourceforge.pmd.lang.java.ast.ASTTemplateExpression - JLS Preview
    • net.sourceforge.pmd.lang.java.ast.ASTTemplateFragment - JLS Preview
    • net.sourceforge.pmd.lang.java.ast.ASTTypePattern#getParenthesisDepth - Part of Java 20 Preview only -> [java] Support JDK 22 #4794
    • net.sourceforge.pmd.lang.java.ast.ASTUnnamedPattern - JLS Preview
    • net.sourceforge.pmd.lang.java.rule.AbstractJavaRulechainRule#AbstractJavaRulechainRule
    • net.sourceforge.pmd.lang.java.symbols.table.JSymbolTable
    • net.sourceforge.pmd.lang.java.symbols.JElementSymbol (also internal api...)
    • net.sourceforge.pmd.lang.java.symbols (package-info)
    • net.sourceforge.pmd.lang.java.types.ast.ExprContext
    • net.sourceforge.pmd.lang.java.types.JIntersectionType#getInducedClassType
    • net.sourceforge.pmd.lang.java.types.JTypeMirror#streamMethods
    • net.sourceforge.pmd.lang.java.types.JTypeMirror#streamDeclaredMethods
    • net.sourceforge.pmd.lang.java.types.JTypeMirror#getConstructors
  • Experimental in pmd-kotlin

    • net.sourceforge.pmd.lang.kotlin.KotlinLanguageModule - whole language?
  • Experimental in pmd-test-schema

    • net.sourceforge.pmd.test.schema.TestSchemaParser
  • Remove @DeprecatedUntil700 (move to pmd-compat6)

    • Update migration guide: refactor to avoid @Deprecated and @DeprecatedUntil700 , using rc4 and only after that update to 7.0.0
    • release notes: @DeprecatedUntil700 is gone

Metadata

Metadata

Assignees

Labels

is:deprecationThe main focus is deprecating public APIs or rules, eg to make them internal, or removing them

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions