Skip to content

Commit 77fdcb9

Browse files
authored
NO-JIRA: Fix quality gate issues related to deprecated assertions (#2038)
* Fix issues related to switch case * Fix issues related to deprecated assertions
1 parent 4591813 commit 77fdcb9

File tree

3 files changed

+20
-22
lines changed

3 files changed

+20
-22
lines changed

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

Lines changed: 16 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,8 @@ public class StringFormat {
3838

3939
private static final String SYNTAX_ERROR_MESSAGE = "Fix this formatted string's syntax.";
4040

41-
private static final BiConsumer<SubscriptionContext, Expression> DO_NOTHING_VALIDATOR = (ctx, expr) -> {};
41+
private static final BiConsumer<SubscriptionContext, Expression> DO_NOTHING_VALIDATOR = (ctx, expr) -> {
42+
};
4243

4344
// See https://docs.python.org/3/library/stdtypes.html#printf-style-string-formatting
4445
private static final Pattern PRINTF_PARAMETER_PATTERN = Pattern.compile(
@@ -193,26 +194,22 @@ public StrFormatParser(Consumer<String> issueReporter, String value) {
193194
this.pos = 0;
194195
}
195196

196-
197197
public Optional<StringFormat> parse() {
198198
pos = 0;
199199
result = new ArrayList<>();
200200

201201
while (pos < value.length()) {
202202
char current = value.charAt(pos);
203-
switch (state) {
204-
case INIT -> {
205-
if (!tryParsingInitial(current)) {
206-
return Optional.empty();
207-
}
203+
if (state == ParseState.INIT) {
204+
if (!tryParsingInitial(current)) {
205+
return Optional.empty();
208206
}
209-
case RCURLY -> {
210-
if (current != '}') {
211-
issueReporter.accept(SYNTAX_ERROR_MESSAGE);
212-
return Optional.empty();
213-
}
214-
state = ParseState.INIT;
207+
} else if (state == ParseState.RCURLY) {
208+
if (current != '}') {
209+
issueReporter.accept(SYNTAX_ERROR_MESSAGE);
210+
return Optional.empty();
215211
}
212+
state = ParseState.INIT;
216213
}
217214

218215
pos += 1;
@@ -263,7 +260,6 @@ private boolean tryParsingField() {
263260
return successful;
264261
}
265262

266-
267263
public void reportIssue(String issue) {
268264
issueReporter.accept(issue);
269265
}
@@ -331,7 +327,7 @@ public boolean tryParse() {
331327
case FINISHED -> throw new IllegalStateException("Unexpected value: " + state);
332328
};
333329

334-
if(!successful) {
330+
if (!successful) {
335331
return false;
336332
}
337333

@@ -342,7 +338,7 @@ public boolean tryParse() {
342338
}
343339

344340
private boolean checkParserState() {
345-
if(state != FieldParseState.FINISHED) {
341+
if (state != FieldParseState.FINISHED) {
346342
parent.reportIssue(SYNTAX_ERROR_MESSAGE);
347343
return false;
348344
}
@@ -351,7 +347,7 @@ private boolean checkParserState() {
351347

352348
private boolean tryParseFormatSpecifier(char current) {
353349
if (current == '{') {
354-
if(!tryParsingNestedField()) {
350+
if (!tryParsingNestedField()) {
355351
return false;
356352
}
357353
} else if (current == '}') {
@@ -362,7 +358,7 @@ private boolean tryParseFormatSpecifier(char current) {
362358
}
363359

364360
private boolean tryParsingNestedField() {
365-
if(this.nesting > 0) {
361+
if (this.nesting > 0) {
366362
parent.reportIssue("Fix this formatted string's syntax; Deep nesting is not allowed.");
367363
return false;
368364
}
@@ -431,7 +427,6 @@ private void addCurrentField() {
431427
}
432428
}
433429

434-
435430
public static Optional<StringFormat> createFromStrFormatStyle(Consumer<String> issueReporter, String value) {
436431
// Format -> '{' [FieldName] ['!' Conversion] [':' FormatSpec*] '}'
437432
// FormatSpec -> '{' [FieldName] '}' | Character
@@ -526,7 +521,8 @@ private static BiConsumer<SubscriptionContext, Expression> printfConversionValid
526521
}
527522

528523
// No case for '%s', '%r' and '%a' - anything can be formatted with those.
529-
return (ctx, expression) -> {};
524+
return (ctx, expression) -> {
525+
};
530526
}
531527

532528
private static boolean cannotBeOfType(Expression expression, String... types) {

python-frontend/src/test/java/org/sonar/python/semantic/v2/TypeInferenceV2Test.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import java.util.Set;
2828
import java.util.stream.Stream;
2929
import org.assertj.core.api.Assertions;
30+
import org.assertj.core.api.InstanceOfAssertFactories;
3031
import org.junit.jupiter.api.Disabled;
3132
import org.junit.jupiter.api.Test;
3233
import org.mockito.Mockito;
@@ -1648,7 +1649,7 @@ def f(i):
16481649
Assertions.assertThat(lType)
16491650
.extracting(ObjectType.class::cast)
16501651
.extracting(ObjectType::attributes)
1651-
.asList()
1652+
.asInstanceOf(InstanceOfAssertFactories.LIST)
16521653
.hasSize(1)
16531654
.contains(PythonType.UNKNOWN);
16541655

python-frontend/src/test/java/org/sonar/python/types/v2/UnionTypeTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import java.util.ArrayList;
2323
import java.util.List;
2424
import java.util.Set;
25+
import org.assertj.core.api.InstanceOfAssertFactories;
2526
import org.junit.jupiter.api.Test;
2627
import org.sonar.plugins.python.api.tree.ExpressionStatement;
2728
import org.sonar.plugins.python.api.tree.FileInput;
@@ -143,7 +144,7 @@ void unionTypeCandidatesResolution() {
143144
.extracting(UnionType.class::cast)
144145
.extracting(UnionType::candidates)
145146
.extracting(ArrayList::new)
146-
.asList()
147+
.asInstanceOf(InstanceOfAssertFactories.LIST)
147148
.hasSize(2)
148149
.contains(candidate1, candidate2);
149150
}

0 commit comments

Comments
 (0)