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|
|
||||
[ModifiedControlVariable](#modifiedcontrolvariable)|tweaks|checkstyle|Yes|
|
||||
[ModifierOrder](#modifierorder)|naming|checkstyle|Yes|
|
||||
[MoveVariableInsideIfCheck](#movevariableinsideifcheck)|tweaks|sevntu|Yes|
|
||||
[MultipleStringLiterals](#multiplestringliterals)|naming|checkstyle|Yes|
|
||||
[MultipleVariableDeclarations](#multiplevariabledeclarations)|naming|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)
|
||||
|
||||
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)
|
||||
|
||||
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
|
||||
uri: http://sevntu-checkstyle.github.io/sevntu.checkstyle/apidocs/com/github/sevntu/checkstyle/checks/coding/WhitespaceBeforeArrayInitializerCheck.html
|
||||
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="UselessSingleCatch"/>
|
||||
<module name="UselessSuperCtorCall"/>
|
||||
<module name="MoveVariableInsideIfCheck"/>
|
||||
|
||||
</module><!-- /TreeWalker -->
|
||||
|
||||
|
|
|
@ -228,6 +228,7 @@
|
|||
<module name="UniformEnumConstantName"/>
|
||||
<module name="UselessSingleCatch"/>
|
||||
<module name="UselessSuperCtorCall"/>
|
||||
<module name="MoveVariableInsideIfCheck"/>
|
||||
|
||||
</module><!-- /TreeWalker -->
|
||||
|
||||
|
|
Loading…
Reference in a new issue