Skip to content

Commit aa28c42

Browse files
committed
SONARPY-201 Drop Squid index
1 parent dc75a5c commit aa28c42

80 files changed

Lines changed: 1132 additions & 652 deletions

File tree

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/AbstractFunctionNameCheck.java

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

22+
import com.google.common.collect.ImmutableSet;
2223
import com.sonar.sslr.api.AstNode;
24+
import com.sonar.sslr.api.AstNodeType;
25+
import java.util.Set;
2326
import java.util.regex.Pattern;
2427
import org.sonar.check.RuleProperty;
2528
import org.sonar.python.PythonCheck;
@@ -36,10 +39,16 @@ public abstract class AbstractFunctionNameCheck extends PythonCheck {
3639
public String format = DEFAULT;
3740
private Pattern pattern = null;
3841

42+
private Pattern pattern() {
43+
if (pattern == null) {
44+
pattern = Pattern.compile(format);
45+
}
46+
return pattern;
47+
}
48+
3949
@Override
40-
public void init() {
41-
pattern = Pattern.compile(format);
42-
subscribeTo(PythonGrammar.FUNCDEF);
50+
public Set<AstNodeType> subscribedKinds() {
51+
return ImmutableSet.of(PythonGrammar.FUNCDEF);
4352
}
4453

4554
@Override
@@ -49,7 +58,7 @@ public void visitNode(AstNode astNode) {
4958
}
5059
AstNode nameNode = astNode.getFirstChild(PythonGrammar.FUNCNAME);
5160
String name = nameNode.getTokenValue();
52-
if (!pattern.matcher(name).matches()) {
61+
if (!pattern().matcher(name).matches()) {
5362
String message = String.format(MESSAGE, typeName(), name, this.format);
5463
addIssue(nameNode, message);
5564
}

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

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

22+
import com.google.common.collect.ImmutableSet;
2223
import com.sonar.sslr.api.AstNode;
24+
import com.sonar.sslr.api.AstNodeType;
25+
import java.util.Set;
2326
import org.sonar.check.Priority;
2427
import org.sonar.check.Rule;
2528
import org.sonar.python.PythonCheck;
@@ -42,8 +45,8 @@ public class AfterJumpStatementCheck extends PythonCheck {
4245
private static final String MESSAGE = "Remove the code after this \"%s\".";
4346

4447
@Override
45-
public void init() {
46-
subscribeTo(
48+
public Set<AstNodeType> subscribedKinds() {
49+
return ImmutableSet.of(
4750
PythonGrammar.RETURN_STMT,
4851
PythonGrammar.RAISE_STMT,
4952
PythonGrammar.BREAK_STMT,

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

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

22+
import com.google.common.collect.ImmutableSet;
2223
import com.sonar.sslr.api.AstNode;
24+
import com.sonar.sslr.api.AstNodeType;
25+
import java.util.Set;
2326
import org.sonar.check.Priority;
2427
import org.sonar.check.Rule;
2528
import org.sonar.python.PythonCheck;
@@ -38,8 +41,8 @@ public class BackslashInStringCheck extends PythonCheck {
3841
private static final String VALID_ESCAPED_CHARACTERS = "abfnrtvxnNrtuU\\'\"0123456789\n\r";
3942

4043
@Override
41-
public void init() {
42-
subscribeTo(PythonTokenType.STRING);
44+
public Set<AstNodeType> subscribedKinds() {
45+
return ImmutableSet.of(PythonTokenType.STRING);
4346
}
4447

4548
@Override

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

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

22+
import com.google.common.collect.ImmutableSet;
2223
import com.sonar.sslr.api.AstNode;
24+
import com.sonar.sslr.api.AstNodeType;
25+
import java.util.Set;
2326
import org.sonar.check.Priority;
2427
import org.sonar.check.Rule;
2528
import org.sonar.python.PythonCheck;
@@ -39,8 +42,8 @@ public class BackticksUsageCheck extends PythonCheck {
3942
public static final String CHECK_KEY = "BackticksUsage";
4043

4144
@Override
42-
public void init() {
43-
subscribeTo(PythonGrammar.ATOM);
45+
public Set<AstNodeType> subscribedKinds() {
46+
return ImmutableSet.of(PythonGrammar.ATOM);
4447
}
4548

4649
@Override

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

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

22+
import com.google.common.collect.ImmutableSet;
2223
import com.sonar.sslr.api.AstNode;
24+
import com.sonar.sslr.api.AstNodeType;
25+
import java.util.Set;
2326
import org.sonar.check.Priority;
2427
import org.sonar.check.Rule;
2528
import org.sonar.python.PythonCheck;
@@ -40,8 +43,8 @@ public class BreakContinueOutsideLoopCheck extends PythonCheck {
4043
public static final String CHECK_KEY = "S1716";
4144

4245
@Override
43-
public void init() {
44-
subscribeTo(PythonGrammar.BREAK_STMT, PythonGrammar.CONTINUE_STMT);
46+
public Set<AstNodeType> subscribedKinds() {
47+
return ImmutableSet.of(PythonGrammar.BREAK_STMT, PythonGrammar.CONTINUE_STMT);
4548
}
4649

4750
@Override

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,11 @@
2121

2222
import com.sonar.sslr.api.AstNode;
2323
import com.sonar.sslr.api.Token;
24+
import java.util.List;
2425
import org.sonar.python.api.PythonGrammar;
2526
import org.sonar.python.api.PythonPunctuator;
2627
import org.sonar.python.api.PythonTokenType;
2728

28-
import java.util.List;
29-
3029
public class CheckUtils {
3130

3231
private CheckUtils() {

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

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

22+
import com.google.common.collect.ImmutableSet;
2223
import com.sonar.sslr.api.AstNode;
24+
import com.sonar.sslr.api.AstNodeType;
25+
import java.util.Set;
2326
import org.sonar.check.Priority;
2427
import org.sonar.check.Rule;
2528
import org.sonar.check.RuleProperty;
2629
import org.sonar.python.PythonCheck;
2730
import org.sonar.python.api.PythonGrammar;
28-
import org.sonar.python.api.PythonMetric;
31+
import org.sonar.python.metrics.ComplexityVisitor;
2932
import org.sonar.squidbridge.annotations.SqaleLinearWithOffsetRemediation;
30-
import org.sonar.squidbridge.api.SourceClass;
31-
import org.sonar.squidbridge.checks.ChecksHelper;
3233

3334
@Rule(
3435
key = "ClassComplexity",
@@ -49,14 +50,13 @@ public class ClassComplexityCheck extends PythonCheck {
4950
int maximumClassComplexityThreshold = DEFAULT_MAXIMUM_CLASS_COMPLEXITY_THRESHOLD;
5051

5152
@Override
52-
public void init() {
53-
subscribeTo(PythonGrammar.CLASSDEF);
53+
public Set<AstNodeType> subscribedKinds() {
54+
return ImmutableSet.of(PythonGrammar.CLASSDEF);
5455
}
5556

5657
@Override
57-
public void leaveNode(AstNode node) {
58-
SourceClass sourceClass = (SourceClass) getContext().peekSourceCode();
59-
int complexity = ChecksHelper.getRecursiveMeasureInt(sourceClass, PythonMetric.COMPLEXITY);
58+
public void visitNode(AstNode node) {
59+
int complexity = ComplexityVisitor.complexity(node);
6060
if (complexity > maximumClassComplexityThreshold) {
6161
String message = String.format(MESSAGE, complexity, maximumClassComplexityThreshold);
6262
addIssue(node.getFirstChild(PythonGrammar.CLASSNAME), message)

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

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

22+
import com.google.common.collect.ImmutableSet;
2223
import com.sonar.sslr.api.AstNode;
24+
import com.sonar.sslr.api.AstNodeType;
25+
import java.util.Set;
2326
import java.util.regex.Pattern;
2427
import org.sonar.check.Priority;
2528
import org.sonar.check.Rule;
@@ -49,17 +52,23 @@ public class ClassNameCheck extends PythonCheck {
4952
public String format = DEFAULT;
5053
private Pattern pattern = null;
5154

55+
private Pattern pattern() {
56+
if (pattern == null) {
57+
pattern = Pattern.compile(format);
58+
}
59+
return pattern;
60+
}
61+
5262
@Override
53-
public void init() {
54-
pattern = Pattern.compile(format);
55-
subscribeTo(PythonGrammar.CLASSDEF);
63+
public Set<AstNodeType> subscribedKinds() {
64+
return ImmutableSet.of(PythonGrammar.CLASSDEF);
5665
}
5766

5867
@Override
5968
public void visitNode(AstNode astNode) {
6069
AstNode classNameNode = astNode.getFirstChild(PythonGrammar.CLASSNAME);
6170
String className = classNameNode.getTokenValue();
62-
if (!pattern.matcher(className).matches()) {
71+
if (!pattern().matcher(className).matches()) {
6372
String message = String.format(MESSAGE, className, format);
6473
addIssue(classNameNode, message);
6574
}

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

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

22+
import com.google.common.collect.ImmutableSet;
2223
import com.sonar.sslr.api.AstNode;
24+
import com.sonar.sslr.api.AstNodeType;
2325
import java.util.HashSet;
2426
import java.util.Set;
2527
import org.sonar.check.Priority;
@@ -66,8 +68,8 @@ public void setThreshold(int threshold) {
6668
}
6769

6870
@Override
69-
public void init() {
70-
subscribeTo(
71+
public Set<AstNodeType> subscribedKinds() {
72+
return ImmutableSet.of(
7173
PythonGrammar.IF_STMT,
7274
PythonKeyword.ELIF,
7375
PythonKeyword.ELSE,

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

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,11 @@
1919
*/
2020
package org.sonar.python.checks;
2121

22+
import com.google.common.collect.ImmutableSet;
2223
import com.sonar.sslr.api.AstNode;
24+
import com.sonar.sslr.api.AstNodeType;
2325
import java.util.List;
26+
import java.util.Set;
2427
import org.sonar.check.Priority;
2528
import org.sonar.check.Rule;
2629
import org.sonar.python.PythonCheck;
@@ -43,8 +46,8 @@ public class CollapsibleIfStatementsCheck extends PythonCheck {
4346
private static final String MESSAGE = "Merge this if statement with the enclosing one.";
4447

4548
@Override
46-
public void init() {
47-
subscribeTo(PythonGrammar.IF_STMT);
49+
public Set<AstNodeType> subscribedKinds() {
50+
return ImmutableSet.of(PythonGrammar.IF_STMT);
4851
}
4952

5053
@Override

0 commit comments

Comments
 (0)