aboutsummaryrefslogtreecommitdiffstats
path: root/sonar-plugin-api/src
diff options
context:
space:
mode:
authorJulien HENRY <julien.henry@sonarsource.com>2016-07-18 11:07:22 +0200
committerJulien HENRY <julien.henry@sonarsource.com>2016-07-18 15:23:54 +0200
commit5fddece10c608fa2acbe8d1de1d6c9fa2eab6e56 (patch)
tree6ed88112d7558c3ea796d9c9f081bfdb1be68c08 /sonar-plugin-api/src
parent7cdbfc9e015093f8f2c58b43a106e6b347728bcf (diff)
downloadsonarqube-5fddece10c608fa2acbe8d1de1d6c9fa2eab6e56.tar.gz
sonarqube-5fddece10c608fa2acbe8d1de1d6c9fa2eab6e56.zip
SONAR-7876 Add SensorContext::isCancelled in the API
Diffstat (limited to 'sonar-plugin-api/src')
-rw-r--r--sonar-plugin-api/src/main/java/org/sonar/api/batch/sensor/SensorContext.java12
-rw-r--r--sonar-plugin-api/src/main/java/org/sonar/api/batch/sensor/internal/SensorContextTester.java14
-rw-r--r--sonar-plugin-api/src/test/java/org/sonar/api/batch/sensor/internal/SensorContextTesterTest.java7
3 files changed, 30 insertions, 3 deletions
diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/batch/sensor/SensorContext.java b/sonar-plugin-api/src/main/java/org/sonar/api/batch/sensor/SensorContext.java
index c2852681f60..9612521b23f 100644
--- a/sonar-plugin-api/src/main/java/org/sonar/api/batch/sensor/SensorContext.java
+++ b/sonar-plugin-api/src/main/java/org/sonar/api/batch/sensor/SensorContext.java
@@ -82,6 +82,13 @@ public interface SensorContext {
*/
SonarProduct getRuntimeProduct();
+ /**
+ * Test if a cancellation of the analysis was requested. Sensors should periodically test this flag
+ * and gracefully stop if value is true. For example it could be tested between each processed file.
+ * @since 6.0
+ */
+ boolean isCancelled();
+
// ----------- MEASURES --------------
/**
@@ -111,7 +118,7 @@ public interface SensorContext {
*/
NewSymbolTable newSymbolTable();
- // ------------ TESTS ------------
+ // ------------ COVERAGE ------------
/**
* Builder to define coverage in a file.
@@ -128,10 +135,13 @@ public interface SensorContext {
*/
NewCpdTokens newCpdTokens();
+ // ------------ ANALYSIS ERROR ------------
+
/**
* Builder to declare errors that happened while processing a source file.
* Don't forget to call {@link NewAnalisisError#save()}.
* @since 6.0
*/
NewAnalysisError newAnalysisError();
+
}
diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/batch/sensor/internal/SensorContextTester.java b/sonar-plugin-api/src/main/java/org/sonar/api/batch/sensor/internal/SensorContextTester.java
index 1b274aaecf8..a2c8cd2ac26 100644
--- a/sonar-plugin-api/src/main/java/org/sonar/api/batch/sensor/internal/SensorContextTester.java
+++ b/sonar-plugin-api/src/main/java/org/sonar/api/batch/sensor/internal/SensorContextTester.java
@@ -93,6 +93,7 @@ public class SensorContextTester implements SensorContext {
private InMemorySensorStorage sensorStorage;
private InputModule module;
private SonarQubeVersion sqVersion;
+ private boolean cancelled;
private SensorContextTester(Path moduleBaseDir) {
this.settings = new Settings();
@@ -166,6 +167,15 @@ public class SensorContextTester implements SensorContext {
}
@Override
+ public boolean isCancelled() {
+ return cancelled;
+ }
+
+ public void setCancelled(boolean cancelled) {
+ this.cancelled = cancelled;
+ }
+
+ @Override
public InputModule module() {
return module;
}
@@ -195,7 +205,7 @@ public class SensorContextTester implements SensorContext {
public Collection<Issue> allIssues() {
return sensorStorage.allIssues;
}
-
+
public Collection<AnalysisError> allAnalysisErrors() {
return sensorStorage.allAnalysisErrors;
}
@@ -252,7 +262,7 @@ public class SensorContextTester implements SensorContext {
public NewSymbolTable newSymbolTable() {
return new DefaultSymbolTable(sensorStorage);
}
-
+
@Override
public NewAnalysisError newAnalysisError() {
return new DefaultAnalysisError(sensorStorage);
diff --git a/sonar-plugin-api/src/test/java/org/sonar/api/batch/sensor/internal/SensorContextTesterTest.java b/sonar-plugin-api/src/test/java/org/sonar/api/batch/sensor/internal/SensorContextTesterTest.java
index 46fe16802a1..a4dad0ea510 100644
--- a/sonar-plugin-api/src/test/java/org/sonar/api/batch/sensor/internal/SensorContextTesterTest.java
+++ b/sonar-plugin-api/src/test/java/org/sonar/api/batch/sensor/internal/SensorContextTesterTest.java
@@ -330,4 +330,11 @@ public class SensorContextTesterTest {
.addToken(inputFile.newRange(0, 6), "public")
.save();
}
+
+ @Test
+ public void testCacnellation() {
+ assertThat(tester.isCancelled()).isFalse();
+ tester.setCancelled(true);
+ assertThat(tester.isCancelled()).isTrue();
+ }
}