Skip to content

Commit abcd793

Browse files
Move nameFromExpression method to TreeUtils
1 parent 12241e6 commit abcd793

5 files changed

Lines changed: 19 additions & 23 deletions

File tree

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

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -31,14 +31,14 @@
3131
import org.sonar.plugins.python.api.symbols.Symbol;
3232
import org.sonar.plugins.python.api.tree.Expression;
3333
import org.sonar.plugins.python.api.tree.IsExpression;
34-
import org.sonar.plugins.python.api.tree.Name;
3534
import org.sonar.plugins.python.api.tree.RaiseStatement;
3635
import org.sonar.plugins.python.api.tree.Token;
3736
import org.sonar.plugins.python.api.tree.Tree;
3837
import org.sonar.plugins.python.api.types.InferredType;
3938
import org.sonar.python.types.InferredTypes;
4039
import org.sonar.python.types.TypeShed;
4140

41+
import static org.sonar.python.tree.TreeUtils.nameFromExpression;
4242
import static org.sonar.python.types.InferredTypes.containsDeclaredType;
4343
import static org.sonar.python.types.InferredTypes.typeClassLocation;
4444
import static org.sonar.python.types.InferredTypes.typeName;
@@ -168,13 +168,6 @@ private static void checkIncorrectExceptionType(SubscriptionContext ctx) {
168168
}
169169
}
170170

171-
private static String nameFromExpression(Expression expression) {
172-
if (expression.is(Tree.Kind.NAME)) {
173-
return ((Name) expression).name();
174-
}
175-
return null;
176-
}
177-
178171
private static class SillyEqualityCheck extends SillyEquality {
179172

180173
@Override

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

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@
3434
import org.sonar.plugins.python.api.tree.Tree;
3535
import org.sonar.python.tree.TreeUtils;
3636

37+
import static org.sonar.python.tree.TreeUtils.nameFromExpression;
38+
3739
public abstract class ItemOperationsType extends PythonSubscriptionCheck {
3840

3941
@Override
@@ -90,13 +92,6 @@ private void reportIssue(SubscriptionExpression subscriptionExpression, Expressi
9092
secondaries.stream().filter(Objects::nonNull).forEach(locationInFile -> preciseIssue.secondary(locationInFile, null));
9193
}
9294

93-
private static String nameFromExpression(Expression expression) {
94-
if (expression.is(Tree.Kind.NAME)) {
95-
return ((Name) expression).name();
96-
}
97-
return null;
98-
}
99-
10095
public abstract boolean isValidSubscription(Expression subscriptionObject, String requiredMethod, @Nullable String classRequiredMethod, List<LocationInFile> secondaries);
10196
public abstract String message(@Nullable String name, String missingMethod);
10297
}

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

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,11 @@
2424
import org.sonar.plugins.python.api.PythonSubscriptionCheck;
2525
import org.sonar.plugins.python.api.tree.CallExpression;
2626
import org.sonar.plugins.python.api.tree.Expression;
27-
import org.sonar.plugins.python.api.tree.Name;
2827
import org.sonar.plugins.python.api.tree.Tree;
2928
import org.sonar.plugins.python.api.types.InferredType;
3029
import org.sonar.python.types.InferredTypes;
3130

31+
import static org.sonar.python.tree.TreeUtils.nameFromExpression;
3232
import static org.sonar.python.types.InferredTypes.typeClassLocation;
3333

3434
public abstract class NonCallableCalled extends PythonSubscriptionCheck {
@@ -49,13 +49,6 @@ public void initialize(Context context) {
4949
});
5050
}
5151

52-
private static String nameFromExpression(Expression expression) {
53-
if (expression.is(Tree.Kind.NAME)) {
54-
return ((Name) expression).name();
55-
}
56-
return null;
57-
}
58-
5952
protected static String addTypeName(InferredType type) {
6053
String typeName = InferredTypes.typeName(type);
6154
if (typeName != null) {

python-frontend/src/main/java/org/sonar/python/tree/TreeUtils.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -266,6 +266,13 @@ public static boolean isBooleanLiteral(Tree tree) {
266266
return false;
267267
}
268268

269+
public static String nameFromExpression(Expression expression) {
270+
if (expression.is(Tree.Kind.NAME)) {
271+
return ((Name) expression).name();
272+
}
273+
return null;
274+
}
275+
269276
@CheckForNull
270277
public static LocationInFile locationInFile(Tree tree, @Nullable String fileId) {
271278
if (fileId == null) {

python-frontend/src/test/java/org/sonar/python/tree/TreeUtilsTest.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -327,6 +327,14 @@ public void test_isBooleanLiteral() {
327327
assertThat(TreeUtils.isBooleanLiteral(lastExpression("foo()"))).isFalse();
328328
}
329329

330+
@Test
331+
public void test_nameFromExpression() {
332+
assertThat(TreeUtils.nameFromExpression(lastExpression("my_var"))).isEqualTo("my_var");
333+
assertThat(TreeUtils.nameFromExpression(lastExpression("self.my_var"))).isNullOrEmpty();
334+
assertThat(TreeUtils.nameFromExpression(lastExpression("my_call()"))).isNullOrEmpty();
335+
assertThat(TreeUtils.nameFromExpression(lastExpression("a == b"))).isNullOrEmpty();
336+
}
337+
330338
private static boolean isOuterFunction(Tree tree) {
331339
return tree.is(Kind.FUNCDEF) && ((FunctionDef) tree).name().name().equals("outer");
332340
}

0 commit comments

Comments
 (0)