From 97fd30418e90e2186c8c8c8b15d2d94149d047b8 Mon Sep 17 00:00:00 2001 From: Andreas Dangel Date: Sun, 30 Sep 2018 10:47:07 +0200 Subject: [PATCH] Prepare next development version --- docs/_config.yml | 4 +- docs/pages/release_notes.md | 124 +------------------------ docs/pages/release_notes_old.md | 154 ++++++++++++++++++++++++++++++++ 3 files changed, 157 insertions(+), 125 deletions(-) diff --git a/docs/_config.yml b/docs/_config.yml index 37ef441293..79be36916b 100644 --- a/docs/_config.yml +++ b/docs/_config.yml @@ -1,8 +1,8 @@ repository: pmd/pmd pmd: - version: 6.8.0 - date: 30-September-2018 + version: 6.9.0 + date: ??-????-2018 release_type: minor output: web diff --git a/docs/pages/release_notes.md b/docs/pages/release_notes.md index 4fb3d4854c..b8f8783555 100644 --- a/docs/pages/release_notes.md +++ b/docs/pages/release_notes.md @@ -10,137 +10,15 @@ The PMD team is pleased to announce PMD {{ site.pmd.version }}. This is a {{ site.pmd.release_type }} release. -{% tocmaker %} +{% tocmaker is_release_notes_processor %} ### New and noteworthy -#### Drawing a line between private and public API - -Until now, all released public members and types were implicitly considered part -of PMD's public API, including inheritance-specific members (protected members, abstract methods). -We have maintained those APIs with the goal to preserve full binary compatibility between minor releases, -only breaking those APIs infrequently, for major releases. - -In order to allow PMD to move forward at a faster pace, this implicit contract will -be invalidated with PMD 7.0.0. We now introduce more fine-grained distinctions between -the type of compatibility support we guarantee for our libraries, and ways to make -them explicit to clients of PMD. - -###### `.internal` packages and `@InternalApi` annotation - -*Internal API* is meant for use *only* by the main PMD codebase. Internal types and methods -may be modified in any way, or even removed, at any time. - -Any API in a package that contains an `.internal` segment is considered internal. -The `@InternalApi` annotation will be used for APIs that have to live outside of -these packages, e.g. methods of a public type that shouldn't be used outside of PMD (again, -these can be removed anytime). - -###### `@ReservedSubclassing` - -Types marked with the `@ReservedSubclassing` annotation are only meant to be subclassed -by classes within PMD. As such, we may add new abstract methods, or remove protected methods, -at any time. All published public members remain supported. The annotation is *not* inherited, which -means a reserved interface doesn't prevent its implementors to be subclassed. - -###### `@Experimental` - -APIs marked with the `@Experimental` annotation at the class or method level are subject to change. -They can be modified in any way, or even removed, at any time. You should not use or rely - on them in any production code. They are purely to allow broad testing and feedback. - -###### `@Deprecated` - -APIs marked with the `@Deprecated` annotation at the class or method level will remain supported -until the next major release but it is recommended to stop using them. - -###### The transition - -*All currently supported APIs will remain so until 7.0.0*. All APIs that are to be moved to -`.internal` packages or hidden will be tagged `@InternalApi` before that major release, and -the breaking API changes will be performed in 7.0.0. - - -#### Quickstart Ruleset - -PMD 6.8.0 provides a first quickstart ruleset for Java, which you can use as a base ruleset to get your -custom ruleset started. You can reference it with `rulesets/java/quickstart.xml`. -You are strongly encouraged to [create your own ruleset](https://pmd.github.io/pmd-6.7.0/pmd_userdocs_making_rulesets.html) -though. - -The quickstart ruleset has the intention, to be useful out-of-the-box for many projects. Therefore it -references only rules, that are most likely to apply everywhere. - -Any feedback would be greatly appreciated. - - -#### New Rules - -* The new Apex rule {% rule apex/documentation/ApexDoc %} (`apex-documentation`) - enforces the inclusion of ApexDoc on classes, interfaces, properties and methods; as well as some - sanity rules for such docs (no missing parameters, parameters' order, and return value). By default, - method overrides and test classes are allowed to not include ApexDoc. - - -#### Modified Rules - -* The rule {% rule java/errorprone/MissingSerialVersionUID %} (`java-errorprone`) has been modified - in order to recognize also missing `serialVersionUID` fields in abstract classes, if they are serializable. - Each individual class in the inheritance chain needs an own serialVersionUID field. See also [Should an abstract class have a serialVersionUID](https://stackoverflow.com/questions/893259/should-an-abstract-class-have-a-serialversionuid). - This change might lead to additional violations in existing code bases. - - -#### PLSQL - -The grammar for PLSQL has been revamped in order to fully parse `SELECT INTO`, `UPDATE`, and `DELETE` -statements. Previously such statements have been simply skipped ahead, now PMD is parsing them, giving access -to the individual parts of a SELECT-statement, such as the Where-Clause. This might produce new parsing errors -where PMD previously could successfully parse PLSQL code. If this happens, please report a new [issue](https://github.com/pmd/pmd/issues/new) to get this problem fixed. - - ### Fixed Issues -* apex-bestpractices - * [#1348](https://github.com/pmd/pmd/issues/1348): \[apex] AvoidGlobalModifierRule gives warning even when its a webservice - false positive -* java-codestyle - * [#1329](https://github.com/pmd/pmd/issues/1329): \[java] FieldNamingConventions: false positive in serializable class with serialVersionUID - * [#1334](https://github.com/pmd/pmd/issues/1334): \[java] LinguisticNaming should support AtomicBooleans -* java-errorprone - * [#1350](https://github.com/pmd/pmd/issues/1350): \[java] MissingSerialVersionUID false-positive on interfaces - * [#1352](https://github.com/pmd/pmd/issues/1352): \[java] MissingSerialVersionUID false-negative with abstract classes -* java-performance - * [#1325](https://github.com/pmd/pmd/issues/1325): \[java] False positive in ConsecutiveLiteralAppends -* plsql - * [#1279](https://github.com/pmd/pmd/pull/1279): \[plsql] Support for SELECT INTO - - ### API Changes -* A couple of methods and fields in `net.sourceforge.pmd.properties.AbstractPropertySource` have been - deprecated, as they are replaced by already existing functionality or expose internal implementation - details: `propertyDescriptors`, `propertyValuesByDescriptor`, - `copyPropertyDescriptors()`, `copyPropertyValues()`, `ignoredProperties()`, `usesDefaultValues()`, - `useDefaultValueFor()`. - -* Some methods in `net.sourceforge.pmd.properties.PropertySource` have been deprecated as well: - `usesDefaultValues()`, `useDefaultValueFor()`, `ignoredProperties()`. - -* The class `net.sourceforge.pmd.lang.rule.AbstractDelegateRule` has been deprecated and will - be removed with PMD 7.0.0. It is internally only in use by RuleReference. - -* The default constructor of `net.sourceforge.pmd.lang.rule.RuleReference` has been deprecated - and will be removed with PMD 7.0.0. RuleReferences should only be created by providing a Rule and - a RuleSetReference. Furthermore the following methods are deprecated: `setRuleReference()`, - `hasOverriddenProperty()`, `usesDefaultValues()`, `useDefaultValueFor()`. - - ### External Contributions -* [#1309](https://github.com/pmd/pmd/pull/1309): \[core] \[CPD] Decouple Antlr Tokenizer implementation from any CPD language supported with Antlr - [Matías Fraga](https://github.com/matifraga) -* [#1314](https://github.com/pmd/pmd/pull/1314): \[apex] Add validation of ApexDoc comments - [Jeff Hube](https://github.com/jeffhube) -* [#1339](https://github.com/pmd/pmd/pull/1339): \[ci] Improve danger message - [BBG](https://github.com/djydewang) -* [#1340](https://github.com/pmd/pmd/pull/1340): \[java] Derive correct classname for non-public non-classes - [kris-scheibe](https://github.com/kris-scheibe) -* [#1357](https://github.com/pmd/pmd/pull/1357): \[doc] Improve Codacy description - [Daniel Reigada](https://github.com/DReigada) - {% endtocmaker %} diff --git a/docs/pages/release_notes_old.md b/docs/pages/release_notes_old.md index de6639ce49..9241da6348 100644 --- a/docs/pages/release_notes_old.md +++ b/docs/pages/release_notes_old.md @@ -6,6 +6,160 @@ permalink: pmd_release_notes_old.html Previous versions of PMD can be downloaded here: http://sourceforge.net/projects/pmd/files/pmd/ +## ??-??-2018 - 6.8.0 + +The PMD team is pleased to announce PMD 6.8.0. + +This is a minor release. + +### Table Of Contents + +* [New and noteworthy](#new-and-noteworthy) + * [Drawing a line between private and public API](#drawing-a-line-between-private-and-public-api) + * [`.internal` packages and `@InternalApi` annotation](#`.internal`-packages-and-`@internalapi`-annotation) + * [`@ReservedSubclassing`](#`@reservedsubclassing`) + * [`@Experimental`](#`@experimental`) + * [`@Deprecated`](#`@deprecated`) + * [The transition](#the-transition) + * [Quickstart Ruleset](#quickstart-ruleset) + * [New Rules](#new-rules) + * [Modified Rules](#modified-rules) + * [PLSQL](#plsql) +* [Fixed Issues](#fixed-issues) +* [API Changes](#api-changes) +* [External Contributions](#external-contributions) + +### New and noteworthy + +#### Drawing a line between private and public API + +Until now, all released public members and types were implicitly considered part +of PMD's public API, including inheritance-specific members (protected members, abstract methods). +We have maintained those APIs with the goal to preserve full binary compatibility between minor releases, +only breaking those APIs infrequently, for major releases. + +In order to allow PMD to move forward at a faster pace, this implicit contract will +be invalidated with PMD 7.0.0. We now introduce more fine-grained distinctions between +the type of compatibility support we guarantee for our libraries, and ways to make +them explicit to clients of PMD. + +###### `.internal` packages and `@InternalApi` annotation + +*Internal API* is meant for use *only* by the main PMD codebase. Internal types and methods +may be modified in any way, or even removed, at any time. + +Any API in a package that contains an `.internal` segment is considered internal. +The `@InternalApi` annotation will be used for APIs that have to live outside of +these packages, e.g. methods of a public type that shouldn't be used outside of PMD (again, +these can be removed anytime). + +###### `@ReservedSubclassing` + +Types marked with the `@ReservedSubclassing` annotation are only meant to be subclassed +by classes within PMD. As such, we may add new abstract methods, or remove protected methods, +at any time. All published public members remain supported. The annotation is *not* inherited, which +means a reserved interface doesn't prevent its implementors to be subclassed. + +###### `@Experimental` + +APIs marked with the `@Experimental` annotation at the class or method level are subject to change. +They can be modified in any way, or even removed, at any time. You should not use or rely + on them in any production code. They are purely to allow broad testing and feedback. + +###### `@Deprecated` + +APIs marked with the `@Deprecated` annotation at the class or method level will remain supported +until the next major release but it is recommended to stop using them. + +###### The transition + +*All currently supported APIs will remain so until 7.0.0*. All APIs that are to be moved to +`.internal` packages or hidden will be tagged `@InternalApi` before that major release, and +the breaking API changes will be performed in 7.0.0. + + +#### Quickstart Ruleset + +PMD 6.8.0 provides a first quickstart ruleset for Java, which you can use as a base ruleset to get your +custom ruleset started. You can reference it with `rulesets/java/quickstart.xml`. +You are strongly encouraged to [create your own ruleset](https://pmd.github.io/pmd-6.7.0/pmd_userdocs_making_rulesets.html) +though. + +The quickstart ruleset has the intention, to be useful out-of-the-box for many projects. Therefore it +references only rules, that are most likely to apply everywhere. + +Any feedback would be greatly appreciated. + + +#### New Rules + +* The new Apex rule [`ApexDoc`](https://pmd.github.io/pmd-6.8.0/pmd_rules_apex_documentation.html#apexdoc) (`apex-documentation`) + enforces the inclusion of ApexDoc on classes, interfaces, properties and methods; as well as some + sanity rules for such docs (no missing parameters, parameters' order, and return value). By default, + method overrides and test classes are allowed to not include ApexDoc. + + +#### Modified Rules + +* The rule [`MissingSerialVersionUID`](https://pmd.github.io/pmd-6.8.0/pmd_rules_java_errorprone.html#missingserialversionuid) (`java-errorprone`) has been modified + in order to recognize also missing `serialVersionUID` fields in abstract classes, if they are serializable. + Each individual class in the inheritance chain needs an own serialVersionUID field. See also [Should an abstract class have a serialVersionUID](https://stackoverflow.com/questions/893259/should-an-abstract-class-have-a-serialversionuid). + This change might lead to additional violations in existing code bases. + + +#### PLSQL + +The grammar for PLSQL has been revamped in order to fully parse `SELECT INTO`, `UPDATE`, and `DELETE` +statements. Previously such statements have been simply skipped ahead, now PMD is parsing them, giving access +to the individual parts of a SELECT-statement, such as the Where-Clause. This might produce new parsing errors +where PMD previously could successfully parse PLSQL code. If this happens, please report a new [issue](https://github.com/pmd/pmd/issues/new) to get this problem fixed. + + +### Fixed Issues + +* apex-bestpractices + * [#1348](https://github.com/pmd/pmd/issues/1348): \[apex] AvoidGlobalModifierRule gives warning even when its a webservice - false positive +* java-codestyle + * [#1329](https://github.com/pmd/pmd/issues/1329): \[java] FieldNamingConventions: false positive in serializable class with serialVersionUID + * [#1334](https://github.com/pmd/pmd/issues/1334): \[java] LinguisticNaming should support AtomicBooleans +* java-errorprone + * [#1350](https://github.com/pmd/pmd/issues/1350): \[java] MissingSerialVersionUID false-positive on interfaces + * [#1352](https://github.com/pmd/pmd/issues/1352): \[java] MissingSerialVersionUID false-negative with abstract classes +* java-performance + * [#1325](https://github.com/pmd/pmd/issues/1325): \[java] False positive in ConsecutiveLiteralAppends +* plsql + * [#1279](https://github.com/pmd/pmd/pull/1279): \[plsql] Support for SELECT INTO + + +### API Changes + +* A couple of methods and fields in `net.sourceforge.pmd.properties.AbstractPropertySource` have been + deprecated, as they are replaced by already existing functionality or expose internal implementation + details: `propertyDescriptors`, `propertyValuesByDescriptor`, + `copyPropertyDescriptors()`, `copyPropertyValues()`, `ignoredProperties()`, `usesDefaultValues()`, + `useDefaultValueFor()`. + +* Some methods in `net.sourceforge.pmd.properties.PropertySource` have been deprecated as well: + `usesDefaultValues()`, `useDefaultValueFor()`, `ignoredProperties()`. + +* The class `net.sourceforge.pmd.lang.rule.AbstractDelegateRule` has been deprecated and will + be removed with PMD 7.0.0. It is internally only in use by RuleReference. + +* The default constructor of `net.sourceforge.pmd.lang.rule.RuleReference` has been deprecated + and will be removed with PMD 7.0.0. RuleReferences should only be created by providing a Rule and + a RuleSetReference. Furthermore the following methods are deprecated: `setRuleReference()`, + `hasOverriddenProperty()`, `usesDefaultValues()`, `useDefaultValueFor()`. + + +### External Contributions + +* [#1309](https://github.com/pmd/pmd/pull/1309): \[core] \[CPD] Decouple Antlr Tokenizer implementation from any CPD language supported with Antlr - [Matías Fraga](https://github.com/matifraga) +* [#1314](https://github.com/pmd/pmd/pull/1314): \[apex] Add validation of ApexDoc comments - [Jeff Hube](https://github.com/jeffhube) +* [#1339](https://github.com/pmd/pmd/pull/1339): \[ci] Improve danger message - [BBG](https://github.com/djydewang) +* [#1340](https://github.com/pmd/pmd/pull/1340): \[java] Derive correct classname for non-public non-classes - [kris-scheibe](https://github.com/kris-scheibe) +* [#1357](https://github.com/pmd/pmd/pull/1357): \[doc] Improve Codacy description - [Daniel Reigada](https://github.com/DReigada) + + ## 02-September-2018 - 6.7.0 The PMD team is pleased to announce PMD 6.7.0.