Skip to content

Commit 9673b37

Browse files
committed
Migrate S104 from AstNode.
1 parent dcc3c48 commit 9673b37

File tree

2 files changed

+26
-20
lines changed

2 files changed

+26
-20
lines changed

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

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -19,18 +19,20 @@
1919
*/
2020
package org.sonar.javascript.checks;
2121

22+
import com.google.common.collect.ImmutableList;
2223
import org.sonar.api.server.rule.RulesDefinition;
2324
import org.sonar.check.Priority;
2425
import org.sonar.check.Rule;
2526
import org.sonar.check.RuleProperty;
27+
import org.sonar.javascript.checks.utils.SubscriptionBaseVisitor;
28+
import org.sonar.javascript.model.internal.lexical.InternalSyntaxToken;
29+
import org.sonar.plugins.javascript.api.tree.Tree;
30+
import org.sonar.plugins.javascript.api.tree.lexical.SyntaxToken;
2631
import org.sonar.squidbridge.annotations.ActivatedByDefault;
2732
import org.sonar.squidbridge.annotations.SqaleConstantRemediation;
2833
import org.sonar.squidbridge.annotations.SqaleSubCharacteristic;
29-
import org.sonar.squidbridge.checks.SquidCheck;
30-
import org.sonar.sslr.parser.LexerlessGrammar;
3134

32-
import com.sonar.sslr.api.AstNode;
33-
import com.sonar.sslr.api.GenericTokenType;
35+
import java.util.List;
3436

3537
@Rule(
3638
key = "S104",
@@ -40,7 +42,7 @@
4042
@ActivatedByDefault
4143
@SqaleSubCharacteristic(RulesDefinition.SubCharacteristics.READABILITY)
4244
@SqaleConstantRemediation("1h")
43-
public class TooManyLinesInFileCheck extends SquidCheck<LexerlessGrammar> {
45+
public class TooManyLinesInFileCheck extends SubscriptionBaseVisitor {
4446

4547
private static final int DEFAULT = 1000;
4648

@@ -51,18 +53,24 @@ public class TooManyLinesInFileCheck extends SquidCheck<LexerlessGrammar> {
5153
public int maximum = DEFAULT;
5254

5355
@Override
54-
public void init() {
55-
subscribeTo(GenericTokenType.EOF);
56-
}
56+
public void visitNode(Tree tree) {
57+
if (!((InternalSyntaxToken) tree).isEOF()) {
58+
return;
59+
}
5760

58-
@Override
59-
public void visitNode(AstNode astNode) {
60-
int lines = astNode.getTokenLine();
61+
SyntaxToken token = (SyntaxToken) tree;
62+
int lines = token.line();
6163

6264
if (lines > maximum) {
63-
getContext().createFileViolation(this, "File \"{0}\" has {1} lines, which is greater than {2} authorized. Split it into smaller files.",
64-
getContext().getFile().getName(), lines, maximum);
65+
getContext().addFileIssue(this, String.format("File \"%s\" has %d lines, which is greater than %d authorized. Split it into smaller files.",
66+
getContext().getFile().getName(), lines, maximum));
6567
}
6668
}
69+
70+
@Override
71+
public List<Tree.Kind> nodesToVisit() {
72+
return ImmutableList.of(Tree.Kind.TOKEN);
73+
}
74+
6775
}
6876

javascript-checks/src/test/java/org/sonar/javascript/checks/TooManyLinesInFileCheckTest.java

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,28 +19,26 @@
1919
*/
2020
package org.sonar.javascript.checks;
2121

22-
import org.sonar.squidbridge.checks.CheckMessagesVerifier;
2322
import org.junit.Test;
24-
import org.sonar.javascript.JavaScriptAstScanner;
23+
import org.sonar.javascript.checks.utils.TreeCheckTest;
2524
import org.sonar.squidbridge.api.SourceFile;
25+
import org.sonar.squidbridge.checks.CheckMessagesVerifier;
2626

27-
import java.io.File;
28-
29-
public class TooManyLinesInFileCheckTest {
27+
public class TooManyLinesInFileCheckTest extends TreeCheckTest {
3028

3129
private TooManyLinesInFileCheck check = new TooManyLinesInFileCheck();
3230

3331
@Test
3432
public void testDefault() {
35-
SourceFile file = JavaScriptAstScanner.scanSingleFile(new File("src/test/resources/checks/tooManyLinesInFile.js"), check);
33+
SourceFile file = scanFile("src/test/resources/checks/tooManyLinesInFile.js", check);
3634
CheckMessagesVerifier.verify(file.getCheckMessages())
3735
.noMore();
3836
}
3937

4038
@Test
4139
public void testCustom() {
4240
check.maximum = 1;
43-
SourceFile file = JavaScriptAstScanner.scanSingleFile(new File("src/test/resources/checks/tooManyLinesInFile.js"), check);
41+
SourceFile file = scanFile("src/test/resources/checks/tooManyLinesInFile.js", check);
4442
CheckMessagesVerifier.verify(file.getCheckMessages())
4543
.next().withMessage("File \"tooManyLinesInFile.js\" has 7 lines, which is greater than 1 authorized. Split it into smaller files.")
4644
.noMore();

0 commit comments

Comments
 (0)