Skip to content

Commit 0bdd5e3

Browse files
pynicolasvilchik-elena
authored andcommitted
SONARJS-627 Fix quality flaws and add comments
1 parent 93156fb commit 0bdd5e3

6 files changed

Lines changed: 15 additions & 9 deletions

File tree

javascript-checks/src/main/java/org/sonar/javascript/checks/UnreachableCodeCheck.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ private void check(ControlFlowGraph cfg) {
9595
}
9696
}
9797

98-
private Tree unreachableTree(List<Tree> elements) {
98+
private static Tree unreachableTree(List<Tree> elements) {
9999
for (Tree element : elements) {
100100
if (!element.is(Kind.FUNCTION_DECLARATION, Kind.GENERATOR_DECLARATION, Kind.CLASS_DECLARATION)) {
101101
return element;

javascript-frontend/src/main/java/org/sonar/javascript/cfg/BranchingBlock.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ public Set<MutableBlock> successors() {
4646

4747
public void setSuccessors(MutableBlock successor1, MutableBlock successor2) {
4848
Preconditions.checkArgument(successor1 != null && successor2 != null, "Successor cannot be null");
49-
Preconditions.checkArgument(successor1 != this && successor2 != this, "Cannot add itself as successor");
49+
Preconditions.checkArgument(!this.equals(successor1) && !this.equals(successor2), "Cannot add itself as successor");
5050
this.successor1 = successor1;
5151
this.successor2 = successor2;
5252
}

javascript-frontend/src/main/java/org/sonar/javascript/cfg/ControlFlowGraphBuilder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ private void removeEmptyBlocks() {
9393
Map<MutableBlock, MutableBlock> emptyBlockReplacements = new HashMap<>();
9494
for (SingleSuccessorBlock block : Iterables.filter(blocks, SingleSuccessorBlock.class)) {
9595
if (block.isEmpty()) {
96-
MutableBlock firstNonEmptySuccessor = block.firstNonEmptySuccessor();
96+
MutableBlock firstNonEmptySuccessor = block.skipEmptyBlocks();
9797
emptyBlockReplacements.put(block, firstNonEmptySuccessor);
9898
for (SyntaxToken jump : block.disconnectingJumps()) {
9999
firstNonEmptySuccessor.addDisconnectingJump(jump);

javascript-frontend/src/main/java/org/sonar/javascript/cfg/MutableBlock.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,11 @@ abstract class MutableBlock {
4040

4141
public abstract Set<MutableBlock> successors();
4242

43+
/**
44+
* Replace successors based on a replacement map.
45+
* This method is used when we remove empty blocks:
46+
* we have to replace empty successors in the remaining blocks by non-empty successors.
47+
*/
4348
public abstract void replaceSuccessors(Map<MutableBlock, MutableBlock> replacements);
4449

4550
public List<Tree> elements() {

javascript-frontend/src/main/java/org/sonar/javascript/cfg/SingleSuccessorBlock.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,9 @@ public Set<MutableBlock> successors() {
3838
return ImmutableSet.of(successor());
3939
}
4040

41-
public MutableBlock firstNonEmptySuccessor() {
41+
public MutableBlock skipEmptyBlocks() {
4242
MutableBlock block = this;
43+
// BranchingBlock cannot be empty, EndBlock cannot be skipped.
4344
while (block instanceof SingleSuccessorBlock && block.isEmpty()) {
4445
block = ((SingleSuccessorBlock) block).successor();
4546
}

javascript-frontend/src/test/java/org/sonar/javascript/cfg/MutableBlockTest.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -83,11 +83,11 @@ public void cannot_add_null_as_successor() throws Exception {
8383
public void non_empty_successor() throws Exception {
8484
SimpleBlock simpleNonEmpty = new SimpleBlock(end);
8585
simpleNonEmpty.addElement(tree1);
86-
assertThat(simpleNonEmpty.firstNonEmptySuccessor()).isEqualTo(simpleNonEmpty);
87-
assertThat(new SimpleBlock(simpleNonEmpty).firstNonEmptySuccessor()).isEqualTo(simpleNonEmpty);
88-
assertThat(new SimpleBlock(branching1).firstNonEmptySuccessor()).isEqualTo(branching1);
89-
assertThat(new SimpleBlock(end).firstNonEmptySuccessor()).isEqualTo(end);
90-
assertThat(new SimpleBlock(new SimpleBlock(end)).firstNonEmptySuccessor()).isEqualTo(end);
86+
assertThat(simpleNonEmpty.skipEmptyBlocks()).isEqualTo(simpleNonEmpty);
87+
assertThat(new SimpleBlock(simpleNonEmpty).skipEmptyBlocks()).isEqualTo(simpleNonEmpty);
88+
assertThat(new SimpleBlock(branching1).skipEmptyBlocks()).isEqualTo(branching1);
89+
assertThat(new SimpleBlock(end).skipEmptyBlocks()).isEqualTo(end);
90+
assertThat(new SimpleBlock(new SimpleBlock(end)).skipEmptyBlocks()).isEqualTo(end);
9191
}
9292

9393
@Test

0 commit comments

Comments
 (0)