Skip to content

Commit 03745e1

Browse files
Allow java version to be specified (#40)
* Merge Sonar's Options and CC's Config * Ensure sonar.java.source can be set * Set java version
1 parent c02dcde commit 03745e1

File tree

9 files changed

+52
-17
lines changed

9 files changed

+52
-17
lines changed

.codeclimate.yml

+1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ engines:
77
squid:S00112: # Requires dedicated exceptions even for tests
88
enabled: false
99
config:
10+
sonar.java.source: 1.8
1011
tests_patterns:
1112
- src/test/**
1213
exclude_paths:

fixtures/java_source_version/Main.java

Whitespace-only changes.
+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"enabled": true,
3+
"config": {
4+
"sonar.java.source": "1.6"
5+
}
6+
}

src/main/java/cc/App.java

+1-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import cc.files.Finder;
55
import org.sonarlint.cli.EngineWrapper;
66
import org.sonarlint.cli.InputFileFinder;
7-
import org.sonarlint.cli.Options;
87
import org.sonarlint.cli.config.ConfigurationReader;
98
import org.sonarlint.cli.report.ReportFactory;
109
import org.sonarlint.cli.util.System2;
@@ -33,7 +32,7 @@ public static void execute(System2 system) {
3332
SonarLintFactory sonarLintFactory = new SonarLintFactory(reader, config.getSonarlintDir());
3433
Path projectHome = getProjectHome(system);
3534

36-
int exitCode = new EngineWrapper(new Options(), sonarLintFactory, reportFactory, fileFinder, projectHome).run();
35+
int exitCode = new EngineWrapper(config, sonarLintFactory, reportFactory, fileFinder, projectHome).run();
3736
system.exit(exitCode);
3837
} catch (Exception e) {
3938
e.printStackTrace(System.err);

src/main/java/cc/Config.java

+21-12
Original file line numberDiff line numberDiff line change
@@ -4,40 +4,49 @@
44
import com.google.gson.Gson;
55
import com.google.gson.GsonBuilder;
66
import com.google.gson.stream.JsonReader;
7+
import org.sonarlint.cli.Options;
78

89
import java.io.FileReader;
910
import java.nio.charset.Charset;
1011
import java.nio.file.Path;
1112
import java.nio.file.Paths;
12-
import java.util.Arrays;
13-
import java.util.List;
13+
import java.util.*;
1414

15-
public class Config {
15+
public class Config extends Options {
1616
private List<String> includePaths = Arrays.asList("");
17-
private EngineConfig config = new EngineConfig();
18-
19-
private class EngineConfig {
20-
String charset;
21-
List<String> testsPatterns;
22-
String sonarlintDir;
23-
}
17+
private Map<String, Object> config = new LinkedHashMap<>();
2418

2519
public List<String> getIncludePaths() {
2620
return includePaths;
2721
}
2822

2923
public Charset getCharset() {
30-
return createCharset(config.charset);
24+
return createCharset(charset());
25+
}
26+
27+
@Override
28+
public String charset() {
29+
return (String) config.get("charset");
3130
}
3231

3332
public String getTestsPatterns() {
34-
return joinPatterns(config.testsPatterns);
33+
List<String> testsPatterns = (List<String>) config.get("tests_patterns");
34+
return joinPatterns(testsPatterns);
3535
}
3636

3737
public Path getSonarlintDir() {
3838
return Paths.get("/tmp/sonarlint");
3939
}
4040

41+
@Override
42+
public Properties properties() {
43+
Properties properties = super.properties();
44+
for (Map.Entry entry : config.entrySet()) {
45+
properties.put(entry.getKey(), entry.getValue().toString());
46+
}
47+
return properties;
48+
}
49+
4150
String joinPatterns(List<String> patterns) {
4251
if (patterns == null) {
4352
return null;

src/test/java/cc/ConfigTest.java

+7-1
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,16 @@ public void null_tests_patterns_does_not_cause_error() throws Exception {
4444
Config config = Config.gson().fromJson("{\"config\":{}}", Config.class);
4545
assertThat(config.getTestsPatterns()).isNull();
4646
}
47-
4847
@Test
4948
public void has_default_work_dir() throws Exception {
5049
Config config = Config.gson().fromJson("{}", Config.class);
5150
assertThat(config.getSonarlintDir()).isEqualTo(Paths.get("/tmp/sonarlint"));
5251
}
52+
53+
@Test
54+
public void include_generic_properties() throws Exception {
55+
Config config = Config.gson().fromJson("{\"config\":{\"key\":\"value\",\"charset\":\"utf-16\"}}", Config.class);
56+
assertThat(config.properties().getProperty("key")).isEqualTo("value");
57+
assertThat(config.getCharset()).isEqualTo(Charset.forName("UTF-16"));
58+
}
5359
}

src/test/java/integration/ConfigurationOptionsTest.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -66,4 +66,4 @@ public void capture_exceptions_and_log_to_stderr() throws Exception {
6666
assertThat(system.exitCode).isEqualTo(1);
6767
assertThat(stderr.toString()).contains("Can't find project home. System property not set: project.home");
6868
}
69-
}
69+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package integration;
2+
3+
import org.junit.Test;
4+
import support.Shell;
5+
6+
import static org.assertj.core.api.Assertions.assertThat;
7+
8+
public class JavaSourceVersion {
9+
@Test
10+
public void specify_java_source_version_through_config() throws Exception {
11+
Shell.Process process = Shell.execute("build/codeclimate-sonar fixtures/java_source_version fixtures/java_source_version/config.json");
12+
assertThat(process.stderr).contains("Configured Java source version (sonar.java.source): 6");
13+
}
14+
}

src/test/java/support/SystemHelper.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -35,4 +35,4 @@ public void setProperty(String key, String value) {
3535
public void removeProperty(String key) {
3636
properties.remove(key);
3737
}
38-
}
38+
}

0 commit comments

Comments
 (0)