Skip to content

Commit f987259

Browse files
committed
SCANJLIB-222 Use slf4j as logging facade
1 parent 5e603a1 commit f987259

48 files changed

Lines changed: 456 additions & 510 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

its/it-simple-scanner/pom.xml

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
1+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
2+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
23
<modelVersion>4.0.0</modelVersion>
34
<parent>
45
<groupId>org.sonarsource.scanner.lib</groupId>
@@ -16,6 +17,11 @@
1617
<artifactId>sonar-scanner-java-library</artifactId>
1718
<version>${project.version}</version>
1819
</dependency>
20+
<dependency>
21+
<groupId>org.slf4j</groupId>
22+
<artifactId>slf4j-simple</artifactId>
23+
<version>2.0.13</version>
24+
</dependency>
1925
</dependencies>
2026

2127
<build>

its/it-simple-scanner/src/main/java/com/sonar/scanner/lib/it/Main.java

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,35 +22,31 @@
2222
import java.util.HashMap;
2323
import java.util.Map;
2424
import org.sonarsource.scanner.lib.EnvironmentConfig;
25-
import org.sonarsource.scanner.lib.LogOutput;
2625
import org.sonarsource.scanner.lib.ScannerEngineBootstrapper;
27-
import org.sonarsource.scanner.lib.StdOutLogOutput;
2826

2927
public class Main {
3028
public static void main(String[] args) {
31-
LogOutput logOutput = new StdOutLogOutput();
3229
try {
33-
Map<String, String> props = new HashMap<>();
3430

35-
props.putAll(EnvironmentConfig.load(logOutput));
31+
Map<String, String> props = new HashMap<>(EnvironmentConfig.load());
3632

3733
for (String k : System.getProperties().stringPropertyNames()) {
3834
if (k.startsWith("sonar.")) {
3935
props.put(k, System.getProperty(k));
4036
}
4137
}
4238

43-
runProject(props, logOutput);
39+
runProject(props);
4440
} catch (Exception e) {
4541
e.printStackTrace();
4642
System.exit(1);
4743
}
4844
System.exit(0);
4945
}
5046

51-
private static void runProject(Map<String, String> props, LogOutput logOutput) throws Exception {
47+
private static void runProject(Map<String, String> props) throws Exception {
5248

53-
try (var scannerEngine = ScannerEngineBootstrapper.create("Simple Scanner", "1.0", logOutput)
49+
try (var scannerEngine = ScannerEngineBootstrapper.create("Simple Scanner", "1.0")
5450
.addBootstrapProperties(props)
5551
.bootstrap()) {
5652
scannerEngine.analyze(props);

lib/pom.xml

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,11 @@
1111
<name>SonarScanner Java Library</name>
1212

1313
<dependencies>
14-
<!-- Dependencies with scope "compile" are shaded and removed from transitive dependencies-->
14+
<dependency>
15+
<groupId>org.slf4j</groupId>
16+
<artifactId>slf4j-api</artifactId>
17+
<version>2.0.13</version>
18+
</dependency>
1519
<dependency>
1620
<groupId>com.squareup.okhttp3</groupId>
1721
<artifactId>okhttp</artifactId>
@@ -98,6 +102,18 @@
98102
<version>2.2.0</version>
99103
<scope>test</scope>
100104
</dependency>
105+
<dependency>
106+
<groupId>ch.qos.logback</groupId>
107+
<artifactId>logback-classic</artifactId>
108+
<version>1.5.6</version>
109+
<scope>test</scope>
110+
</dependency>
111+
<dependency>
112+
<groupId>org.awaitility</groupId>
113+
<artifactId>awaitility</artifactId>
114+
<version>4.2.0</version>
115+
<scope>test</scope>
116+
</dependency>
101117
</dependencies>
102118

103119
<build>

lib/src/main/java/org/sonarsource/scanner/lib/Dirs.java

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,12 @@
2424
import java.nio.file.Paths;
2525
import java.util.Map;
2626
import java.util.Optional;
27-
import org.sonarsource.scanner.lib.internal.cache.Logger;
27+
import org.slf4j.Logger;
28+
import org.slf4j.LoggerFactory;
2829

2930
class Dirs {
3031

31-
private final Logger logger;
32-
33-
Dirs(Logger logger) {
34-
this.logger = logger;
35-
}
32+
private static final Logger LOG = LoggerFactory.getLogger(Dirs.class);
3633

3734
void init(Map<String, String> p) {
3835
String pathString = Optional.ofNullable(p.get(AnalysisProperties.PROJECT_BASEDIR)).orElse("");
@@ -44,15 +41,16 @@ void init(Map<String, String> p) {
4441

4542
Path workDirPath;
4643
pathString = Optional.ofNullable(p.get(ScannerProperties.WORK_DIR)).orElse("");
47-
if ("".equals(pathString.trim())) {
44+
if (pathString.trim().isEmpty()) {
4845
workDirPath = absoluteProjectPath.resolve(".scannerwork");
4946
} else {
5047
workDirPath = Paths.get(pathString);
5148
if (!workDirPath.isAbsolute()) {
5249
workDirPath = absoluteProjectPath.resolve(pathString);
5350
}
5451
}
55-
p.put(ScannerProperties.WORK_DIR, workDirPath.normalize().toString());
56-
logger.debug("Work directory: " + workDirPath.normalize().toString());
52+
var normalized = workDirPath.normalize().toString();
53+
p.put(ScannerProperties.WORK_DIR, normalized);
54+
LOG.debug("Work directory: {}", normalized);
5755
}
5856
}

lib/src/main/java/org/sonarsource/scanner/lib/EnvironmentConfig.java

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,16 @@
2525
import java.util.Optional;
2626
import java.util.stream.Stream;
2727
import org.apache.commons.lang3.StringUtils;
28+
import org.slf4j.Logger;
29+
import org.slf4j.LoggerFactory;
2830

2931
/**
3032
* Utility class to load configuration from environment variables.
3133
*/
3234
public class EnvironmentConfig {
3335

36+
private static final Logger LOG = LoggerFactory.getLogger(EnvironmentConfig.class);
37+
3438
private static final String SONAR_SCANNER_JSON_PARAMS = "SONAR_SCANNER_JSON_PARAMS";
3539
private static final String SONARQUBE_SCANNER_PARAMS = "SONARQUBE_SCANNER_PARAMS";
3640
private static final String GENERIC_ENV_PREFIX = "SONAR_SCANNER_";
@@ -42,41 +46,41 @@ private EnvironmentConfig() {
4246
// only static methods
4347
}
4448

45-
public static Map<String, String> load(LogOutput logger) {
46-
return load(System.getenv(), logger);
49+
public static Map<String, String> load() {
50+
return load(System.getenv());
4751
}
4852

49-
public static Map<String, String> load(Map<String, String> env, LogOutput logger) {
53+
public static Map<String, String> load(Map<String, String> env) {
5054
var loadedProps = new HashMap<String, String>();
5155
Optional.ofNullable(env.get(SONAR_HOST_URL_ENV_VAR)).ifPresent(url -> loadedProps.put(ScannerProperties.HOST_URL, url));
5256
Optional.ofNullable(env.get(SONAR_USER_HOME_ENV_VAR)).ifPresent(path -> loadedProps.put(ScannerProperties.SONAR_USER_HOME, path));
5357
Optional.ofNullable(env.get(TOKEN_ENV_VARIABLE)).ifPresent(path -> loadedProps.put(ScannerProperties.SONAR_TOKEN, path));
5458
env.forEach((key, value) -> {
5559
if (!key.equals(SONAR_SCANNER_JSON_PARAMS) && key.startsWith(GENERIC_ENV_PREFIX)) {
56-
processEnvVariable(key, value, loadedProps, logger);
60+
processEnvVariable(key, value, loadedProps);
5761
}
5862
});
5963
var jsonParams = env.get(SONAR_SCANNER_JSON_PARAMS);
6064
var oldJsonParams = env.get(SONARQUBE_SCANNER_PARAMS);
6165
if (jsonParams != null) {
6266
if (oldJsonParams != null && !oldJsonParams.equals(jsonParams)) {
63-
logger.log("Ignoring environment variable '" + SONARQUBE_SCANNER_PARAMS + "' because '" + SONAR_SCANNER_JSON_PARAMS + "' is set", LogOutput.Level.WARN);
67+
LOG.warn("Ignoring environment variable '{}' because '{}' is set", SONARQUBE_SCANNER_PARAMS, SONAR_SCANNER_JSON_PARAMS);
6468
}
65-
parseJsonPropertiesFromEnv(jsonParams, loadedProps, SONAR_SCANNER_JSON_PARAMS, logger);
69+
parseJsonPropertiesFromEnv(jsonParams, loadedProps, SONAR_SCANNER_JSON_PARAMS);
6670
} else if (oldJsonParams != null) {
67-
parseJsonPropertiesFromEnv(oldJsonParams, loadedProps, SONARQUBE_SCANNER_PARAMS, logger);
71+
parseJsonPropertiesFromEnv(oldJsonParams, loadedProps, SONARQUBE_SCANNER_PARAMS);
6872
}
6973
return loadedProps;
7074
}
7175

72-
private static void parseJsonPropertiesFromEnv(String jsonParams, Map<String, String> inputProperties, String envVariableName, LogOutput logger) {
76+
private static void parseJsonPropertiesFromEnv(String jsonParams, Map<String, String> inputProperties, String envVariableName) {
7377
try {
7478
var jsonProperties = new Gson().<Map<String, String>>fromJson(jsonParams, Map.class);
7579
if (jsonProperties != null) {
7680
jsonProperties.forEach((key, value) -> {
7781
if (inputProperties.containsKey(key)) {
7882
if (!inputProperties.get(key).equals(value)) {
79-
logger.log("Ignoring property '" + key + "' from env variable '" + envVariableName + "' because it is already defined", LogOutput.Level.WARN);
83+
LOG.warn("Ignoring property '{}' from env variable '{}' because it is already defined", key, envVariableName);
8084
}
8185
} else {
8286
inputProperties.put(key, value);
@@ -88,7 +92,7 @@ private static void parseJsonPropertiesFromEnv(String jsonParams, Map<String, St
8892
}
8993
}
9094

91-
private static void processEnvVariable(String key, String value, Map<String, String> inputProperties, LogOutput logger) {
95+
private static void processEnvVariable(String key, String value, Map<String, String> inputProperties) {
9296
var suffix = key.substring(GENERIC_ENV_PREFIX.length());
9397
if (suffix.isEmpty()) {
9498
return;
@@ -99,7 +103,7 @@ private static void processEnvVariable(String key, String value, Map<String, Str
99103
var propKey = "sonar.scanner." + toCamelCase;
100104
if (inputProperties.containsKey(propKey)) {
101105
if (!inputProperties.get(propKey).equals(value)) {
102-
logger.log("Ignoring environment variable '" + key + "' because it is already defined in the properties", LogOutput.Level.WARN);
106+
LOG.warn("Ignoring environment variable '{}' because it is already defined in the properties", key);
103107
}
104108
} else {
105109
inputProperties.put(propKey, value);

lib/src/main/java/org/sonarsource/scanner/lib/InProcessScannerEngineFacade.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,20 +22,21 @@
2222
import java.util.Map;
2323
import javax.annotation.Nullable;
2424
import org.sonarsource.scanner.lib.internal.IsolatedLauncherFactory;
25+
import org.sonarsource.scanner.lib.internal.Slf4jLogOutputAdapter;
2526

2627
class InProcessScannerEngineFacade extends ScannerEngineFacade {
28+
2729
private final IsolatedLauncherFactory.IsolatedLauncherAndClassloader launcherAndCl;
2830

2931
InProcessScannerEngineFacade(Map<String, String> bootstrapProperties, IsolatedLauncherFactory.IsolatedLauncherAndClassloader launcherAndCl,
30-
LogOutput logOutput, boolean isSonarCloud, @Nullable String serverVersion) {
31-
super(bootstrapProperties, logOutput, isSonarCloud, serverVersion, launcherAndCl.wasEngineCacheHit(), null);
32+
boolean isSonarCloud, @Nullable String serverVersion) {
33+
super(bootstrapProperties, isSonarCloud, serverVersion, launcherAndCl.wasEngineCacheHit(), null);
3234
this.launcherAndCl = launcherAndCl;
3335
}
3436

3537
@Override
3638
void doAnalyze(Map<String, String> allProps) {
37-
launcherAndCl.getLauncher().execute(allProps, (formattedMessage, level) -> logOutput.log(formattedMessage,
38-
LogOutput.Level.valueOf(level.name())));
39+
launcherAndCl.getLauncher().execute(allProps, new Slf4jLogOutputAdapter());
3940
}
4041

4142
@Override

lib/src/main/java/org/sonarsource/scanner/lib/LoggerAdapter.java

Lines changed: 0 additions & 65 deletions
This file was deleted.

lib/src/main/java/org/sonarsource/scanner/lib/NewScannerEngineFacade.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,9 @@
2626
class NewScannerEngineFacade extends ScannerEngineFacade {
2727
private final ScannerEngineLauncher launcher;
2828

29-
NewScannerEngineFacade(Map<String, String> bootstrapProperties, ScannerEngineLauncher launcher, LogOutput logOutput,
29+
NewScannerEngineFacade(Map<String, String> bootstrapProperties, ScannerEngineLauncher launcher,
3030
boolean isSonarCloud, @Nullable String serverVersion) {
31-
super(bootstrapProperties, logOutput, isSonarCloud, serverVersion, launcher.isEngineCacheHit(), launcher.getJreCacheHit());
31+
super(bootstrapProperties, isSonarCloud, serverVersion, launcher.isEngineCacheHit(), launcher.getJreCacheHit());
3232
this.launcher = launcher;
3333
}
3434

lib/src/main/java/org/sonarsource/scanner/lib/ScannerEngineBootstrapper.java

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@
3636
import org.sonarsource.scanner.lib.internal.Paths2;
3737
import org.sonarsource.scanner.lib.internal.ScannerEngineLauncherFactory;
3838
import org.sonarsource.scanner.lib.internal.cache.FileCache;
39-
import org.sonarsource.scanner.lib.internal.cache.Logger;
4039
import org.sonarsource.scanner.lib.internal.http.ServerConnection;
4140
import org.sonarsource.scanner.lib.internal.util.VersionUtils;
4241

@@ -54,30 +53,25 @@ public class ScannerEngineBootstrapper {
5453

5554
private final IsolatedLauncherFactory launcherFactory;
5655
private final ScannerEngineLauncherFactory scannerEngineLauncherFactory;
57-
private final LogOutput logOutput;
5856
private final Map<String, String> bootstrapProperties = new HashMap<>();
59-
private final Logger logger;
6057
private final ServerConnection serverConnection;
6158
private final System2 system;
6259

63-
ScannerEngineBootstrapper(String app, String version, LogOutput logOutput, System2 system,
60+
ScannerEngineBootstrapper(String app, String version, System2 system,
6461
ServerConnection serverConnection, IsolatedLauncherFactory launcherFactory,
6562
ScannerEngineLauncherFactory scannerEngineLauncherFactory) {
66-
this.logOutput = logOutput;
6763
this.system = system;
68-
this.logger = new LoggerAdapter(logOutput);
6964
this.serverConnection = serverConnection;
7065
this.launcherFactory = launcherFactory;
7166
this.scannerEngineLauncherFactory = scannerEngineLauncherFactory;
7267
this.setBootstrapProperty(InternalProperties.SCANNER_APP, app)
7368
.setBootstrapProperty(InternalProperties.SCANNER_APP_VERSION, version);
7469
}
7570

76-
public static ScannerEngineBootstrapper create(String app, String version, LogOutput logOutput) {
71+
public static ScannerEngineBootstrapper create(String app, String version) {
7772
System2 system = new System2();
78-
LoggerAdapter logger = new LoggerAdapter(logOutput);
79-
return new ScannerEngineBootstrapper(app, version, logOutput, system, new ServerConnection(logger),
80-
new IsolatedLauncherFactory(logger), new ScannerEngineLauncherFactory(logger, system));
73+
return new ScannerEngineBootstrapper(app, version, system, new ServerConnection(),
74+
new IsolatedLauncherFactory(), new ScannerEngineLauncherFactory(system));
8175
}
8276

8377
/**
@@ -108,21 +102,21 @@ public ScannerEngineFacade bootstrap() {
108102
var isSonarCloud = isSonarCloud(properties);
109103
var isSimulation = properties.containsKey(InternalProperties.SCANNER_DUMP_TO_FILE);
110104
var sonarUserHome = resolveSonarUserHome(properties);
111-
var fileCache = FileCache.create(sonarUserHome, logger);
105+
var fileCache = FileCache.create(sonarUserHome);
112106
serverConnection.init(properties, sonarUserHome);
113107
String serverVersion = null;
114108
if (!isSonarCloud) {
115109
serverVersion = getServerVersion(serverConnection, isSimulation, properties);
116110
}
117111

118112
if (isSimulation) {
119-
return new SimulationScannerEngineFacade(properties, logOutput, isSonarCloud, serverVersion);
113+
return new SimulationScannerEngineFacade(properties, isSonarCloud, serverVersion);
120114
} else if (isSonarCloud || VersionUtils.isAtLeast(serverVersion, SQ_VERSION_NEW_BOOTSTRAPPING)) {
121115
var launcher = scannerEngineLauncherFactory.createLauncher(serverConnection, fileCache, properties);
122-
return new NewScannerEngineFacade(properties, launcher, logOutput, isSonarCloud, serverVersion);
116+
return new NewScannerEngineFacade(properties, launcher, isSonarCloud, serverVersion);
123117
} else {
124118
var launcher = launcherFactory.createLauncher(rules, serverConnection, fileCache);
125-
return new InProcessScannerEngineFacade(properties, launcher, logOutput, false, serverVersion);
119+
return new InProcessScannerEngineFacade(properties, launcher, false, serverVersion);
126120
}
127121
}
128122

@@ -158,7 +152,7 @@ private void initBootstrapDefaultValues() {
158152
setBootstrapPropertyIfNotAlreadySet(ScannerProperties.API_BASE_URL,
159153
isSonarCloud(bootstrapProperties) ? SONARCLOUD_REST_API : (bootstrapProperties.get(ScannerProperties.HOST_URL) + "/api/v2"));
160154
if (!bootstrapProperties.containsKey(SCANNER_OS)) {
161-
setBootstrapProperty(SCANNER_OS, new OsResolver(system, new Paths2(), logger).getOs().name().toLowerCase(Locale.ENGLISH));
155+
setBootstrapProperty(SCANNER_OS, new OsResolver(system, new Paths2()).getOs().name().toLowerCase(Locale.ENGLISH));
162156
}
163157
setBootstrapPropertyIfNotAlreadySet(SCANNER_ARCH, system.getProperty("os.arch"));
164158
}

0 commit comments

Comments
 (0)