Skip to content

Commit 79582e8

Browse files
SCANCLI-148 Support non Latin characters in scanner properties.
1 parent ce83f01 commit 79582e8

File tree

3 files changed

+20
-10
lines changed

3 files changed

+20
-10
lines changed

src/main/java/org/sonarsource/scanner/cli/Conf.java

+10-10
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121

2222
import java.io.FileInputStream;
2323
import java.io.IOException;
24-
import java.io.InputStream;
24+
import java.io.InputStreamReader;
2525
import java.nio.file.Files;
2626
import java.nio.file.Path;
2727
import java.nio.file.Paths;
@@ -35,6 +35,8 @@
3535
import org.slf4j.LoggerFactory;
3636
import org.sonarsource.scanner.lib.EnvironmentConfig;
3737

38+
import static java.nio.charset.StandardCharsets.UTF_8;
39+
3840
class Conf {
3941
private static final Logger LOG = LoggerFactory.getLogger(Conf.class);
4042

@@ -46,7 +48,6 @@ class Conf {
4648
private static final String PROPERTY_PROJECT_BASEDIR = "sonar.projectBaseDir";
4749
private static final String PROPERTY_PROJECT_CONFIG_FILE = "sonar.projectConfigFile";
4850
private static final String SONAR_PROJECT_PROPERTIES_FILENAME = "sonar-project.properties";
49-
static final String PROPERTY_SONAR_HOST_URL = "sonar.host.url";
5051
private static final String BOOTSTRAP_START_TIME = "sonar.scanner.bootstrapStartTime";
5152

5253
private final Cli cli;
@@ -92,8 +93,7 @@ private Properties loadGlobalProperties() {
9293
knownPropsAtThatPoint.putAll(loadEnvironmentProperties());
9394
knownPropsAtThatPoint.putAll(cli.properties());
9495

95-
Path settingsFile = locatePropertiesFile(knownPropsAtThatPoint, SCANNER_HOME, "conf/sonar-scanner.properties",
96-
SCANNER_SETTINGS);
96+
Path settingsFile = locatePropertiesFile(knownPropsAtThatPoint);
9797
if (settingsFile != null && Files.isRegularFile(settingsFile)) {
9898
LOG.info("Scanner configuration file: {}", settingsFile);
9999
return toProperties(settingsFile);
@@ -217,14 +217,14 @@ protected static Properties extractModuleProperties(String module, Properties pr
217217
return moduleProps;
218218
}
219219

220-
private static Path locatePropertiesFile(Properties props, String homeKey, String relativePathFromHome, String settingsKey) {
220+
private static Path locatePropertiesFile(Properties props) {
221221
Path settingsFile = null;
222-
String scannerHome = props.getProperty(homeKey, "");
222+
String scannerHome = props.getProperty(Conf.SCANNER_HOME, "");
223223
if (!"".equals(scannerHome)) {
224-
settingsFile = Paths.get(scannerHome, relativePathFromHome);
224+
settingsFile = Paths.get(scannerHome, "conf/sonar-scanner.properties");
225225
}
226226

227-
return locatePropertiesFile(settingsFile, props, settingsKey);
227+
return locatePropertiesFile(settingsFile, props, Conf.SCANNER_SETTINGS);
228228
}
229229

230230
private static Path locatePropertiesFile(@Nullable Path defaultPath, Properties props, String settingsKey) {
@@ -244,8 +244,8 @@ private static Path locatePropertiesFile(@Nullable Path defaultPath, Properties
244244

245245
private static Properties toProperties(Path file) {
246246
Properties properties = new Properties();
247-
try (InputStream in = new FileInputStream(file.toFile())) {
248-
properties.load(in);
247+
try (InputStreamReader reader = new InputStreamReader(new FileInputStream(file.toFile()), UTF_8)) {
248+
properties.load(reader);
249249
// Trim properties
250250
for (String propKey : properties.stringPropertyNames()) {
251251
properties.setProperty(propKey, properties.getProperty(propKey).trim());

src/test/java/org/sonarsource/scanner/cli/ConfTest.java

+9
Original file line numberDiff line numberDiff line change
@@ -289,4 +289,13 @@ void should_load_project_settings_using_property() throws Exception {
289289
assertThat(properties).containsEntry("sonar.prop", "expected");
290290
}
291291

292+
@Test
293+
void should_handle_non_latin_characters() throws Exception {
294+
Path home = Paths.get(getClass().getResource("ConfTest/shouldHandleNonLatinChars/project").toURI());
295+
args.setProperty("project.home", home.toAbsolutePath().toString());
296+
297+
Properties properties = conf.properties();
298+
assertThat(properties).containsEntry("project.nonlatin", "Non Latin ÇŞĞIİÖÜ");
299+
}
300+
292301
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
project.nonlatin=Non Latin ÇŞĞIİÖÜ

0 commit comments

Comments
 (0)