forked from phoedos/pmd
Merge branch 'master' into issue-2181
This commit is contained in:
@@ -36,6 +36,7 @@ require_relative 'jdoc_namespace_tag'
|
||||
# * The (erased) types of method arguments must be fully qualified. This is the same
|
||||
# convention as in javadoc {@link} tags, so you can use you're IDE's javadoc auto-
|
||||
# complete and copy-paste. Namespaces also can be used for method arguments if they're from PMD.
|
||||
# * Use the name <init> to reference a constructor
|
||||
#
|
||||
#
|
||||
# * Defining custom namespaces
|
||||
@@ -90,13 +91,15 @@ require_relative 'jdoc_namespace_tag'
|
||||
# - Include spaces in any part of the reference
|
||||
# - Use double or single quotes around the arguments
|
||||
# - Use the "#" suffix to reference a nested type, instead, use a dot "." and reference it like a normal type name
|
||||
# - Use `[]` instead of `...` for vararg parameters
|
||||
# - Use the type name instead of `<init>` for a constructor
|
||||
#
|
||||
#
|
||||
class JavadocTag < Liquid::Tag
|
||||
|
||||
QNAME_NO_NAMESPACE_REGEX = /((?:\w+\.)*\w+)/
|
||||
|
||||
ARG_REGEX = Regexp.new(Regexp.union(JDocNamespaceDeclaration::NAMESPACED_FQCN_REGEX, QNAME_NO_NAMESPACE_REGEX).source + '(\[\])*')
|
||||
ARG_REGEX = Regexp.new(Regexp.union(JDocNamespaceDeclaration::NAMESPACED_FQCN_REGEX, QNAME_NO_NAMESPACE_REGEX).source + '(\[\])*(...)?')
|
||||
ARGUMENTS_REGEX = Regexp.new('\(\)|\((' + ARG_REGEX.source + "(?:,(?:" + ARG_REGEX.source + "))*" + ')\)')
|
||||
|
||||
|
||||
@@ -174,9 +177,12 @@ class JavadocTag < Liquid::Tag
|
||||
def self.get_visible_name(opts, type_fqcn, member_suffix, is_package_ref, resolved_type)
|
||||
|
||||
# method or field
|
||||
if member_suffix && Regexp.new('(\w+)(' + ARGUMENTS_REGEX.source + ")?") =~ member_suffix
|
||||
if member_suffix && Regexp.new('(\w+|<init>)(' + ARGUMENTS_REGEX.source + ")?") =~ member_suffix
|
||||
|
||||
suffix = $1 # method or field name
|
||||
if suffix == '<init>'
|
||||
suffix = '<init>'
|
||||
end
|
||||
|
||||
if opts.show_args? && $2 && !$2.empty? # is method
|
||||
|
||||
|
@@ -14,21 +14,61 @@ This is a {{ site.pmd.release_type }} release.
|
||||
|
||||
### New and noteworthy
|
||||
|
||||
### Fixed Issues
|
||||
#### New Rules
|
||||
|
||||
* The new Java rule {% rule "java/bestpractices/UnusedAssignment" %} (`java-bestpractices`) finds assignments
|
||||
to variables, that are never used and are useless. The new rule is supposed to entirely replace
|
||||
{% rule "java/errorprone/DataflowAnomalyAnalysis" %}.
|
||||
|
||||
### Fixed Issues
|
||||
* apex
|
||||
* [#2610](https://github.com/pmd/pmd/pull/2610): \[apex] Support top-level enums in rules
|
||||
* apex-bestpractices
|
||||
* [#2626](https://github.com/pmd/pmd/issues/2626): \[apex] UnusedLocalVariable - false positive on case insensitivity allowed in Apex
|
||||
* apex-security
|
||||
* [#2620](https://github.com/pmd/pmd/issues/2620): \[visualforce] False positive on VfUnescapeEl with new Message Channel feature
|
||||
* core
|
||||
* [#710](https://github.com/pmd/pmd/issues/710): \[core] Review used dependencies
|
||||
* [#2594](https://github.com/pmd/pmd/issues/2594): \[core] Update exec-maven-plugin and align it in all project
|
||||
* [#2615](https://github.com/pmd/pmd/issues/2615): \[core] PMD/CPD produces invalid XML (insufficient escaping/wrong encoding)
|
||||
* java-bestpractices
|
||||
* [#2543](https://github.com/pmd/pmd/issues/2543): \[java] UseCollectionIsEmpty can not detect the case this.foo.size()
|
||||
* [#2569](https://github.com/pmd/pmd/issues/2569): \[java] LiteralsFirstInComparisons: False negative for methods returning Strings
|
||||
* java-design
|
||||
* [#2174](https://github.com/pmd/pmd/issues/2174): \[java] LawOfDemeter: False positive with 'this' pointer
|
||||
* [#2181](https://github.com/pmd/pmd/issues/2181): \[java] LawOfDemeter: False positive with indexed array access
|
||||
* [#2189](https://github.com/pmd/pmd/issues/2189): \[java] LawOfDemeter: False positive when casting to derived class
|
||||
* [#2580](https://github.com/pmd/pmd/issues/2580): \[java] AvoidThrowingNullPointerException marks all NullPointerException objects as wrong, whether or not thrown
|
||||
* java-errorprone
|
||||
* [#2578](https://github.com/pmd/pmd/issues/2578): \[java] AvoidCallingFinalize detects some false positives
|
||||
* [#2634](https://github.com/pmd/pmd/issues/2634): \[java] NullPointerException in rule ProperCloneImplementation
|
||||
* java-performance
|
||||
* [#1736](https://github.com/pmd/pmd/issues/1736): \[java] UseStringBufferForStringAppends: False positive if only one concatenation
|
||||
* [#2207](https://github.com/pmd/pmd/issues/2207): \[java] AvoidInstantiatingObjectsInLoops: False positive - should not flag objects when assigned to lists/arrays
|
||||
|
||||
### API Changes
|
||||
|
||||
#### Deprecated API
|
||||
|
||||
##### For removal
|
||||
|
||||
* {% jdoc core::lang.rule.RuleChainVisitor %} and all implementations in language modules
|
||||
* {% jdoc core::lang.rule.AbstractRuleChainVisitor %}
|
||||
* {% jdoc !!core::lang.Language#getRuleChainVisitorClass() %}
|
||||
* {% jdoc !!core::lang.BaseLanguageModule#<init>(java.lang.String,java.lang.String,java.lang.String,java.lang.Class,java.lang.String...) %}
|
||||
|
||||
|
||||
### External Contributions
|
||||
* [#2558](https://github.com/pmd/pmd/pull/2558): \[java] Fix issue #1736 and issue #2207 - [Young Chan](https://github.com/YYoungC)
|
||||
* [#2560](https://github.com/pmd/pmd/pull/2560): \[java] Fix false positives of LawOfDemeter: this and cast expressions - [xioayuge](https://github.com/xioayuge)
|
||||
* [#2590](https://github.com/pmd/pmd/pull/2590): Update libraries snyk is referring to as `unsafe` - [Artem Krosheninnikov](https://github.com/KroArtem)
|
||||
* [#2597](https://github.com/pmd/pmd/pull/2597): \[dependencies] Fix issue #2594, update exec-maven-plugin everywhere - [Artem Krosheninnikov](https://github.com/KroArtem)
|
||||
* [#2621](https://github.com/pmd/pmd/pull/2621): \[visualforce] add new safe resource for VfUnescapeEl - [Peter Chittum](https://github.com/pchittum)
|
||||
* [#2640](https://github.com/pmd/pmd/pull/2640): \[java] NullPointerException in rule ProperCloneImplementation - [Mykhailo Palahuta](https://github.com/Drofff)
|
||||
* [#2641](https://github.com/pmd/pmd/pull/2641): \[java] AvoidThrowingNullPointerException marks all NullPointerException… - [Mykhailo Palahuta](https://github.com/Drofff)
|
||||
* [#2643](https://github.com/pmd/pmd/pull/2643): \[java] AvoidCallingFinalize detects some false positives (2578) - [Mykhailo Palahuta](https://github.com/Drofff)
|
||||
* [#2651](https://github.com/pmd/pmd/pull/2651): \[java] False negative: LiteralsFirstInComparisons for methods... (2569) - [Mykhailo Palahuta](https://github.com/Drofff)
|
||||
* [#2652](https://github.com/pmd/pmd/pull/2652): \[java] UseCollectionIsEmpty can not detect the case this.foo.size() - [Mykhailo Palahuta](https://github.com/Drofff)
|
||||
|
||||
{% endtocmaker %}
|
||||
|
||||
|
Reference in New Issue
Block a user