Closes #1486 Add rule for no-else-return - New Javascript rule
This commit is contained in:
@ -71,4 +71,37 @@ if (bar) {
|
||||
</example>
|
||||
</rule>
|
||||
|
||||
<rule name="NoElseReturn"
|
||||
language="ecmascript"
|
||||
since="5.5.0"
|
||||
message="The else block is unnecessary"
|
||||
class="net.sourceforge.pmd.lang.rule.XPathRule"
|
||||
externalInfoUrl="${pmd.website.baseurl}/rules/ecmascript/unnecessary.html#NoElseReturn">
|
||||
<description>The else block in a if-else-construct is unnecessary if the `if` block contains a return.
|
||||
Then the content of the else block can be put outside.
|
||||
|
||||
See also: http://eslint.org/docs/rules/no-else-return
|
||||
</description>
|
||||
<priority>3</priority>
|
||||
<properties>
|
||||
<property name="xpath"><value><![CDATA[
|
||||
//IfStatement[@Else="true"][Scope[1]/ReturnStatement]
|
||||
]]></value></property>
|
||||
</properties>
|
||||
<example><![CDATA[
|
||||
// Bad:
|
||||
if (x) {
|
||||
return y;
|
||||
} else {
|
||||
return z;
|
||||
}
|
||||
|
||||
// Good:
|
||||
if (x) {
|
||||
return y;
|
||||
}
|
||||
return z;
|
||||
]]></example>
|
||||
</rule>
|
||||
|
||||
</ruleset>
|
@ -13,5 +13,6 @@ public class UnnecessaryRulesTest extends SimpleAggregatorTst {
|
||||
public void setUp() {
|
||||
addRule(RULESET, "UnnecessaryBlock");
|
||||
addRule(RULESET, "UnnecessaryParentheses");
|
||||
addRule(RULESET, "NoElseReturn");
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,45 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<test-data>
|
||||
<test-code>
|
||||
<description>Simple violation</description>
|
||||
<expected-problems>1</expected-problems>
|
||||
<code><![CDATA[
|
||||
function foo() {
|
||||
if (x) {
|
||||
return y;
|
||||
} else {
|
||||
return z;
|
||||
}
|
||||
}
|
||||
]]></code>
|
||||
</test-code>
|
||||
|
||||
<test-code>
|
||||
<description>Simple fix</description>
|
||||
<expected-problems>0</expected-problems>
|
||||
<code><![CDATA[
|
||||
function foo() {
|
||||
if (x) {
|
||||
return y;
|
||||
}
|
||||
return z;
|
||||
}
|
||||
]]></code>
|
||||
</test-code>
|
||||
|
||||
<test-code>
|
||||
<description>No return in if</description>
|
||||
<expected-problems>0</expected-problems>
|
||||
<code><![CDATA[
|
||||
function foo() {
|
||||
if (x) {
|
||||
x++;
|
||||
} else {
|
||||
return z;
|
||||
}
|
||||
return x;
|
||||
}
|
||||
]]></code>
|
||||
</test-code>
|
||||
|
||||
</test-data>
|
Reference in New Issue
Block a user