Skip to content

Commit dc75a5c

Browse files
committed
SONARPY-201 Stop using squidbridge CheckMessage
1 parent 69371ef commit dc75a5c

41 files changed

Lines changed: 342 additions & 267 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

python-checks/src/main/java/org/sonar/python/checks/CognitiveComplexityFunctionCheck.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import org.sonar.check.Priority;
2626
import org.sonar.check.Rule;
2727
import org.sonar.check.RuleProperty;
28+
import org.sonar.python.IssueLocation;
2829
import org.sonar.python.PythonCheck;
2930
import org.sonar.python.api.PythonGrammar;
3031
import org.sonar.python.api.PythonKeyword;
@@ -168,7 +169,7 @@ private void incrementWithoutNesting(AstNode secondaryLocationNode) {
168169
}
169170

170171
private void incrementComplexity(AstNode secondaryLocationNode, int currentNodeComplexity) {
171-
secondaryLocations.add(new IssueLocation(secondaryLocationNode, secondaryMessage(currentNodeComplexity)));
172+
secondaryLocations.add(IssueLocation.preciseLocation(secondaryLocationNode, secondaryMessage(currentNodeComplexity)));
172173
complexity += currentNodeComplexity;
173174
}
174175

python-checks/src/main/java/org/sonar/python/checks/ExitHasBadArgumentsCheck.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import java.util.List;
2424
import org.sonar.check.Priority;
2525
import org.sonar.check.Rule;
26+
import org.sonar.python.IssueLocation;
2627
import org.sonar.python.PythonCheck;
2728
import org.sonar.python.api.PythonGrammar;
2829
import org.sonar.python.api.PythonPunctuator;
@@ -78,7 +79,7 @@ private void raiseIssue(AstNode node, int argumentsNumber) {
7879
}
7980
AstNode funcName = node.getFirstChild(PythonGrammar.FUNCNAME);
8081
AstNode rightParenthesis = node.getFirstChild(PythonPunctuator.RPARENTHESIS);
81-
addIssue(new IssueLocation(funcName, rightParenthesis, message));
82+
addIssue(IssueLocation.preciseLocation(funcName, rightParenthesis, message));
8283
}
8384
}
8485
}

python-checks/src/main/java/org/sonar/python/checks/LineLengthCheck.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,13 @@
2121

2222
import com.sonar.sslr.api.AstAndTokenVisitor;
2323
import com.sonar.sslr.api.AstNode;
24-
import com.sonar.sslr.api.Grammar;
2524
import com.sonar.sslr.api.Token;
25+
import java.text.MessageFormat;
2626
import org.sonar.check.Priority;
2727
import org.sonar.check.Rule;
2828
import org.sonar.check.RuleProperty;
29+
import org.sonar.python.PythonCheck;
2930
import org.sonar.squidbridge.annotations.SqaleConstantRemediation;
30-
import org.sonar.squidbridge.checks.SquidCheck;
3131

3232

3333
@Rule(
@@ -37,7 +37,7 @@
3737
tags = Tags.CONVENTION
3838
)
3939
@SqaleConstantRemediation("1min")
40-
public class LineLengthCheck extends SquidCheck<Grammar> implements AstAndTokenVisitor {
40+
public class LineLengthCheck extends PythonCheck implements AstAndTokenVisitor {
4141

4242
public static final String CHECK_KEY = "LineLength";
4343
private static final int DEFAULT_MAXIMUM_LINE_LENGTH = 120;
@@ -77,11 +77,11 @@ public void visitToken(Token token) {
7777
length += line.length();
7878
if (length > getMaximumLineLength()) {
7979
// Note that method from AbstractLineLengthCheck generates other message - see SONARPLUGINS-1809
80-
getContext().createLineViolation(this,
80+
String message = MessageFormat.format(
8181
"The line contains {0,number,integer} characters which is greater than {1,number,integer} authorized.",
82-
previousToken.getLine(),
8382
length,
8483
getMaximumLineLength());
84+
addLineIssue(message, previousToken.getLine());
8585
}
8686
length = 0;
8787
}

python-checks/src/main/java/org/sonar/python/checks/MissingDocstringCheck.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ private void raiseIssue(AstNode astNode, String message, DeclarationType type) {
9898
if (type != DeclarationType.MODULE) {
9999
addIssue(getNameNode(astNode), finalMessage);
100100
} else {
101-
getContext().createFileViolation(this, finalMessage);
101+
addFileIssue(finalMessage);
102102
}
103103
}
104104

python-checks/src/main/java/org/sonar/python/checks/MissingNewlineAtEndOfFileCheck.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,14 @@
2121

2222
import com.google.common.io.Files;
2323
import com.sonar.sslr.api.AstNode;
24-
import com.sonar.sslr.api.Grammar;
2524
import java.io.IOException;
2625
import java.nio.charset.Charset;
2726
import javax.annotation.Nullable;
2827
import org.sonar.check.Priority;
2928
import org.sonar.check.Rule;
3029
import org.sonar.python.CharsetAwareVisitor;
30+
import org.sonar.python.PythonCheck;
3131
import org.sonar.squidbridge.annotations.SqaleConstantRemediation;
32-
import org.sonar.squidbridge.checks.SquidCheck;
3332

3433
@Rule(
3534
key = MissingNewlineAtEndOfFileCheck.CHECK_KEY,
@@ -38,7 +37,7 @@
3837
tags = Tags.CONVENTION
3938
)
4039
@SqaleConstantRemediation("1min")
41-
public class MissingNewlineAtEndOfFileCheck extends SquidCheck<Grammar> implements CharsetAwareVisitor {
40+
public class MissingNewlineAtEndOfFileCheck extends PythonCheck implements CharsetAwareVisitor {
4241
public static final String CHECK_KEY = "S113";
4342
public static final String MESSAGE = "Add a new line at the end of this file \"%s\".";
4443
private Charset charset;
@@ -57,7 +56,7 @@ public void visitFile(@Nullable AstNode astNode) {
5756
throw new IllegalStateException("Could not read " + getContext().getFile(), e);
5857
}
5958
if (fileContent.length() > 0 && !fileContent.endsWith("\n") && !fileContent.endsWith("\r")){
60-
getContext().createFileViolation(this, String.format(MESSAGE, getContext().getFile().getName()));
59+
addFileIssue(String.format(MESSAGE, getContext().getFile().getName()));
6160
}
6261
}
6362

python-checks/src/main/java/org/sonar/python/checks/ModuleNameCheck.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,13 @@
2020
package org.sonar.python.checks;
2121

2222
import com.sonar.sslr.api.AstNode;
23-
import com.sonar.sslr.api.Grammar;
2423
import java.util.regex.Pattern;
2524
import javax.annotation.Nullable;
2625
import org.sonar.check.Priority;
2726
import org.sonar.check.Rule;
2827
import org.sonar.check.RuleProperty;
28+
import org.sonar.python.PythonCheck;
2929
import org.sonar.squidbridge.annotations.SqaleConstantRemediation;
30-
import org.sonar.squidbridge.checks.SquidCheck;
3130

3231
@Rule(
3332
key = ModuleNameCheck.CHECK_KEY,
@@ -36,7 +35,7 @@
3635
tags = Tags.CONVENTION
3736
)
3837
@SqaleConstantRemediation("10min")
39-
public class ModuleNameCheck extends SquidCheck<Grammar> {
38+
public class ModuleNameCheck extends PythonCheck {
4039

4140
public static final String CHECK_KEY = "S1578";
4241
private static final String DEFAULT = "(([a-z_][a-z0-9_]*)|([A-Z][a-zA-Z0-9]+))$";
@@ -60,7 +59,7 @@ public void visitFile(@Nullable AstNode astNode) {
6059
if (dotIndex > 0) {
6160
String moduleName = fileName.substring(0, dotIndex);
6261
if (!pattern.matcher(moduleName).matches()) {
63-
getContext().createFileViolation(this, String.format(MESSAGE, format));
62+
addFileIssue(String.format(MESSAGE, format));
6463
}
6564
}
6665
}

python-checks/src/main/java/org/sonar/python/checks/OneStatementPerLineCheck.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,13 @@
2121

2222
import com.google.common.collect.Maps;
2323
import com.sonar.sslr.api.AstNode;
24-
import com.sonar.sslr.api.Grammar;
2524
import java.util.Map;
2625
import org.sonar.check.Priority;
2726
import org.sonar.check.Rule;
27+
import org.sonar.python.PythonCheck;
2828
import org.sonar.python.api.PythonGrammar;
2929
import org.sonar.squidbridge.annotations.ActivatedByDefault;
3030
import org.sonar.squidbridge.annotations.SqaleConstantRemediation;
31-
import org.sonar.squidbridge.checks.SquidCheck;
3231

3332
/**
3433
* Note that implementation differs from AbstractOneStatementPerLineCheck due to Python specifics
@@ -41,7 +40,7 @@
4140
)
4241
@SqaleConstantRemediation("1min")
4342
@ActivatedByDefault
44-
public class OneStatementPerLineCheck extends SquidCheck<Grammar> {
43+
public class OneStatementPerLineCheck extends PythonCheck {
4544
public static final String CHECK_KEY = "OneStatementPerLine";
4645
private final Map<Integer, Integer> statementsPerLine = Maps.newHashMap();
4746

@@ -68,8 +67,9 @@ public void visitNode(AstNode statementNode) {
6867
public void leaveFile(AstNode astNode) {
6968
for (Map.Entry<Integer, Integer> statementsAtLine : statementsPerLine.entrySet()) {
7069
if (statementsAtLine.getValue() > 1) {
71-
getContext().createLineViolation(this, "At most one statement is allowed per line, but {0} statements were found on this line.", statementsAtLine.getKey(),
72-
statementsAtLine.getValue());
70+
String message = String.format("At most one statement is allowed per line, but %s statements were found on this line.", statementsAtLine.getValue());
71+
int lineNumber = statementsAtLine.getKey();
72+
addLineIssue(message, lineNumber);
7373
}
7474
}
7575
}

python-checks/src/main/java/org/sonar/python/checks/ParsingErrorCheck.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,24 +19,23 @@
1919
*/
2020
package org.sonar.python.checks;
2121

22-
import com.sonar.sslr.api.Grammar;
2322
import com.sonar.sslr.api.RecognitionException;
2423
import java.io.PrintWriter;
2524
import java.io.StringWriter;
2625
import org.slf4j.Logger;
2726
import org.slf4j.LoggerFactory;
2827
import org.sonar.check.Priority;
2928
import org.sonar.check.Rule;
29+
import org.sonar.python.PythonCheck;
3030
import org.sonar.squidbridge.AstScannerExceptionHandler;
3131
import org.sonar.squidbridge.annotations.SqaleConstantRemediation;
32-
import org.sonar.squidbridge.checks.SquidCheck;
3332

3433
@Rule(
3534
key = ParsingErrorCheck.CHECK_KEY,
3635
priority = Priority.MAJOR,
3736
name = "Parser failure")
3837
@SqaleConstantRemediation("30min")
39-
public class ParsingErrorCheck extends SquidCheck<Grammar> implements AstScannerExceptionHandler {
38+
public class ParsingErrorCheck extends PythonCheck implements AstScannerExceptionHandler {
4039
private static final Logger LOG = LoggerFactory.getLogger(ParsingErrorCheck.class);
4140
public static final String CHECK_KEY = "ParsingError";
4241

@@ -50,7 +49,7 @@ public void processException(Exception e) {
5049

5150
@Override
5251
public void processRecognitionException(RecognitionException e) {
53-
getContext().createLineViolation(this, e.getMessage(), e.getLine());
52+
addLineIssue(e.getMessage(), e.getLine());
5453
}
5554

5655
}

python-checks/src/main/java/org/sonar/python/checks/SameBranchCheck.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import javax.annotation.Nullable;
2626
import org.sonar.check.Priority;
2727
import org.sonar.check.Rule;
28+
import org.sonar.python.IssueLocation;
2829
import org.sonar.python.PythonCheck;
2930
import org.sonar.python.api.PythonGrammar;
3031
import org.sonar.python.api.PythonKeyword;
@@ -108,9 +109,9 @@ private void checkBranch(List<AstNode> branches, int index) {
108109
private static IssueLocation location(AstNode suiteNode, String message) {
109110
AstNode firstStatement = suiteNode.getFirstChild(PythonGrammar.STATEMENT);
110111
if (firstStatement != null) {
111-
return new IssueLocation(firstStatement, getLastNode(suiteNode), message);
112+
return IssueLocation.preciseLocation(firstStatement, getLastNode(suiteNode), message);
112113
} else {
113-
return new IssueLocation(suiteNode.getFirstChild(STMT_LIST), message);
114+
return IssueLocation.preciseLocation(suiteNode.getFirstChild(STMT_LIST), message);
114115
}
115116
}
116117

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,13 @@
2121

2222
import com.sonar.sslr.api.AstNode;
2323
import com.sonar.sslr.api.GenericTokenType;
24-
import com.sonar.sslr.api.Grammar;
24+
import java.text.MessageFormat;
2525
import org.sonar.check.Priority;
2626
import org.sonar.check.Rule;
2727
import org.sonar.check.RuleProperty;
28+
import org.sonar.python.PythonCheck;
2829
import org.sonar.squidbridge.annotations.ActivatedByDefault;
2930
import org.sonar.squidbridge.annotations.SqaleConstantRemediation;
30-
import org.sonar.squidbridge.checks.SquidCheck;
3131

3232
@Rule(
3333
key = TooManyLinesInFileCheck.CHECK_KEY,
@@ -37,7 +37,7 @@
3737
)
3838
@SqaleConstantRemediation("1h")
3939
@ActivatedByDefault
40-
public class TooManyLinesInFileCheck extends SquidCheck<Grammar> {
40+
public class TooManyLinesInFileCheck extends PythonCheck {
4141
public static final String CHECK_KEY = "S104";
4242
private static final int DEFAULT = 1000;
4343

@@ -57,7 +57,7 @@ public void visitNode(AstNode astNode) {
5757

5858
if (lines > maximum) {
5959
String message = "File \"{0}\" has {1} lines, which is greater than {2} authorized. Split it into smaller files.";
60-
getContext().createFileViolation(this, message, getContext().getFile().getName(), lines, maximum);
60+
addFileIssue(MessageFormat.format(message, getContext().getFile().getName(), lines, maximum));
6161
}
6262
}
6363
}

0 commit comments

Comments
 (0)