forked from phoedos/pmd
Merge pull request #4831 from adangel:issue-4830-consolidate-packages
Consolidate packages in each maven module #4831
This commit is contained in:
@ -6,7 +6,7 @@
|
||||
|
||||
<!-- Input properties:
|
||||
- lang-name: matches the grammar name (eg "Swift")
|
||||
- lang-terse-name: uncapitalized package name (eg "swift")
|
||||
- lang-id: the language id, used in the conventional package name (eg "swift")
|
||||
- node-prefix: prefix for generated AST nodes (eg "Sw")
|
||||
- root-node-name: name of the root node without prefix (eg "TopLevel"), will be made to implement RootNode
|
||||
|
||||
@ -14,10 +14,10 @@
|
||||
|
||||
-->
|
||||
|
||||
<property name="target-package-dir" value="${antlr4.outputDirectory}/net/sourceforge/pmd/lang/${lang-terse-name}/ast"/>
|
||||
<property name="target-package-dir" value="${antlr4.outputDirectory}/net/sourceforge/pmd/lang/${lang-id}/ast"/>
|
||||
|
||||
|
||||
<property name="lang-ast-package" value="net.sourceforge.pmd.lang.${lang-terse-name}.ast" />
|
||||
<property name="lang-ast-package" value="net.sourceforge.pmd.lang.${lang-id}.ast" />
|
||||
<property name="ast-api-package" value="net.sourceforge.pmd.lang.ast" />
|
||||
<property name="ast-impl-package" value="${ast-api-package}.impl.antlr4" />
|
||||
|
||||
|
@ -324,10 +324,10 @@ entries:
|
||||
subfolderitems:
|
||||
- title: Index
|
||||
output: web, pdf
|
||||
url: /pmd_rules_vf.html
|
||||
url: /pmd_rules_visualforce.html
|
||||
- title: Security
|
||||
output: web, pdf
|
||||
url: /pmd_rules_vf_security.html
|
||||
url: /pmd_rules_visualforce_security.html
|
||||
- title: null
|
||||
output: web, pdf
|
||||
subfolders:
|
||||
@ -360,16 +360,16 @@ entries:
|
||||
subfolderitems:
|
||||
- title: Index
|
||||
output: web, pdf
|
||||
url: /pmd_rules_vm.html
|
||||
url: /pmd_rules_velocity.html
|
||||
- title: Best Practices
|
||||
output: web, pdf
|
||||
url: /pmd_rules_vm_bestpractices.html
|
||||
url: /pmd_rules_velocity_bestpractices.html
|
||||
- title: Design
|
||||
output: web, pdf
|
||||
url: /pmd_rules_vm_design.html
|
||||
url: /pmd_rules_velocity_design.html
|
||||
- title: Error Prone
|
||||
output: web, pdf
|
||||
url: /pmd_rules_vm_errorprone.html
|
||||
url: /pmd_rules_velocity_errorprone.html
|
||||
- title: null
|
||||
output: web, pdf
|
||||
subfolders:
|
||||
@ -502,7 +502,7 @@ entries:
|
||||
url: /pmd_languages_visualforce.html
|
||||
output: web, pdf
|
||||
- title: Velocity Template Language (VTL)
|
||||
url: /pmd_languages_vm.html
|
||||
url: /pmd_languages_velocity.html
|
||||
output: web, pdf
|
||||
- title: XML and XML dialects
|
||||
url: /pmd_languages_xml.html
|
||||
|
@ -104,7 +104,7 @@ class JDocNamespaceDeclaration < Liquid::Tag
|
||||
'javascript', 'jsp', 'julia',
|
||||
'kotlin', 'lang-test', 'lua', 'matlab', 'objectivec', 'perl', 'php', 'plsql', 'python', 'ruby', 'scala', 'swift',
|
||||
'test', 'test-schema', 'tsql', 'ui',
|
||||
'modelica', 'visualforce', 'vm', 'xml'].flat_map {|m| [m, "pmd-" + m]}
|
||||
'modelica', 'visualforce', 'velocity', 'xml'].flat_map {|m| [m, "pmd-" + m]}
|
||||
|
||||
def self.make_base_namespaces
|
||||
res = {}
|
||||
|
@ -119,7 +119,7 @@ against a previously recorded version. If there are differences, the test fails.
|
||||
This helps to detect anything in the AST structure that changed, maybe unexpectedly.
|
||||
|
||||
* Create a test class in the package `net.sourceforge.pmd.lang.$lang.ast` with the name `$langTreeDumpTest`.
|
||||
* This test class must extend `net.sourceforge.pmd.lang.ast.test.BaseTreeDumpTest`. Note: This class
|
||||
* This test class must extend `net.sourceforge.pmd.lang.test.ast.BaseTreeDumpTest`. Note: This class
|
||||
is written in kotlin and is available in the module "lang-test".
|
||||
* Add a default constructor, that calls the super constructor like so:
|
||||
|
||||
@ -131,7 +131,7 @@ This helps to detect anything in the AST structure that changed, maybe unexpecte
|
||||
|
||||
Replace "$lang" and "$extension" accordingly.
|
||||
* Implement the method `getParser()`. It must return a
|
||||
subclass of `net.sourceforge.pmd.lang.ast.test.BaseParsingHelper`. See
|
||||
subclass of `net.sourceforge.pmd.lang.test.ast.BaseParsingHelper`. See
|
||||
`net.sourceforge.pmd.lang.ecmascript.ast.JsParsingHelper` for an example.
|
||||
With this parser helper you can also specify, where the test files are searched, by using
|
||||
the method `withResourceContext(Class<?>, String)`.
|
||||
|
@ -75,7 +75,7 @@ If your language only supports CPD, then you can subclass {% jdoc core::lang.imp
|
||||
|
||||
At this point the new language module should be available in {% jdoc core::lang.LanguageRegistry#CPD %} and usable by CPD like any other language.
|
||||
|
||||
4. Update the test that asserts the list of supported languages by updating the `SUPPORTED_LANGUAGES` constant in [BinaryDistributionIT](https://github.com/pmd/pmd/blob/master/pmd-dist/src/test/java/net/sourceforge/pmd/it/BinaryDistributionIT.java).
|
||||
4. Update the test that asserts the list of supported languages by updating the `SUPPORTED_LANGUAGES` constant in [BinaryDistributionIT](https://github.com/pmd/pmd/blob/master/pmd-dist/src/test/java/net/sourceforge/pmd/dist/BinaryDistributionIT.java).
|
||||
|
||||
5. Add some tests for your CpdLexer by following the [section below](#testing-your-implementation).
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
title: Language configuration
|
||||
permalink: pmd_languages_configuration.html
|
||||
author: Clément Fournier
|
||||
last_updated: August 2023 (7.0.0)
|
||||
last_updated: February 2024 (7.0.0)
|
||||
tags: [languages]
|
||||
keywords: [pmd, cpd, options, command, auxclasspath, language, properties]
|
||||
summary: "Summary of language configuration options and properties"
|
||||
@ -114,13 +114,13 @@ The Java language can be configured with the following properties:
|
||||
or relative to the Visualforce directory. Default is `../classes`. Specifying an
|
||||
empty string will disable data type resolution for Apex Controller properties.
|
||||
|
||||
Environment variable: `PMD_VF_APEX_DIRECTORIES`
|
||||
Environment variable: `PMD_VISUALFORCE_APEX_DIRECTORIES`
|
||||
|
||||
- `objectsDirectories`: Comma separated list of directories for Custom Objects.
|
||||
Absolute or relative to the Visualforce directory. Default is `../objects`.
|
||||
Specifying an empty string will disable data type resolution for Custom Object fields.
|
||||
|
||||
Environment variable: `PMD_VF_OBJECTS_DIRECTORIES`
|
||||
Environment variable: `PMD_VISUALFORCE_OBJECTS_DIRECTORIES`
|
||||
|
||||
## CPP language properties
|
||||
|
||||
|
18
docs/pages/pmd/languages/velocity.md
Normal file
18
docs/pages/pmd/languages/velocity.md
Normal file
@ -0,0 +1,18 @@
|
||||
---
|
||||
title: Velocity Template Language (VTL) support
|
||||
permalink: pmd_languages_velocity.html
|
||||
last_updated: February 2024 (7.0.0)
|
||||
tags: [languages, PmdCapableLanguage, CpdCapableLanguage]
|
||||
summary: "VTL-specific features and guidance"
|
||||
---
|
||||
|
||||
> [Velocity](https://velocity.apache.org/engine/devel/vtl-reference.html) is a Java-based template engine.
|
||||
> It permits web page designers to reference methods defined in Java code.
|
||||
|
||||
{% include language_info.html name='Velocity Template Language (VTL)' id='velocity' implementation='velocity::lang.velocity.VmLanguageModule' supports_pmd=true supports_cpd=true since='5.1.0' %}
|
||||
|
||||
{% capture id_change_note %}
|
||||
The language id of the Velocity module was in PMD 6 just "vm". In PMD 7, this has been changed to "velocity". Also the
|
||||
package name of the classes has been changed from vm to "velocity".
|
||||
{% endcapture %}
|
||||
{% include note.html content=id_change_note %}
|
@ -10,7 +10,13 @@ summary: "Visualforce-specific features and guidance"
|
||||
> [Visualforce](https://developer.salesforce.com/docs/atlas.en-us.pages.meta/pages/) consists of a tag-based markup
|
||||
> language that gives developers way to build applications and customize the Salesforce user interface.
|
||||
|
||||
{% include language_info.html name='Salesforce Visualforce' id='vf' implementation='visualforce::lang.vf.VfLanguageModule' supports_pmd=true supports_cpd=true since='5.6.0' %}
|
||||
{% include language_info.html name='Salesforce Visualforce' id='visualforce' implementation='visualforce::lang.visualforce.VfLanguageModule' supports_pmd=true supports_cpd=true since='5.6.0' %}
|
||||
|
||||
{% capture vf_id_note %}
|
||||
The language id of Visualforce was in PMD 6 just "vf". In PMD 7, this has been changed to "visualforce". Also the
|
||||
package name of the classes has been changed from vf to "visualforce".
|
||||
{% endcapture %}
|
||||
{% include note.html content=vf_id_note %}
|
||||
|
||||
## Language Properties
|
||||
|
||||
@ -22,37 +28,37 @@ Since PMD 6.30.0 support for type resolution has been added.
|
||||
|
||||
The Visualforce AST now can resolve the data type of Visualforce expressions that reference
|
||||
Apex Controller properties and Custom Object fields. This feature improves the precision of existing rules,
|
||||
like {% rule vf/security/VfUnescapeEl %}.
|
||||
like {% rule visualforce/security/VfUnescapeEl %}.
|
||||
|
||||
This can be configured using two language properties, which can be set as environment variables:
|
||||
|
||||
* `PMD_VF_APEX_DIRECTORIES`: Comma separated list of directories for Apex classes. Absolute or relative
|
||||
* `PMD_VISUALFORCE_APEX_DIRECTORIES`: Comma separated list of directories for Apex classes. Absolute or relative
|
||||
to the Visualforce directory. Default is `../classes`. Specifying an empty string will disable data type
|
||||
resolution for Apex Controller properties.
|
||||
|
||||
* `PMD_VF_OBJECTS_DIRECTORIES`: Comma separated list of directories for Custom Objects. Absolute or relative
|
||||
* `PMD_VISUALFORCE_OBJECTS_DIRECTORIES`: Comma separated list of directories for Custom Objects. Absolute or relative
|
||||
to the Visualforce directory. Default is `../objects`. Specifying an empty string will disable data type
|
||||
resolution for Custom Object fields.
|
||||
|
||||
{% include warning.html content="
|
||||
These env vars have changed from PMD 6 to PMD 7:
|
||||
* `PMD_VF_APEXDIRECTORIES` ➡️ `PMD_VF_APEX_DIRECTORIES`
|
||||
* `PMD_VF_OBJECTSDIRECTORIES` ➡️ `PMD_VF_OBJECTS_DIRECTORIES`
|
||||
* `PMD_VF_APEXDIRECTORIES` ➡️ `PMD_VISUALFORCE_APEX_DIRECTORIES`
|
||||
* `PMD_VF_OBJECTSDIRECTORIES` ➡️ `PMD_VISUALFORCE_OBJECTS_DIRECTORIES`
|
||||
"%}
|
||||
|
||||
### Sample usage
|
||||
|
||||
```
|
||||
PMD_VF_APEXDIRECTORIES=../classes \
|
||||
PMD_VF_OBJECTSDIRECTORIES=../objects \
|
||||
PMD_VISUALFORCE_APEXDIRECTORIES=../classes \
|
||||
PMD_VISUALFORCE_OBJECTSDIRECTORIES=../objects \
|
||||
pmd check -d $GITHUB_WORKSPACE/force-app/main/default/pages \
|
||||
-R category/vf/security.xml/VfUnescapeEl -f text
|
||||
-R category/visualforce/security.xml/VfUnescapeEl -f text
|
||||
```
|
||||
|
||||
If you run with debug logging turned on, you might see log messages like this:
|
||||
|
||||
```
|
||||
Okt. 14, 2021 11:30:44 AM net.sourceforge.pmd.lang.vf.VfExpressionTypeVisitor visit
|
||||
Okt. 14, 2021 11:30:44 AM net.sourceforge.pmd.lang.visualforce.VfExpressionTypeVisitor visit
|
||||
FINE: Unable to determine type for: Account.NotFoundField__c
|
||||
```
|
||||
|
||||
|
@ -1,12 +0,0 @@
|
||||
---
|
||||
title: Velocity Template Language (VTL) support
|
||||
permalink: pmd_languages_vm.html
|
||||
last_updated: September 2023 (7.0.0)
|
||||
tags: [languages, PmdCapableLanguage, CpdCapableLanguage]
|
||||
summary: "VTL-specific features and guidance"
|
||||
---
|
||||
|
||||
> [Velocity](https://velocity.apache.org/engine/devel/vtl-reference.html) is a Java-based template engine.
|
||||
> It permits web page designers to reference methods defined in Java code.
|
||||
|
||||
{% include language_info.html name='Velocity Template Language (VTL)' id='vm' implementation='vm::lang.vm.VmLanguageModule' supports_pmd=true supports_cpd=true since='5.1.0' %}
|
@ -263,8 +263,8 @@ Example:
|
||||
* [pom](pmd_rules_pom.html) (Maven POM)
|
||||
* [scala](pmd_rules_scala.html)
|
||||
* [swift](pmd_rules_swift.html)
|
||||
* [vf](pmd_rules_vf.html) (Salesforce VisualForce)
|
||||
* [vm](pmd_rules_vm.html) (Apache Velocity)
|
||||
* [velocity](pmd_rules_velocity.html) (Apache Velocity Template Language)
|
||||
* [visualforce](pmd_rules_visualforce.html) (Salesforce VisualForce)
|
||||
* [xml](pmd_rules_xml.html)
|
||||
* [xsl](pmd_rules_xsl.html)
|
||||
|
||||
|
@ -25,7 +25,7 @@ Each category-ruleset has a single abstract base test class, from which the indi
|
||||
We have one test class per rule, which executes all test cases for a single rule. The actual test cases are
|
||||
stored in separate XML files, for each rule a separate file is used.
|
||||
|
||||
All the test classes inherit from {% jdoc test::testframework.PmdRuleTst %},
|
||||
All the test classes inherit from {% jdoc test::test.PmdRuleTst %},
|
||||
which provides the seamless integration with JUnit5. This base class determines the language, the category name
|
||||
and the rule name from the concrete test class. It then searches the test code on its own.
|
||||
E.g. the individual rule test class
|
||||
@ -41,7 +41,7 @@ test case and just execute this one.
|
||||
|
||||
## Where to place the test code
|
||||
|
||||
The {% jdoc test::testframework.PmdRuleTst %} class searches the XML file, that describes the test cases
|
||||
The {% jdoc test::test.PmdRuleTst %} class searches the XML file, that describes the test cases
|
||||
for a certain rule using the following convention:
|
||||
|
||||
The XML file is a test resource, so it is searched in the tree under `src/test/resources`.
|
||||
@ -76,13 +76,13 @@ see [Using the test framework externally](#using-the-test-framework-externally).
|
||||
|
||||
### Test Class: AbstractClassWithoutAbstractMethodTest
|
||||
|
||||
This class inherits from {% jdoc test::testframework.PmdRuleTst %} and is located in the package "bestpractices",
|
||||
This class inherits from {% jdoc test::test.PmdRuleTst %} and is located in the package "bestpractices",
|
||||
since the rule belongs to the category "Best Practices":
|
||||
|
||||
``` java
|
||||
package net.sourceforge.pmd.lang.java.rule.bestpractices;
|
||||
|
||||
import net.sourceforge.pmd.testframework.PmdRuleTst;
|
||||
import net.sourceforge.pmd.test.PmdRuleTst;
|
||||
|
||||
class AbstractClassWithoutAbstractMethodTest extends PmdRuleTst {
|
||||
// no additional unit tests
|
||||
@ -251,7 +251,7 @@ the rule test manually, as SimpleAggregatorTst will fail to determine it correct
|
||||
``` java
|
||||
package com.example.pmd.rules;
|
||||
|
||||
import net.sourceforge.pmd.testframework.SimpleAggregatorTst;
|
||||
import net.sourceforge.pmd.test.SimpleAggregatorTst;
|
||||
|
||||
class CustomRuleTest extends SimpleAggregatorTst {
|
||||
@Override
|
||||
@ -272,19 +272,19 @@ The test data should be placed in an XML file located in "src/test/resources" un
|
||||
The framework uses the [dynamic test feature](https://junit.org/junit5/docs/current/user-guide/#writing-tests-dynamic-tests)
|
||||
of JUnit5 under the hood, among a couple of utility classes:
|
||||
|
||||
* {% jdoc test::testframework.PmdRuleTst %}: This is the base class for tests in PMD's code base. It is a subclass of
|
||||
{% jdoc test::testframework.RuleTst %} and just
|
||||
* {% jdoc test::test.PmdRuleTst %}: This is the base class for tests in PMD's code base. It is a subclass of
|
||||
{% jdoc test::test.RuleTst %} and just
|
||||
contains the logic to determine the test resources based on the test class name.
|
||||
|
||||
* {% jdoc test::testframework.SimpleAggregatorTst %}: This is a more generic base class for the test classes.
|
||||
* {% jdoc test::test.SimpleAggregatorTst %}: This is a more generic base class for the test classes.
|
||||
It doesn't register any test cases on its own. You can register your own rule tests.
|
||||
It itself is a subclass of {% jdoc test::testframework.RuleTst %}.
|
||||
It itself is a subclass of {% jdoc test::test.RuleTst %}.
|
||||
|
||||
* The maven module "pmd-test-schema" contains the logic to parse the XML files and provides a
|
||||
{% jdoc test-schema::test.schema.RuleTestCollection %}. This in turn contains a list of
|
||||
{% jdoc test-schema::test.schema.RuleTestDescriptor %}s. Each rule test descriptor describes a single test case.
|
||||
|
||||
* {% jdoc test::testframework.RuleTst %}: uses the {%jdoc test-schema::test.schema.TestSchemaParser %}
|
||||
* {% jdoc test::test.RuleTst %}: uses the {%jdoc test-schema::test.schema.TestSchemaParser %}
|
||||
from module "pmd-test-schema" to parse the test cases, executes each
|
||||
rule test descriptor and asserts the results. It defines a test method `ruleTests()` which is a test factory
|
||||
and returns one dynamic test per rule test.
|
||||
|
@ -74,6 +74,8 @@ You might encounter additionally the following types of problems:
|
||||
see [Release downloads](#release-downloads).
|
||||
* Some CLI options have been removed, because they have been deprecated. See [CLI Changes](#cli-changes) for details.
|
||||
* If you call CPD programmatically, the API has changed, see [New Programmatic API for CPD](pmd_release_notes_pmd7.html#new-programmatic-api-for-cpd).
|
||||
* If you use Visualforce, then you need to change "vf" to "visualforce", e.g. `category/vf/security.xml` ➡️ `category/visualforce/security.xml`
|
||||
* If you use Velocity, then you need to change "vm" to "velocity", e.g. `category/vm/...` ➡️ `category/velocity/...`
|
||||
|
||||
The following topics describe well known migration challenges in more detail.
|
||||
|
||||
@ -115,9 +117,13 @@ Once you have reviewed your ruleset(s), you can switch to PMD 7.
|
||||
|
||||
### I'm using custom rules
|
||||
|
||||
#### Testing
|
||||
Ideally, you have written good tests already for your custom rules - see [Testing your rules](pmd_userdocs_extending_testing.html).
|
||||
This helps to identify problems early on.
|
||||
|
||||
The base test classes {%jdoc test::test.PmdRuleTst %} and {%jdoc test::test.SimpleAggregatorTst %} have been moved out
|
||||
of package `net.sourceforge.pmd.testframework`. You'll need to adjust your imports.
|
||||
|
||||
#### Ruleset XML
|
||||
The `<rule>` tag, that defines your custom rule, is required to have a `language` attribute now. This was always the
|
||||
case for XPath rules, but is now a requirement for Java rules.
|
||||
|
@ -139,6 +139,17 @@ See [#3766](https://github.com/pmd/pmd/issues/3766) for details.
|
||||
Contributors: [Aaron Hurst](https://github.com/aaronhurst-google) (@aaronhurst-google),
|
||||
[Edward Klimoshenko](https://github.com/eklimo) (@eklimo)
|
||||
|
||||
##### Changed: Visualforce
|
||||
|
||||
There was an inconsistency between the naming of the maven module and the language id. The language id
|
||||
used the abbreviation "vf", while the maven module used the longer name "visualforce". This has been
|
||||
solved by renaming the language module to its full name "visualforce". The java packages have
|
||||
been renamed as well.
|
||||
|
||||
If you import rules, you also need to adjust the paths, e.g.
|
||||
|
||||
* `category/vf/security.xml` ➡️ `category/visualforce/security.xml`
|
||||
|
||||
##### Changed: HTML support
|
||||
|
||||
Support for HTML was introduced in PMD 6.55.0 as an experimental feature. With PMD 7.0.0 this
|
||||
@ -148,6 +159,15 @@ is now considered stable.
|
||||
|
||||
Experimental Kotlin support has been promoted as stable API now.
|
||||
|
||||
##### Changed: Velocity Template Language (VTL)
|
||||
|
||||
The module was named just "vm" which was not a good name. It module and language id and
|
||||
package names have been renamed to "velocity".
|
||||
|
||||
If you import rules, you also need to ajdust the paths, e.g.
|
||||
|
||||
* `category/vm/...` ➡️ `category/velocity/...`
|
||||
|
||||
#### Rule Changes
|
||||
|
||||
**New Rules**
|
||||
@ -169,6 +189,13 @@ Experimental Kotlin support has been promoted as stable API now.
|
||||
* {% rule java/errorprone/NonSerializableClass %}: The deprecated property `prefix` has been removed
|
||||
without replacement. In a serializable class all fields have to be serializable regardless of the name.
|
||||
|
||||
**Renamed Rulesets**
|
||||
|
||||
* `category/vf/security.xml` ➡️ `category/visualforce/security.xml`
|
||||
* `category/vm/bestpractices.xml` ➡️ `category/velocity/bestpractices.xml`
|
||||
* `category/vm/design.xml` ➡️ `category/velocity/design.xml`
|
||||
* `category/vm/errorprone.xml` ➡️ `category/velocity/errorprone.xml`
|
||||
|
||||
**Removed Rules**
|
||||
|
||||
The following previously deprecated rules have been finally removed:
|
||||
@ -297,6 +324,7 @@ The rules have been moved into categories with PMD 6.
|
||||
* [#4796](https://github.com/pmd/pmd/pull/4796): Remove deprecated and release rulesets
|
||||
* [#4823](https://github.com/pmd/pmd/pull/4823): Update to use renamed pmd-designer
|
||||
* [#4827](https://github.com/pmd/pmd/pull/4827): \[compat6] Support config errors and cpd for csharp
|
||||
* [#4830](https://github.com/pmd/pmd/issues/4830): Consolidate packages in each maven module
|
||||
* apex
|
||||
* [#3766](https://github.com/pmd/pmd/issues/3766): \[apex] Replace Jorje with fully open source front-end
|
||||
* apex-documentation
|
||||
@ -384,6 +412,42 @@ in the migration guide for details.
|
||||
* {%jdoc core::reporting.RuleViolation %}
|
||||
* {%jdoc core::reporting.ViolationSuppressor %}
|
||||
* {%jdoc core::lang.rule.xpath.XPathRule %} has been moved into subpackage {% jdoc_package core::lang.rule.xpath %}.
|
||||
* pmd-html
|
||||
* `net.sourceforge.pmd.lang.html.ast.HtmlCpdLexer` moved into package `cpd`: {%jdoc html::lang.html.cpd.HtmlCpdLexer %}.
|
||||
* pmd-lang-test: All types have been moved under the new base package {%jdoc_package lang-test::lang.test %}:
|
||||
* {%jdoc lang-test::lang.test.AbstractMetricTestRule %} (moved from `net.sourceforge.pmd.test.AbstractMetricTestRule`)
|
||||
* {%jdoc lang-test::lang.test.BaseTextComparisonTest %} (moved from `net.sourceforge.pmd.test.BaseTextComparisonTest`)
|
||||
* {%jdoc lang-test::lang.test.cpd.CpdTextComparisonTest %} (moved from `net.sourceforge.pmd.cpd.test.CpdTextComparisonTest`)
|
||||
* {%jdoc lang-test::lang.test.ast.BaseTreeDumpTest %} (moved from `net.sourceforge.pmd.lang.ast.test.BaseTreeDumpTest`)
|
||||
* Any many other types have been moved from `net.sourceforge.pmd.lang.ast.test` to `net.sourceforge.pmd.lang.test`.
|
||||
* pmd-scala
|
||||
* {%jdoc scala::lang.scala.cpd.ScalaCpdLexer %} (moved from `net.sourceforge.pmd.lang.scala.cpd.ScalaCpdLexer`)
|
||||
* {%jdoc scala::lang.scala.cpd.ScalaTokenAdapter %} (moved from `net.sourceforge.pmd.lang.scala.cpd.ScalaTokenAdapter`)
|
||||
* pmd-test
|
||||
* {%jdoc test::test.lang.rule.AbstractRuleSetFactoryTest %} (moved from `net.sourceforge.pmd.lang.rule.AbstractRuleSetFactoryTest`)
|
||||
* {%jdoc test::test.AbstractAntTestHelper %} (moved from `net.sourceforge.pmd.ant.AbstractAntTestHelper`)
|
||||
* {%jdoc test::test.AbstractLanguageVersionTest %} (moved from `net.sourceforge.pmd.AbstractLanguageVersionTest`)
|
||||
* {%jdoc test::test.PmdRuleTst %} (moved from `net.sourceforge.pmd.testframework.PmdRuleTst`)
|
||||
* {%jdoc test::test.RuleTst %} (moved from `net.sourceforge.pmd.testframework.RuleTst`)
|
||||
* {%jdoc test::test.SimpleAggregatorTst %} (moved from `net.sourceforge.pmd.testframework.SimpleAggregatorTst`)
|
||||
* pmd-xml
|
||||
* {%jdoc xml::lang.xml.pom.PomLanguageModule %} (moved from `net.sourceforge.pmd.lang.pom.PomLanguageModule`)
|
||||
* {%jdoc xml::lang.xml.wsdl.WsdlLanguageModule %} (moved from `net.sourceforge.pmd.lang.wsdl.WsdlLanguageModule`)
|
||||
* {%jdoc xml::lang.xml.xsl.XslLanguageModule %} (moved from `net.sourceforge.pmd.lang.xsl.XslLanguageModule`)
|
||||
* pmd-visualforce
|
||||
* The package `net.sourceforge.pmd.lang.vf` has been renamed to {%jdoc_package visualforce::lang.visualforce %}.
|
||||
* The language id of visualforce has been changed to `visualforce` (it was previously just "vf")
|
||||
* The ruleset changed: `category/vf/security.xml` ➡️ `category/visualforce/security.xml`
|
||||
* pmd-velocity (renamed from pmd-vm)
|
||||
* The package `net.sourceforge.pmd.lang.vm` has been renamed to {%jdoc_package velocity::lang.velocity %}.
|
||||
* The language id of the Velocity module has been changed to `velocity` (it was previously just "vm")
|
||||
* The rulesets changed: `category/vm/...` ➡️ `category/velocity/...`
|
||||
* Many classes used the prefix `Vm`, e.g. `VmLanguageModule`. This has been changed to be `Vtl`:
|
||||
* {%jdoc velocity::lang.velocity.VtlLanguageModule %}
|
||||
* {%jdoc velocity::lang.velocity.ast.VtlNode %}
|
||||
* {%jdoc velocity::lang.velocity.ast.VtlParser %}
|
||||
* {%jdoc velocity::lang.velocity.cpd.VtlCpdLexer %}
|
||||
* {%jdoc velocity::lang.velocity.rule.AbstractVtlRule %}
|
||||
|
||||
**Internalized classes and interfaces and methods**
|
||||
|
||||
@ -445,6 +509,10 @@ package or made (package) private and are _not accessible_ anymore.
|
||||
* Method `replacementIfDeprecated()` is now package private.
|
||||
* `net.sourceforge.pmd.properties.PropertyTypeId` - moved in subpackage `internal`.
|
||||
* {%jdoc !!core::properties.PropertyDescriptor %} - method `getTypeId()` is now package private.
|
||||
* pmd-doc
|
||||
* The whole maven module `pmd-doc` is now considered internal API even though it was not declared so before.
|
||||
It's used to generate the rule documentation for the built-in rules.
|
||||
* All the classes have been moved into package `net.sourceforge.pmd.doc.internal`.
|
||||
* pmd-ant
|
||||
* {%jdoc !!ant::ant.Formatter %}
|
||||
* Method `getRenderer()` has been removed.
|
||||
@ -710,6 +778,7 @@ The annotation `@DeprecatedUntil700` has been removed.
|
||||
* {%jdoc !!plsql::lang.plsql.ast.PLSQLNode %} - method `jjtAccept()` has been removed.
|
||||
Use {%jdoc core::lang.ast.Node#acceptVisitor(core::lang.ast.AstVisitor,P) %} instead.
|
||||
* pmd-scala
|
||||
* The maven module `pmd-scala` has been removed. Use `pmd-scala_2.13` or `pmd-scala_2.12` instead.
|
||||
* {%jdoc !!scala::lang.scala.ast.ScalaNode %}
|
||||
* Method `accept()` has been removed. Use {%jdoc core::lang.ast.Node#acceptVisitor(core::lang.ast.AstVisitor,P) %} instead.
|
||||
* Method `getNode()` has been removed. The underlying node is only available in AST nodes, but not in rule implementations.
|
||||
@ -724,10 +793,10 @@ The annotation `@DeprecatedUntil700` has been removed.
|
||||
* {%jdoc !!visualforce::lang.vf.DataType %} - method `fromBasicType(BasicType)` has been removed.
|
||||
Use {%jdoc visualforce::lang.vf.DataType#fromTypeName(java.lang.String) %} instead.
|
||||
* pmd-vm
|
||||
* {%jdoc !!vm::lang.vm.ast.VmNode %} - method `jjtAccept()` has been removed.
|
||||
* {%jdoc !!velocity::lang.vm.ast.VmNode %} - method `jjtAccept()` has been removed.
|
||||
Use {%jdoc core::lang.ast.Node#acceptVisitor(core::lang.ast.AstVisitor,P) %} instead.
|
||||
* `net.sourceforge.pmd.lang.vm.ast.VmParserVisitor`
|
||||
Use {%jdoc vm::lang.vm.ast.VmVisitor %} or {%jdoc vm::lang.vm.ast.VmVisitorBase %} instead.
|
||||
Use {%jdoc velocity::lang.vm.ast.VmVisitor %} or {%jdoc velocity::lang.vm.ast.VmVisitorBase %} instead.
|
||||
* `net.sourceforge.pmd.lang.vm.ast.VmParserVisitorAdapter`
|
||||
|
||||
**Removed classes, interfaces and methods (not previously deprecated)**
|
||||
@ -1124,7 +1193,7 @@ Contributors: [Aaron Hurst](https://github.com/aaronhurst-google) (@aaronhurst-g
|
||||
{% rule plsql/design/ExcessiveParameterList %}, {% rule plsql/design/ExcessiveTypeLength %},
|
||||
{% rule plsql/design/NcssMethodCount %}, {% rule plsql/design/NcssObjectCount %},
|
||||
{% rule plsql/design/NPathComplexity %}
|
||||
* VM: {% rule vm/design/ExcessiveTemplateLength %}
|
||||
* Velocity: {% rule velocity/design/ExcessiveTemplateLength %}
|
||||
|
||||
* The general property `violationSuppressXPath` which is available for all rules to
|
||||
[suppress warnings]({{ baseurl }}pmd_userdocs_suppressing_warnings.html) now uses XPath version 3.1 by default.
|
||||
@ -1286,6 +1355,7 @@ See also [Detailed Release Notes for PMD 7]({{ baseurl }}pmd_release_notes_pmd7.
|
||||
* [#4796](https://github.com/pmd/pmd/pull/4796): Remove deprecated and release rulesets
|
||||
* [#4823](https://github.com/pmd/pmd/pull/4823): Update to use renamed pmd-designer
|
||||
* [#4827](https://github.com/pmd/pmd/pull/4827): \[compat6] Support config errors and cpd for csharp
|
||||
* [#4830](https://github.com/pmd/pmd/issues/4830): Consolidate packages in each maven module
|
||||
* ant
|
||||
* [#4080](https://github.com/pmd/pmd/issues/4080): \[ant] Split off Ant integration into a new submodule
|
||||
* core
|
||||
|
@ -352,7 +352,7 @@ can be parsed now. PMD should now be able to parse Apex code up to version 59.0
|
||||
{% rule plsql/design/ExcessiveParameterList %}, {% rule plsql/design/ExcessiveTypeLength %},
|
||||
{% rule plsql/design/NcssMethodCount %}, {% rule plsql/design/NcssObjectCount %},
|
||||
{% rule plsql/design/NPathComplexity %}
|
||||
* VM: {% rule vm/design/ExcessiveTemplateLength %}
|
||||
* Velocity: {% rule velocity/design/ExcessiveTemplateLength %}
|
||||
|
||||
* The general property `violationSuppressXPath` which is available for all rules to
|
||||
[suppress warnings](pmd_userdocs_suppressing_warnings.html) now uses XPath version 3.1 by default.
|
||||
@ -1739,7 +1739,7 @@ These deprecations have already been rolled out in a previous version for the
|
||||
following languages:
|
||||
* Java: {% jdoc_package java::lang.java.ast %}
|
||||
* Java Server Pages: {% jdoc_package jsp::lang.jsp.ast %}
|
||||
* Velocity Template Language: {% jdoc_package vm::lang.vm.ast %}
|
||||
* Velocity Template Language: {% jdoc_package velocity::lang.vm.ast %}
|
||||
|
||||
Outside of these packages, these changes also concern the following TokenManager
|
||||
implementations, and their corresponding Parser if it exists (in the same package):
|
||||
@ -1754,7 +1754,7 @@ implementations, and their corresponding Parser if it exists (in the same packag
|
||||
* {% jdoc plsql::lang.plsql.PLSQLTokenManager %}
|
||||
* {% jdoc python::lang.python.PythonTokenManager %}
|
||||
* {% jdoc visualforce::lang.vf.VfTokenManager %}
|
||||
* {% jdoc vm::lang.vm.VmTokenManager %}
|
||||
* {% jdoc velocity::lang.vm.VmTokenManager %}
|
||||
|
||||
|
||||
In the **Java AST** the following attributes are deprecated and will issue a warning when used in XPath rules:
|
||||
@ -1889,19 +1889,19 @@ The following usages are now deprecated **in the VM AST** (with other languages
|
||||
Those constructors will be made package private with 7.0.0.
|
||||
* **Subclassing of abstract node classes, or usage of their type**. The base classes are internal API
|
||||
and will be hidden in version 7.0.0. You should not couple your code to them.
|
||||
* In the meantime you should use interfaces like {% jdoc vm::lang.vm.ast.VmNode %} or
|
||||
* In the meantime you should use interfaces like {% jdoc velocity::lang.vm.ast.VmNode %} or
|
||||
{% jdoc core::lang.ast.Node %}, or the other published interfaces in this package,
|
||||
to refer to nodes generically.
|
||||
* Concrete node classes will **be made final** with 7.0.0.
|
||||
* Setters found in any node class or interface. **Rules should consider the AST immutable**.
|
||||
We will make those setters package private with 7.0.0.
|
||||
* The package {% jdoc_package vm::lang.vm.directive %} as well as the classes
|
||||
{% jdoc vm::lang.vm.util.DirectiveMapper %} and {% jdoc vm::lang.vm.util.LogUtil %} are deprecated
|
||||
* The package {% jdoc_package velocity::lang.vm.directive %} as well as the classes
|
||||
{% jdoc velocity::lang.vm.util.DirectiveMapper %} and {% jdoc velocity::lang.vm.util.LogUtil %} are deprecated
|
||||
for removal. They were only used internally during parsing.
|
||||
* The class {% jdoc vm::lang.vm.VmParser %} is deprecated and should not be used directly.
|
||||
* The class {% jdoc velocity::lang.vm.VmParser %} is deprecated and should not be used directly.
|
||||
Use {% jdoc !!core::lang.LanguageVersionHandler#getParser(ParserOptions) %} instead.
|
||||
|
||||
Please look at {% jdoc_package vm::lang.vm.ast %} to find out the full list of deprecations.
|
||||
Please look at {% jdoc_package velocity::lang.vm.ast %} to find out the full list of deprecations.
|
||||
|
||||
**PLSQL AST**
|
||||
|
||||
@ -2111,7 +2111,7 @@ of deprecations.
|
||||
* {% jdoc !q!jsp::lang.jsp.ast.DumpFacade %}
|
||||
* {% jdoc !q!plsql::lang.plsql.ast.DumpFacade %}
|
||||
* {% jdoc !q!visualforce::lang.vf.ast.DumpFacade %}
|
||||
* {% jdoc !q!vm::lang.vm.ast.AbstractVmNode#dump(String, boolean, Writer) %}
|
||||
* {% jdoc !q!velocity::lang.vm.ast.AbstractVmNode#dump(String, boolean, Writer) %}
|
||||
* {% jdoc !q!xml::lang.xml.ast.DumpFacade %}
|
||||
* The method {% jdoc !c!core::lang.LanguageVersionHandler#getDumpFacade(Writer, String, boolean) %} will be
|
||||
removed as well. It is deprecated, along with all its implementations in the subclasses of {% jdoc core::lang.LanguageVersionHandler %}.
|
||||
|
@ -17,7 +17,7 @@
|
||||
whose name is an acronym, eg PLSQL (in camelcase, "Plsql").
|
||||
Defaults to lang-name.
|
||||
|
||||
- lang-terse-name: Terse name, used in the conventional package names
|
||||
- lang-id: The language id, used in the conventional package names
|
||||
|
||||
It also uses the following maven properties:
|
||||
|
||||
@ -34,12 +34,12 @@
|
||||
</not>
|
||||
</condition>
|
||||
|
||||
<property name="target-package-dir" value="${javacc.outputDirectory}/net/sourceforge/pmd/lang/${lang-terse-name}/ast" />
|
||||
<property name="target-package-dir" value="${javacc.outputDirectory}/net/sourceforge/pmd/lang/${lang-id}/ast" />
|
||||
<property name="stamp-file" value="${project.build.directory}/last-generated-timestamp" />
|
||||
|
||||
<property name="javacc-home.path" value="${project.build.directory}/lib/javacc" />
|
||||
|
||||
<property name="lang-ast-package" value="net.sourceforge.pmd.lang.${lang-terse-name}.ast" />
|
||||
<property name="lang-ast-package" value="net.sourceforge.pmd.lang.${lang-id}.ast" />
|
||||
<property name="ast-api-package" value="net.sourceforge.pmd.lang.ast" />
|
||||
<property name="ast-impl-package" value="${ast-api-package}.impl.javacc" />
|
||||
|
||||
|
@ -7,7 +7,7 @@ package net.sourceforge.pmd.lang.apex;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
|
||||
import net.sourceforge.pmd.AbstractLanguageVersionTest;
|
||||
import net.sourceforge.pmd.test.AbstractLanguageVersionTest;
|
||||
|
||||
class LanguageVersionTest extends AbstractLanguageVersionTest {
|
||||
|
||||
|
@ -9,7 +9,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import net.sourceforge.pmd.lang.rule.AbstractRuleSetFactoryTest;
|
||||
import net.sourceforge.pmd.test.lang.rule.AbstractRuleSetFactoryTest;
|
||||
import net.sourceforge.pmd.lang.rule.RuleSet;
|
||||
import net.sourceforge.pmd.lang.rule.RuleSetLoader;
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
package net.sourceforge.pmd.lang.apex;
|
||||
|
||||
import net.sourceforge.pmd.lang.rule.AbstractRuleSetFactoryTest;
|
||||
import net.sourceforge.pmd.test.lang.rule.AbstractRuleSetFactoryTest;
|
||||
|
||||
class RuleSetFactoryTest extends AbstractRuleSetFactoryTest {
|
||||
// no additional tests yet
|
||||
|
@ -4,8 +4,8 @@
|
||||
|
||||
package net.sourceforge.pmd.lang.apex;
|
||||
|
||||
import static net.sourceforge.pmd.lang.ast.test.TestUtilsKt.assertSize;
|
||||
import static net.sourceforge.pmd.lang.ast.test.TestUtilsKt.assertSuppressed;
|
||||
import static net.sourceforge.pmd.lang.test.ast.TestUtilsKt.assertSize;
|
||||
import static net.sourceforge.pmd.lang.test.ast.TestUtilsKt.assertSuppressed;
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
|
||||
import java.util.List;
|
||||
|
@ -4,8 +4,8 @@
|
||||
|
||||
package net.sourceforge.pmd.lang.apex.ast;
|
||||
|
||||
import static net.sourceforge.pmd.lang.ast.test.NodeExtensionsKt.textOfReportLocation;
|
||||
import static net.sourceforge.pmd.lang.ast.test.TestUtilsKt.assertPosition;
|
||||
import static net.sourceforge.pmd.lang.test.ast.NodeExtensionsKt.textOfReportLocation;
|
||||
import static net.sourceforge.pmd.lang.test.ast.TestUtilsKt.assertPosition;
|
||||
import static org.hamcrest.MatcherAssert.assertThat;
|
||||
import static org.hamcrest.core.IsInstanceOf.instanceOf;
|
||||
import static org.hamcrest.core.StringContains.containsString;
|
||||
|
@ -5,7 +5,7 @@
|
||||
package net.sourceforge.pmd.lang.apex.ast;
|
||||
|
||||
import net.sourceforge.pmd.lang.apex.ApexLanguageModule;
|
||||
import net.sourceforge.pmd.lang.ast.test.BaseParsingHelper;
|
||||
import net.sourceforge.pmd.lang.test.ast.BaseParsingHelper;
|
||||
|
||||
public class ApexParsingHelper extends BaseParsingHelper<ApexParsingHelper, ASTApexFile> {
|
||||
|
||||
|
@ -7,9 +7,9 @@ package net.sourceforge.pmd.lang.apex.ast;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import net.sourceforge.pmd.lang.ast.test.BaseParsingHelper;
|
||||
import net.sourceforge.pmd.lang.ast.test.BaseTreeDumpTest;
|
||||
import net.sourceforge.pmd.lang.ast.test.RelevantAttributePrinter;
|
||||
import net.sourceforge.pmd.lang.test.ast.BaseParsingHelper;
|
||||
import net.sourceforge.pmd.lang.test.ast.BaseTreeDumpTest;
|
||||
import net.sourceforge.pmd.lang.test.ast.RelevantAttributePrinter;
|
||||
|
||||
class ApexTreeDumpTest extends BaseTreeDumpTest {
|
||||
|
||||
|
@ -6,7 +6,7 @@ package net.sourceforge.pmd.lang.apex.cpd;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import net.sourceforge.pmd.cpd.test.CpdTextComparisonTest;
|
||||
import net.sourceforge.pmd.lang.test.cpd.CpdTextComparisonTest;
|
||||
import net.sourceforge.pmd.lang.apex.ApexLanguageModule;
|
||||
|
||||
class ApexCpdLexerTest extends CpdTextComparisonTest {
|
||||
|
@ -2,11 +2,11 @@
|
||||
* BSD-style license; for more info see http://pmd.sourceforge.net/license.html
|
||||
*/
|
||||
|
||||
package net.sourceforge.pmd.lang.apex.metrics.impl;
|
||||
package net.sourceforge.pmd.lang.apex.metrics.internal;
|
||||
|
||||
import net.sourceforge.pmd.lang.apex.ast.ApexQualifiableNode;
|
||||
import net.sourceforge.pmd.lang.ast.Node;
|
||||
import net.sourceforge.pmd.testframework.SimpleAggregatorTst;
|
||||
import net.sourceforge.pmd.test.SimpleAggregatorTst;
|
||||
|
||||
/**
|
||||
* Executes the metrics testing rules.
|
@ -2,12 +2,12 @@
|
||||
* BSD-style license; for more info see http://pmd.sourceforge.net/license.html
|
||||
*/
|
||||
|
||||
package net.sourceforge.pmd.lang.apex.metrics.impl;
|
||||
package net.sourceforge.pmd.lang.apex.metrics.internal;
|
||||
|
||||
import net.sourceforge.pmd.lang.apex.ast.ASTMethod;
|
||||
import net.sourceforge.pmd.lang.apex.metrics.ApexMetrics;
|
||||
import net.sourceforge.pmd.lang.ast.Node;
|
||||
import net.sourceforge.pmd.test.AbstractMetricTestRule;
|
||||
import net.sourceforge.pmd.lang.test.AbstractMetricTestRule;
|
||||
|
||||
/**
|
||||
* @author Gwilym Kuiper
|
@ -2,13 +2,13 @@
|
||||
* BSD-style license; for more info see http://pmd.sourceforge.net/license.html
|
||||
*/
|
||||
|
||||
package net.sourceforge.pmd.lang.apex.metrics.impl;
|
||||
package net.sourceforge.pmd.lang.apex.metrics.internal;
|
||||
|
||||
import net.sourceforge.pmd.lang.apex.ast.ASTMethod;
|
||||
import net.sourceforge.pmd.lang.apex.ast.ASTUserClassOrInterface;
|
||||
import net.sourceforge.pmd.lang.apex.metrics.ApexMetrics;
|
||||
import net.sourceforge.pmd.lang.ast.Node;
|
||||
import net.sourceforge.pmd.test.AbstractMetricTestRule;
|
||||
import net.sourceforge.pmd.lang.test.AbstractMetricTestRule;
|
||||
|
||||
/**
|
||||
* Tests standard cyclo.
|
@ -2,11 +2,11 @@
|
||||
* BSD-style license; for more info see http://pmd.sourceforge.net/license.html
|
||||
*/
|
||||
|
||||
package net.sourceforge.pmd.lang.apex.metrics.impl;
|
||||
package net.sourceforge.pmd.lang.apex.metrics.internal;
|
||||
|
||||
import net.sourceforge.pmd.lang.apex.metrics.ApexMetrics;
|
||||
import net.sourceforge.pmd.lang.ast.Node;
|
||||
import net.sourceforge.pmd.test.AbstractMetricTestRule;
|
||||
import net.sourceforge.pmd.lang.test.AbstractMetricTestRule;
|
||||
|
||||
/**
|
||||
* @author Clément Fournier
|
@ -12,7 +12,7 @@ import net.sourceforge.pmd.lang.apex.ast.ASTUserEnum;
|
||||
import net.sourceforge.pmd.lang.apex.ast.ASTUserInterface;
|
||||
import net.sourceforge.pmd.lang.apex.ast.ASTUserTrigger;
|
||||
import net.sourceforge.pmd.lang.apex.ast.ApexParserTestBase;
|
||||
import net.sourceforge.pmd.lang.ast.test.TestUtilsKt;
|
||||
import net.sourceforge.pmd.lang.test.ast.TestUtilsKt;
|
||||
import net.sourceforge.pmd.reporting.Report;
|
||||
|
||||
class AbstractApexRuleTest extends ApexParserTestBase {
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
package net.sourceforge.pmd.lang.apex.rule;
|
||||
|
||||
import static net.sourceforge.pmd.lang.ast.test.TestUtilsKt.assertSize;
|
||||
import static net.sourceforge.pmd.lang.test.ast.TestUtilsKt.assertSize;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
package net.sourceforge.pmd.lang.apex.rule.bestpractices;
|
||||
|
||||
import net.sourceforge.pmd.testframework.PmdRuleTst;
|
||||
import net.sourceforge.pmd.test.PmdRuleTst;
|
||||
|
||||
class ApexAssertionsShouldIncludeMessageTest extends PmdRuleTst {
|
||||
// no additional unit tests
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user