ruleset: MoveVariableInsideIf: enabled for 4-tweaks and above
This commit is contained in:
parent
6072613b44
commit
4a0ee1de46
6 changed files with 120 additions and 0 deletions
24
README.md
24
README.md
|
@ -181,6 +181,7 @@ Rule|Level|Source|Enabled|Suppressible
|
||||||
[MissingSwitchDefault](#missingswitchdefault)|tweaks|checkstyle|Yes|
|
[MissingSwitchDefault](#missingswitchdefault)|tweaks|checkstyle|Yes|
|
||||||
[ModifiedControlVariable](#modifiedcontrolvariable)|tweaks|checkstyle|Yes|
|
[ModifiedControlVariable](#modifiedcontrolvariable)|tweaks|checkstyle|Yes|
|
||||||
[ModifierOrder](#modifierorder)|naming|checkstyle|Yes|
|
[ModifierOrder](#modifierorder)|naming|checkstyle|Yes|
|
||||||
|
[MoveVariableInsideIfCheck](#movevariableinsideifcheck)|tweaks|sevntu|Yes|
|
||||||
[MultipleStringLiterals](#multiplestringliterals)|naming|checkstyle|Yes|
|
[MultipleStringLiterals](#multiplestringliterals)|naming|checkstyle|Yes|
|
||||||
[MultipleVariableDeclarations](#multiplevariabledeclarations)|naming|checkstyle|Yes|
|
[MultipleVariableDeclarations](#multiplevariabledeclarations)|naming|checkstyle|Yes|
|
||||||
[MutableException](#mutableexception)|tweaks|checkstyle|Yes|
|
[MutableException](#mutableexception)|tweaks|checkstyle|Yes|
|
||||||
|
@ -2333,6 +2334,29 @@ if (getProperty() && property) {}
|
||||||
#### [MapIterationInForEachLoop](http://sevntu-checkstyle.github.io/sevntu.checkstyle/apidocs/com/github/sevntu/checkstyle/checks/coding/MapIterationInForEachLoopCheck.html)
|
#### [MapIterationInForEachLoop](http://sevntu-checkstyle.github.io/sevntu.checkstyle/apidocs/com/github/sevntu/checkstyle/checks/coding/MapIterationInForEachLoopCheck.html)
|
||||||
|
|
||||||
Checks for unoptimised iterations over `Map`s. Check use of `map.values()`, `map.keySet()` and `map.entrySet()` against the use of the iterator produced to verify if another could be better.
|
Checks for unoptimised iterations over `Map`s. Check use of `map.values()`, `map.keySet()` and `map.entrySet()` against the use of the iterator produced to verify if another could be better.
|
||||||
|
#### [MoveVariableInsideIfCheck](http://sevntu-checkstyle.github.io/sevntu.checkstyle/apidocs/com/github/sevntu/checkstyle/checks/coding/MoveVariableInsideIfCheck.html)
|
||||||
|
|
||||||
|
Checks if a variable is declared outside an `if` block that is only used within that block.
|
||||||
|
|
||||||
|
Valid:
|
||||||
|
````
|
||||||
|
if (condition) {
|
||||||
|
String variable = input.substring(1);
|
||||||
|
return method(variable);
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
````
|
||||||
|
|
||||||
|
Invalid:
|
||||||
|
````
|
||||||
|
String variable = input.substring(1);
|
||||||
|
if (condition) {
|
||||||
|
return method(variable);
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
````
|
||||||
|
|
||||||
|
Example: [MoveVariableInsideIf.java](https://github.com/kemitix/kemitix-checkstyle-ruleset/blob/master/regressions/src/main/java/net/kemitix/checkstyle/regressions/MoveVariableInsideIf.java)
|
||||||
#### [NameConventionForJunit4TestClasses](http://sevntu-checkstyle.github.io/sevntu.checkstyle/apidocs/com/github/sevntu/checkstyle/checks/coding/NameConventionForJunit4TestClassesCheck.html)
|
#### [NameConventionForJunit4TestClasses](http://sevntu-checkstyle.github.io/sevntu.checkstyle/apidocs/com/github/sevntu/checkstyle/checks/coding/NameConventionForJunit4TestClassesCheck.html)
|
||||||
|
|
||||||
Checks the names of JUnit test classes. Classes checked are those that have at least one method annotated with `Test` or `org.junit.Test`.
|
Checks the names of JUnit test classes. Classes checked are those that have at least one method annotated with `Test` or `org.junit.Test`.
|
||||||
|
|
|
@ -1498,3 +1498,10 @@ rules:
|
||||||
source: SEVNTU
|
source: SEVNTU
|
||||||
uri: http://sevntu-checkstyle.github.io/sevntu.checkstyle/apidocs/com/github/sevntu/checkstyle/checks/coding/WhitespaceBeforeArrayInitializerCheck.html
|
uri: http://sevntu-checkstyle.github.io/sevntu.checkstyle/apidocs/com/github/sevntu/checkstyle/checks/coding/WhitespaceBeforeArrayInitializerCheck.html
|
||||||
reason: "TODO: enable"
|
reason: "TODO: enable"
|
||||||
|
-
|
||||||
|
name: MoveVariableInsideIfCheck
|
||||||
|
parent: TREEWALKER
|
||||||
|
level: TWEAKS
|
||||||
|
enabled: true
|
||||||
|
source: SEVNTU
|
||||||
|
uri: http://sevntu-checkstyle.github.io/sevntu.checkstyle/apidocs/com/github/sevntu/checkstyle/checks/coding/MoveVariableInsideIfCheck.html
|
||||||
|
|
|
@ -0,0 +1,22 @@
|
||||||
|
|
||||||
|
Checks if a variable is declared outside an `if` block that is only used within that block.
|
||||||
|
|
||||||
|
Valid:
|
||||||
|
````
|
||||||
|
if (condition) {
|
||||||
|
String variable = input.substring(1);
|
||||||
|
return method(variable);
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
````
|
||||||
|
|
||||||
|
Invalid:
|
||||||
|
````
|
||||||
|
String variable = input.substring(1);
|
||||||
|
if (condition) {
|
||||||
|
return method(variable);
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
````
|
||||||
|
|
||||||
|
Example: [MoveVariableInsideIf.java](https://github.com/kemitix/kemitix-checkstyle-ruleset/blob/master/regressions/src/main/java/net/kemitix/checkstyle/regressions/MoveVariableInsideIf.java)
|
|
@ -0,0 +1,65 @@
|
||||||
|
/**
|
||||||
|
* The MIT License (MIT)
|
||||||
|
*
|
||||||
|
* Copyright (c) 2017 Paul Campbell
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy of this software
|
||||||
|
* and associated documentation files (the "Software"), to deal in the Software without restriction,
|
||||||
|
* including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
|
* and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
|
||||||
|
* subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in all copies
|
||||||
|
* or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
|
||||||
|
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
* AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
|
||||||
|
* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package net.kemitix.checkstyle.regressions;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Regression demo for {@code MoveVariableInsideIfCheck}.
|
||||||
|
*
|
||||||
|
* @author Paul Campbell (pcampbell@kemitix.net)
|
||||||
|
*/
|
||||||
|
class MoveVariableInsideIf {
|
||||||
|
|
||||||
|
private String input = "1";
|
||||||
|
|
||||||
|
private boolean condition;
|
||||||
|
|
||||||
|
private String method(final String variable) {
|
||||||
|
return "value";
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fails if not suppressed.
|
||||||
|
*
|
||||||
|
* @return value
|
||||||
|
*/
|
||||||
|
@SuppressWarnings("movevariableinsideif")
|
||||||
|
String invalid() {
|
||||||
|
String variable = input.substring(1);
|
||||||
|
if (condition) {
|
||||||
|
return method(variable);
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Rewrite {@link #invalid()} as this to pass.
|
||||||
|
*
|
||||||
|
* @return value
|
||||||
|
*/
|
||||||
|
String valid() {
|
||||||
|
if (condition) {
|
||||||
|
String variable = input.substring(1);
|
||||||
|
return method(variable);
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
}
|
|
@ -175,6 +175,7 @@
|
||||||
<module name="UniformEnumConstantName"/>
|
<module name="UniformEnumConstantName"/>
|
||||||
<module name="UselessSingleCatch"/>
|
<module name="UselessSingleCatch"/>
|
||||||
<module name="UselessSuperCtorCall"/>
|
<module name="UselessSuperCtorCall"/>
|
||||||
|
<module name="MoveVariableInsideIfCheck"/>
|
||||||
|
|
||||||
</module><!-- /TreeWalker -->
|
</module><!-- /TreeWalker -->
|
||||||
|
|
||||||
|
|
|
@ -228,6 +228,7 @@
|
||||||
<module name="UniformEnumConstantName"/>
|
<module name="UniformEnumConstantName"/>
|
||||||
<module name="UselessSingleCatch"/>
|
<module name="UselessSingleCatch"/>
|
||||||
<module name="UselessSuperCtorCall"/>
|
<module name="UselessSuperCtorCall"/>
|
||||||
|
<module name="MoveVariableInsideIfCheck"/>
|
||||||
|
|
||||||
</module><!-- /TreeWalker -->
|
</module><!-- /TreeWalker -->
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue