Skip to content

Commit 64baa48

Browse files
committed
Updated complexity test
1 parent f165f8b commit 64baa48

File tree

3 files changed

+51
-18
lines changed

3 files changed

+51
-18
lines changed

dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/DartSensor.java

Lines changed: 38 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,14 @@
3131

3232
import java.io.IOException;
3333
import java.nio.charset.Charset;
34+
import java.util.concurrent.ExecutorService;
35+
import java.util.concurrent.Executors;
36+
import java.util.concurrent.TimeUnit;
3437

3538
public class DartSensor implements Sensor {
3639

3740
private static final Logger LOGGER = LoggerFactory.getLogger(DartSensor.class);
41+
private static final int EXECUTOR_TIMEOUT = 10000;
3842

3943
@Override
4044
public void describe(SensorDescriptor sensorDescriptor) {
@@ -53,29 +57,46 @@ public void execute(SensorContext sensorContext) {
5357
FilePredicate dartAndMain = sensorContext.fileSystem().predicates().and(hasDart, isMain);
5458
FilePredicate dartAndTest = sensorContext.fileSystem().predicates().and(hasDart, isTest);
5559
final Charset charset = sensorContext.fileSystem().encoding();
60+
61+
final ExecutorService executorService = Executors.newWorkStealingPool();
62+
5663
for(InputFile inf : sensorContext.fileSystem().inputFiles(dartAndMain)){
57-
// Visit source files
58-
try {
59-
final AntlrContext antlrContext = AntlrContext.fromInputFile(inf, charset);
60-
ParseTreeItemVisitor visitor = new CustomTreeVisitor(new HighlighterVisitor(),
61-
new SourceLinesVisitor(), new CyclomaticComplexityVisitor());
62-
visitor.fillContext(sensorContext, antlrContext);
63-
} catch (IOException e) {
64-
LOGGER.warn("Unexpected error while analyzing file " + inf.filename(), e);
65-
}
64+
65+
executorService.execute(() -> {
66+
// Visit source files
67+
try {
68+
final AntlrContext antlrContext = AntlrContext.fromInputFile(inf, charset);
69+
ParseTreeItemVisitor visitor = new CustomTreeVisitor(new HighlighterVisitor(),
70+
new SourceLinesVisitor(), new CyclomaticComplexityVisitor());
71+
visitor.fillContext(sensorContext, antlrContext);
72+
} catch (IOException e) {
73+
LOGGER.warn("Unexpected error while analyzing file " + inf.filename(), e);
74+
}
75+
});
6676

6777
}
6878

6979
for(InputFile inf : sensorContext.fileSystem().inputFiles(dartAndTest)){
70-
// Visit test files (for syntax highlighting only)
71-
try {
72-
final AntlrContext antlrContext = AntlrContext.fromInputFile(inf, charset);
73-
ParseTreeItemVisitor visitor = new CustomTreeVisitor(new HighlighterVisitor());
74-
visitor.fillContext(sensorContext, antlrContext);
75-
} catch (IOException e) {
76-
LOGGER.warn("Unexpected error while analyzing file " + inf.filename(), e);
77-
}
7880

81+
executorService.execute(() -> {
82+
// Visit test files (for syntax highlighting only)
83+
try {
84+
final AntlrContext antlrContext = AntlrContext.fromInputFile(inf, charset);
85+
ParseTreeItemVisitor visitor = new CustomTreeVisitor(new HighlighterVisitor());
86+
visitor.fillContext(sensorContext, antlrContext);
87+
} catch (IOException e) {
88+
LOGGER.warn("Unexpected error while analyzing file " + inf.filename(), e);
89+
}
90+
});
91+
92+
}
93+
94+
try {
95+
executorService.shutdown();
96+
executorService.awaitTermination(EXECUTOR_TIMEOUT, TimeUnit.SECONDS);
97+
executorService.shutdownNow();
98+
} catch (final InterruptedException e) {
99+
LOGGER.warn("Unexpected error while running waiting for executor service to finish", e);
79100
}
80101

81102
}

dart-lang/src/test/java/fr/insideapp/sonarqube/dart/lang/antlr/CyclomaticComplexityVisitorTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ public void complexity() throws IOException {
4747
CyclomaticComplexityVisitor visitor = new CyclomaticComplexityVisitor();
4848
CustomTreeVisitor customTreeVisitor = new CustomTreeVisitor(visitor);
4949
customTreeVisitor.visit(root);
50-
assertThat(visitor.getComplexity()).isEqualTo(5);
50+
assertThat(visitor.getComplexity()).isEqualTo(7);
5151
}
5252

5353
}

dart-lang/src/test/resources/dart/complexity.dart

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,4 +19,16 @@ void main() {
1919

2020
void func() {
2121
print('hello');
22+
}
23+
24+
class TestClass {
25+
var test = 'test';
26+
27+
TestClass() {
28+
// Constructor
29+
}
30+
31+
void method() {
32+
return 'ok';
33+
}
2234
}

0 commit comments

Comments
 (0)