Merge branch 'pr-591'

This commit is contained in:
Andreas Dangel
2017-09-05 18:28:17 +02:00
3 changed files with 43 additions and 25 deletions

View File

@ -817,41 +817,26 @@ A class that has private constructors and does not have any static methods or fi
//ClassOrInterfaceDeclaration[@Nested='false']
[
(
count(./ClassOrInterfaceBody/ClassOrInterfaceBodyDeclaration/ConstructorDeclaration)>0
./ClassOrInterfaceBody/ClassOrInterfaceBodyDeclaration/ConstructorDeclaration
and
count(./ClassOrInterfaceBody/ClassOrInterfaceBodyDeclaration/ConstructorDeclaration) = count(./ClassOrInterfaceBody/ClassOrInterfaceBodyDeclaration/ConstructorDeclaration[@Private='true'])
)
and
count(.//MethodDeclaration[@Static='true'])=0
not(.//MethodDeclaration[@Static='true'])
and
count(.//FieldDeclaration[@Private='false'][@Static='true'])=0
not(.//FieldDeclaration[@Private='false'][@Static='true'])
and
count(.//ClassOrInterfaceDeclaration[@Nested='true']
not(.//ClassOrInterfaceDeclaration[@Nested='true']
[@Public='true']
[@Static='true']
[count(./ClassOrInterfaceBody/ClassOrInterfaceBodyDeclaration/ConstructorDeclaration[@Public='true']) > 0]
[count(./ClassOrInterfaceBody/ClassOrInterfaceBodyDeclaration/MethodDeclaration
[@Public='true']
[./ResultType/Type/ReferenceType/ClassOrInterfaceType
[@Image = //ClassOrInterfaceDeclaration[@Nested='false']/@Image]
]
) > 0]
) = 0
and
count(//ClassOrInterfaceDeclaration
[@Nested='true']
[@Static='true']
[@Public='true']
[.//MethodDeclaration
[@Public='true']
[.//ReturnStatement//AllocationExpression
[ClassOrInterfaceType
[@Image = //ClassOrInterfaceDeclaration/@Image]
[not(./ClassOrInterfaceBody/ClassOrInterfaceBodyDeclaration/ConstructorDeclaration) or ./ClassOrInterfaceBody/ClassOrInterfaceBodyDeclaration/ConstructorDeclaration[@Public='true']]
[./ClassOrInterfaceBody/ClassOrInterfaceBodyDeclaration/MethodDeclaration
[@Public='true']
[./ResultType/Type/ReferenceType/ClassOrInterfaceType
[@Image = //ClassOrInterfaceDeclaration[@Nested='false']/@Image]
]
[./Arguments//PrimaryPrefix/@ThisModifier='true']
]
]
) = 0
)
]
]]>
</value>

View File

@ -209,6 +209,38 @@ public final class BacklogElementParameters {
return new BacklogElementParameters(this);
}
}
}
]]></code>
</test-code>
<test-code>
<description>#590 Check Builder pattern alternative</description>
<expected-problems>0</expected-problems>
<code><![CDATA[
public final class BacklogElementParameters {
private final Long backlogId;
private final String name;
private BacklogElementParameters(Long backlogId, String name) {
this.backlogId = backlogId;
this.name = name;
}
public static class Builder {
public Builder backlogId(final Long backlogId) {
this.backlogId = backlogId;
return this;
}
public Builder name(final String name) {
this.name = name;
return this;
}
public BacklogElementParameters build() {
return new BacklogElementParameters(backlogId, name);
}
}
}
]]></code>
</test-code>