diff --git a/pom.xml b/pom.xml index bc64287ff61..5715209e3d6 100644 --- a/pom.xml +++ b/pom.xml @@ -87,9 +87,9 @@ 6.2.0.202206071550-r 5.9.3 3.5.0 - 1.7.21 - 10.1.0.73491 - 10.1.0.809 + 1.7.36 + 10.4.1.88267 + 10.7.0.2191 4.9.0.1920 2.8.9 2.7.0.1482 @@ -176,6 +176,11 @@ xz 1.9 + + org.slf4j + slf4j-api + ${slf4j.version} + @@ -248,12 +253,7 @@ ${project.version} provided - - org.slf4j - slf4j-api - ${slf4j.version} - provided - + org.sonarsource.api.plugin diff --git a/sonar-plugin/css/src/main/java/org/sonar/css/StylelintReportSensor.java b/sonar-plugin/css/src/main/java/org/sonar/css/StylelintReportSensor.java index a50531e4135..66e2a9946e1 100644 --- a/sonar-plugin/css/src/main/java/org/sonar/css/StylelintReportSensor.java +++ b/sonar-plugin/css/src/main/java/org/sonar/css/StylelintReportSensor.java @@ -32,6 +32,8 @@ import javax.annotation.Nullable; import org.apache.commons.io.ByteOrderMark; import org.apache.commons.io.input.BOMInputStream; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.api.batch.fs.FilePredicates; import org.sonar.api.batch.fs.InputFile; import org.sonar.api.batch.rule.CheckFactory; @@ -40,8 +42,6 @@ import org.sonar.api.batch.sensor.SensorDescriptor; import org.sonar.api.batch.sensor.issue.NewExternalIssue; import org.sonar.api.batch.sensor.issue.NewIssueLocation; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; import org.sonar.css.StylelintReport.Issue; import org.sonar.css.StylelintReport.IssuesPerFile; import org.sonarsource.analyzer.commons.ExternalReportProvider; @@ -53,7 +53,7 @@ public class StylelintReportSensor implements Sensor { public static final String STYLELINT_REPORT_PATHS = "sonar.css.stylelint.reportPaths"; public static final String STYLELINT_REPORT_PATHS_DEFAULT_VALUE = ""; - private static final Logger LOG = Loggers.get(StylelintReportSensor.class); + private static final Logger LOG = LoggerFactory.getLogger(StylelintReportSensor.class); private static final String FILE_EXCEPTION_MESSAGE = "No issues information will be saved as the report file can't be read."; private static final ByteOrderMark[] BYTE_ORDER_MARKS = { diff --git a/sonar-plugin/css/src/main/java/org/sonar/css/metrics/CssMetricSensor.java b/sonar-plugin/css/src/main/java/org/sonar/css/metrics/CssMetricSensor.java index 906237d4283..dfd70c94ae0 100644 --- a/sonar-plugin/css/src/main/java/org/sonar/css/metrics/CssMetricSensor.java +++ b/sonar-plugin/css/src/main/java/org/sonar/css/metrics/CssMetricSensor.java @@ -23,6 +23,8 @@ import java.util.HashSet; import java.util.List; import java.util.Set; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.api.SonarProduct; import org.sonar.api.SonarRuntime; import org.sonar.api.batch.fs.FileSystem; @@ -36,13 +38,11 @@ import org.sonar.api.measures.FileLinesContext; import org.sonar.api.measures.FileLinesContextFactory; import org.sonar.api.utils.Version; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; import org.sonar.css.CssLanguage; public class CssMetricSensor implements Sensor { - private static final Logger LOG = Loggers.get(CssMetricSensor.class); + private static final Logger LOG = LoggerFactory.getLogger(CssMetricSensor.class); private final SonarRuntime sonarRuntime; private final FileLinesContextFactory fileLinesContextFactory; diff --git a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/JavaScriptPlugin.java b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/JavaScriptPlugin.java index 34bd5636cac..f42d8b4f524 100644 --- a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/JavaScriptPlugin.java +++ b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/JavaScriptPlugin.java @@ -19,13 +19,13 @@ */ package org.sonar.plugins.javascript; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.api.Plugin; import org.sonar.api.PropertyType; import org.sonar.api.SonarProduct; import org.sonar.api.config.PropertyDefinition; import org.sonar.api.resources.Qualifiers; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; import org.sonar.css.CssLanguage; import org.sonar.css.CssProfileDefinition; import org.sonar.css.CssRulesDefinition; @@ -61,7 +61,7 @@ public class JavaScriptPlugin implements Plugin { public static final String TYPESCRIPT_VERSION = "5.3.2"; - private static final Logger LOG = Loggers.get(JavaScriptPlugin.class); + private static final Logger LOG = LoggerFactory.getLogger(JavaScriptPlugin.class); // Subcategories diff --git a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/JavaScriptProfilesDefinition.java b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/JavaScriptProfilesDefinition.java index d7ce9650860..934455d9444 100644 --- a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/JavaScriptProfilesDefinition.java +++ b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/JavaScriptProfilesDefinition.java @@ -27,10 +27,10 @@ import java.util.Map; import java.util.Set; import java.util.stream.Collectors; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.api.rule.RuleKey; import org.sonar.api.server.profile.BuiltInQualityProfilesDefinition; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; import org.sonar.check.Rule; import org.sonar.javascript.checks.CheckList; import org.sonar.plugins.javascript.api.JavaScriptCheck; @@ -38,7 +38,7 @@ public class JavaScriptProfilesDefinition implements BuiltInQualityProfilesDefinition { - private static final Logger LOG = Loggers.get(JavaScriptProfilesDefinition.class); + private static final Logger LOG = LoggerFactory.getLogger(JavaScriptProfilesDefinition.class); static final String SONAR_WAY = "Sonar way"; @@ -122,11 +122,11 @@ static Set getSecurityRuleKeys( Method getRuleKeysMethod = rulesClass.getMethod(ruleKeysMethodName, String.class); return (Set) getRuleKeysMethod.invoke(null, language); } catch (ClassNotFoundException e) { - LOG.debug(className + " is not found, " + securityRuleMessage(e)); + LOG.debug("{} is not found, {}", className, securityRuleMessage(e)); } catch (NoSuchMethodException e) { - LOG.debug("Method not found on " + className + ", " + securityRuleMessage(e)); + LOG.debug("Method not found on {} , ", className, securityRuleMessage(e)); } catch (IllegalAccessException | InvocationTargetException e) { - LOG.debug(e.getClass().getSimpleName() + ": " + securityRuleMessage(e)); + LOG.debug("{}: ", e.getClass().getSimpleName(), securityRuleMessage(e)); } return Collections.emptySet(); diff --git a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/AbstractAnalysis.java b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/AbstractAnalysis.java index 17454fc4fcf..c933b782b56 100644 --- a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/AbstractAnalysis.java +++ b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/AbstractAnalysis.java @@ -22,10 +22,10 @@ import java.io.IOException; import java.util.List; import java.util.concurrent.TimeUnit; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.api.batch.fs.InputFile; import org.sonar.api.batch.sensor.SensorContext; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; import org.sonar.plugins.javascript.JavaScriptFilePredicate; import org.sonar.plugins.javascript.JavaScriptLanguage; import org.sonar.plugins.javascript.TypeScriptLanguage; @@ -33,7 +33,7 @@ abstract class AbstractAnalysis { - private static final Logger LOG = Loggers.get(AbstractAnalysis.class); + private static final Logger LOG = LoggerFactory.getLogger(AbstractAnalysis.class); static final String PROGRESS_REPORT_TITLE = "Progress of JavaScript/TypeScript analysis"; static final long PROGRESS_REPORT_PERIOD = TimeUnit.SECONDS.toMillis(10); @@ -63,7 +63,7 @@ protected static String inputFileLanguage(InputFile file) { } void initialize(SensorContext context, JsTsChecks checks, AnalysisMode analysisMode) { - LOG.debug("Initializing " + getClass().getName()); + LOG.debug("Initializing {}", getClass().getName()); this.context = context; contextUtils = new ContextUtils(context); this.checks = checks; diff --git a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/AbstractBridgeSensor.java b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/AbstractBridgeSensor.java index e3603a871ad..e5d1aa2ad35 100644 --- a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/AbstractBridgeSensor.java +++ b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/AbstractBridgeSensor.java @@ -24,11 +24,11 @@ import java.io.IOException; import java.util.Arrays; import java.util.List; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.api.batch.fs.InputFile; import org.sonar.api.batch.sensor.Sensor; import org.sonar.api.batch.sensor.SensorContext; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; import org.sonar.plugins.javascript.CancellationException; import org.sonar.plugins.javascript.JavaScriptPlugin; import org.sonar.plugins.javascript.bridge.cache.CacheStrategies; @@ -37,12 +37,11 @@ public abstract class AbstractBridgeSensor implements Sensor { - private static final Logger LOG = Loggers.get(AbstractBridgeSensor.class); + private static final Logger LOG = LoggerFactory.getLogger(AbstractBridgeSensor.class); protected final String lang; protected final BridgeServer bridgeServer; protected List exclusions; - private final AnalysisWarningsWrapper analysisWarnings; List environments; List globals; @@ -51,11 +50,9 @@ public abstract class AbstractBridgeSensor implements Sensor { protected AbstractBridgeSensor( BridgeServer bridgeServer, - AnalysisWarningsWrapper analysisWarnings, String lang ) { this.bridgeServer = bridgeServer; - this.analysisWarnings = analysisWarnings; this.lang = lang; } @@ -113,7 +110,7 @@ protected void logErrorOrWarn(String msg, Throwable e) { protected abstract List getInputFiles(); - protected boolean shouldAnalyzeWithProgram(List inputFiles) { + protected boolean shouldAnalyzeWithProgram() { if (contextUtils.isSonarLint()) { LOG.debug("Will use AnalysisWithWatchProgram because we are in SonarLint context"); return false; diff --git a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/AnalysisMode.java b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/AnalysisMode.java index 55078d6197f..80c572b3477 100644 --- a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/AnalysisMode.java +++ b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/AnalysisMode.java @@ -23,11 +23,11 @@ import java.util.HashSet; import java.util.List; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.api.batch.fs.InputFile; import org.sonar.api.batch.sensor.SensorContext; import org.sonar.api.utils.Version; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; public enum AnalysisMode { DEFAULT, @@ -35,7 +35,7 @@ public enum AnalysisMode { static final String DEFAULT_LINTER_ID = "default"; static final String UNCHANGED_LINTER_ID = "unchanged"; - private static final Logger LOG = Loggers.get(AnalysisMode.class); + private static final Logger LOG = LoggerFactory.getLogger(AnalysisMode.class); public static boolean isRuntimeApiCompatible(SensorContext context) { return context.runtime().getApiVersion().isGreaterThanOrEqual(Version.create(9, 4)); diff --git a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/AnalysisProcessor.java b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/AnalysisProcessor.java index 79b9db5d833..d12d77feca5 100644 --- a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/AnalysisProcessor.java +++ b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/AnalysisProcessor.java @@ -32,6 +32,8 @@ import java.util.HashSet; import java.util.List; import java.util.stream.Collectors; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.api.batch.fs.InputFile; import org.sonar.api.batch.sensor.SensorContext; import org.sonar.api.batch.sensor.cpd.NewCpdTokens; @@ -49,19 +51,15 @@ import org.sonar.api.rule.RuleKey; import org.sonar.api.scanner.ScannerSide; import org.sonar.api.utils.Version; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; import org.sonar.plugins.javascript.bridge.BridgeServer.AnalysisResponse; import org.sonar.plugins.javascript.bridge.cache.CacheAnalysis; import org.sonarsource.api.sonarlint.SonarLintSide; import org.sonarsource.sonarlint.plugin.api.SonarLintRuntime; -import org.sonarsource.sonarlint.plugin.api.issue.NewSonarLintIssue; @ScannerSide @SonarLintSide public class AnalysisProcessor { - - private static final Logger LOG = Loggers.get(AnalysisProcessor.class); + private static final Logger LOG = LoggerFactory.getLogger(AnalysisProcessor.class); private static final Version SONARLINT_6_3 = Version.create(6, 3); private final NoSonarFilter noSonarFilter; @@ -181,7 +179,7 @@ private void saveIssues(List issues) { LOG.debug( "Saving issue for rule {} on file {} at line {}", issue.ruleId, - file.absolutePath(), + file, issue.line ); saveIssue(issue); @@ -320,7 +318,7 @@ void saveIssue(BridgeServer.Issue issue) { newIssue.setQuickFixAvailable(true); } if (isQuickFixCompatible()) { - addQuickFixes(issue, (NewSonarLintIssue) newIssue, file); + addQuickFixes(issue, newIssue, file); } } diff --git a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/AnalysisWarningsWrapper.java b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/AnalysisWarningsWrapper.java index e5c169a4a8b..290a6666650 100644 --- a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/AnalysisWarningsWrapper.java +++ b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/AnalysisWarningsWrapper.java @@ -25,7 +25,7 @@ import org.sonarsource.api.sonarlint.SonarLintSide; @ScannerSide -@SonarLintSide(lifespan = SonarLintSide.MULTIPLE_ANALYSES) +@SonarLintSide(lifespan = SonarLintSide.INSTANCE) public class AnalysisWarningsWrapper { private final AnalysisWarnings analysisWarnings; diff --git a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/AnalysisWithProgram.java b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/AnalysisWithProgram.java index 270ce3d4ccf..d59677467a1 100644 --- a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/AnalysisWithProgram.java +++ b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/AnalysisWithProgram.java @@ -27,11 +27,10 @@ import java.util.List; import java.util.Set; import javax.annotation.Nullable; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.api.batch.fs.InputFile; import org.sonar.api.scanner.ScannerSide; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; -import org.sonar.api.utils.log.Profiler; import org.sonar.plugins.javascript.CancellationException; import org.sonar.plugins.javascript.JavaScriptPlugin; import org.sonar.plugins.javascript.bridge.BridgeServer.TsProgram; @@ -45,9 +44,7 @@ @SonarLintSide public class AnalysisWithProgram extends AbstractAnalysis { - private static final Logger LOG = Loggers.get(AnalysisWithProgram.class); - private static final Profiler PROFILER = Profiler.create(LOG); - + private static final Logger LOG = LoggerFactory.getLogger(AnalysisWithProgram.class); public AnalysisWithProgram( BridgeServer bridgeServer, AnalysisProcessor analysisProcessor, @@ -59,7 +56,7 @@ public AnalysisWithProgram( @Override void analyzeFiles(List inputFiles, List tsConfigs) throws IOException { progressReport = new ProgressReport(PROGRESS_REPORT_TITLE, PROGRESS_REPORT_PERIOD); - progressReport.start(inputFiles.size(), inputFiles.iterator().next().absolutePath()); + progressReport.start(inputFiles.size(), inputFiles.iterator().next().toString()); boolean success = false; try { Deque workList = new ArrayDeque<>(tsConfigs); @@ -72,11 +69,11 @@ void analyzeFiles(List inputFiles, List tsConfigs) throws IOE LOG.debug("tsconfig.json already analyzed: '{}'. Skipping it.", tsConfig); continue; } - PROFILER.startInfo("Creating TypeScript program"); - LOG.info("TypeScript configuration file " + tsConfig); + LOG.info("Creating TypeScript program"); + LOG.info("TypeScript configuration file {}", tsConfig); var program = bridgeServer.createProgram(new TsProgramRequest(tsConfig)); if (program.error != null) { - LOG.error("Failed to create program: " + program.error); + LOG.error("Failed to create program: {}", program.error); this.analysisWarnings.addUnique( String.format( "Failed to create TypeScript program with TSConfig file %s. Highest TypeScript supported version is %s.", @@ -84,7 +81,6 @@ void analyzeFiles(List inputFiles, List tsConfigs) throws IOE JavaScriptPlugin.TYPESCRIPT_VERSION ) ); - PROFILER.stopInfo(); continue; } if (program.missingTsConfig) { @@ -93,7 +89,6 @@ void analyzeFiles(List inputFiles, List tsConfigs) throws IOE LOG.warn(msg); this.analysisWarnings.addUnique(msg); } - PROFILER.stopInfo(); analyzeProgram(program, analyzedFiles); workList.addAll(program.projectReferences); bridgeServer.deleteProgram(program); @@ -164,7 +159,7 @@ private void analyze(InputFile file, @Nullable TsProgram tsProgram) throws IOExc if (cacheStrategy.isAnalysisRequired()) { try { LOG.debug("Analyzing file: {}", file.uri()); - progressReport.nextFile(file.absolutePath()); + progressReport.nextFile(file.toString()); var fileContent = contextUtils.shouldSendFileContent(file) ? file.contents() : null; var request = getJsAnalysisRequest(file, tsProgram, fileContent); diff --git a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/AnalysisWithWatchProgram.java b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/AnalysisWithWatchProgram.java index a7245be4db4..2ed29ce088e 100644 --- a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/AnalysisWithWatchProgram.java +++ b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/AnalysisWithWatchProgram.java @@ -29,10 +29,10 @@ import java.util.Map; import java.util.Set; import javax.annotation.Nullable; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.api.batch.fs.InputFile; import org.sonar.api.scanner.ScannerSide; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; import org.sonar.plugins.javascript.CancellationException; import org.sonar.plugins.javascript.bridge.cache.CacheAnalysis; import org.sonar.plugins.javascript.bridge.cache.CacheStrategies; @@ -43,7 +43,7 @@ @SonarLintSide public class AnalysisWithWatchProgram extends AbstractAnalysis { - private static final Logger LOG = Loggers.get(AnalysisWithWatchProgram.class); + private static final Logger LOG = LoggerFactory.getLogger(AnalysisWithWatchProgram.class); public AnalysisWithWatchProgram( BridgeServer bridgeServer, @@ -62,7 +62,7 @@ public void analyzeFiles(List inputFiles, List tsConfigs) thr inputFiles ); try { - progressReport.start(inputFiles.size(), inputFiles.iterator().next().absolutePath()); + progressReport.start(inputFiles.size(), inputFiles.iterator().next().toString()); if (tsConfigs.isEmpty()) { LOG.info("Analyzing {} files without tsconfig", inputFiles.size()); analyzeTsConfig(null, inputFiles); @@ -124,7 +124,7 @@ private void analyzeTsConfig(@Nullable TsConfigFile tsConfigFile, ListemptyList() diff --git a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/BridgeServer.java b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/BridgeServer.java index 5a89a7e1410..48122f26d65 100644 --- a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/BridgeServer.java +++ b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/BridgeServer.java @@ -19,7 +19,7 @@ */ package org.sonar.plugins.javascript.bridge; -import static org.sonarsource.api.sonarlint.SonarLintSide.MULTIPLE_ANALYSES; +import static org.sonarsource.api.sonarlint.SonarLintSide.INSTANCE; import java.io.IOException; import java.util.List; @@ -33,7 +33,7 @@ import org.sonarsource.api.sonarlint.SonarLintSide; @ScannerSide -@SonarLintSide(lifespan = MULTIPLE_ANALYSES) +@SonarLintSide(lifespan = INSTANCE) public interface BridgeServer extends Startable { void startServerLazily(SensorContext context) throws IOException; diff --git a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/BridgeServerImpl.java b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/BridgeServerImpl.java index c9864d964d5..356a6d39a13 100644 --- a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/BridgeServerImpl.java +++ b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/BridgeServerImpl.java @@ -46,13 +46,12 @@ import java.util.function.Consumer; import java.util.stream.Collectors; import javax.annotation.Nullable; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.api.SonarProduct; import org.sonar.api.batch.sensor.SensorContext; import org.sonar.api.config.Configuration; import org.sonar.api.utils.TempFolder; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; -import org.sonar.api.utils.log.Profiler; import org.sonar.plugins.javascript.nodejs.NodeCommand; import org.sonar.plugins.javascript.nodejs.NodeCommandBuilder; import org.sonar.plugins.javascript.nodejs.NodeCommandException; @@ -65,8 +64,7 @@ private enum Status { STARTED, } - private static final Logger LOG = Loggers.get(BridgeServerImpl.class); - private static final Profiler PROFILER = Profiler.createIfDebug(LOG); + private static final Logger LOG = LoggerFactory.getLogger(BridgeServerImpl.class); private static final int DEFAULT_TIMEOUT_SECONDS = 5 * 60; // internal property to set "--max-old-space-size" for Node process running this server @@ -177,7 +175,8 @@ void deploy(Configuration configuration) throws IOException { } void startServer(SensorContext context, List deployedBundles) throws IOException { - PROFILER.startDebug("Starting server"); + LOG.debug("Starting server"); + long start = System.currentTimeMillis(); port = findOpenPort(); File scriptFile = new File(bundle.startServerScript()); @@ -187,7 +186,7 @@ void startServer(SensorContext context, List deployedBundles) throws IOExc ); } - LOG.debug("Creating Node.js process to start the bridge server on port " + port); + LOG.debug("Creating Node.js process to start the bridge server on port {} ", port); String bundles = deployedBundles .stream() .map(Path::toString) @@ -203,7 +202,8 @@ void startServer(SensorContext context, List deployedBundles) throws IOExc } else { serverHasStarted(); } - PROFILER.stopDebug(); + long duration = System.currentTimeMillis() - start; + LOG.debug("Bridge server started on port {} in {} ms", port, duration); deprecationWarning.logNodeDeprecation(nodeCommand.getActualNodeVersion().major()); } @@ -283,7 +283,7 @@ public void startServerLazily(SensorContext context) throws IOException { if (providedPort != 0) { port = providedPort; serverHasStarted(); - LOG.info("Using existing Node.js process on port " + port); + LOG.info("Using existing Node.js process on port {}", port); } try { @@ -459,11 +459,7 @@ TsConfigResponse tsConfigFiles(String tsconfigAbsolutePath) { LOG.error("Failed to request files for tsconfig: " + tsconfigAbsolutePath, e); } catch (JsonSyntaxException e) { LOG.error( - "Failed to parse response when requesting files for tsconfig: " + - tsconfigAbsolutePath + - ": \n-----\n" + - result + - "\n-----\n" + "Failed to parse response when requesting files for tsconfig: {}: \n-----\n{}\n-----\n{}", tsconfigAbsolutePath, result, e.getMessage() ); } return new TsConfigResponse(emptyList(), emptyList(), result, null); diff --git a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/BundleImpl.java b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/BundleImpl.java index dfbab51718c..4e815a8720e 100644 --- a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/BundleImpl.java +++ b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/BundleImpl.java @@ -19,23 +19,21 @@ */ package org.sonar.plugins.javascript.bridge; -import static org.sonarsource.api.sonarlint.SonarLintSide.MULTIPLE_ANALYSES; +import static org.sonarsource.api.sonarlint.SonarLintSide.INSTANCE; import java.io.IOException; import java.io.InputStream; import java.nio.file.Path; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.api.scanner.ScannerSide; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; -import org.sonar.api.utils.log.Profiler; import org.sonarsource.api.sonarlint.SonarLintSide; @ScannerSide -@SonarLintSide(lifespan = MULTIPLE_ANALYSES) +@SonarLintSide(lifespan = INSTANCE) public class BundleImpl implements Bundle { - private static final Logger LOG = Loggers.get(BundleImpl.class); - private static final Profiler PROFILER = Profiler.createIfDebug(LOG); + private static final Logger LOG = LoggerFactory.getLogger(BundleImpl.class); // this archive is created in the bridge module private static final String BUNDLE_LOCATION = "/sonarjs-1.0.0.tgz"; @@ -53,7 +51,6 @@ public BundleImpl() { @Override public void deploy(Path deployLocation) throws IOException { - PROFILER.startDebug("Deploying bundle"); LOG.debug("Deploying the bridge server into {}", deployLocation); InputStream bundle = getClass().getResourceAsStream(bundleLocation); if (bundle == null) { @@ -61,7 +58,6 @@ public void deploy(Path deployLocation) throws IOException { } BundleUtils.extractFromClasspath(bundle, deployLocation); this.deployLocation = deployLocation; - PROFILER.stopDebug(); } @Override diff --git a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/CssRuleSensor.java b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/CssRuleSensor.java index dd6ee342e9e..94f466d2df6 100644 --- a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/CssRuleSensor.java +++ b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/CssRuleSensor.java @@ -27,6 +27,8 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.stream.StreamSupport; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.api.SonarProduct; import org.sonar.api.SonarRuntime; import org.sonar.api.batch.fs.FilePredicate; @@ -39,8 +41,6 @@ import org.sonar.api.batch.sensor.issue.NewIssueLocation; import org.sonar.api.rule.RuleKey; import org.sonar.api.utils.Version; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; import org.sonar.css.CssLanguage; import org.sonar.css.CssRules; import org.sonar.css.StylelintRule; @@ -49,7 +49,7 @@ public class CssRuleSensor extends AbstractBridgeSensor { - private static final Logger LOG = Loggers.get(CssRuleSensor.class); + private static final Logger LOG = LoggerFactory.getLogger(CssRuleSensor.class); private final SonarRuntime sonarRuntime; private final CssRules cssRules; @@ -57,10 +57,9 @@ public class CssRuleSensor extends AbstractBridgeSensor { public CssRuleSensor( SonarRuntime sonarRuntime, BridgeServer bridgeServer, - AnalysisWarningsWrapper analysisWarnings, CheckFactory checkFactory ) { - super(bridgeServer, analysisWarnings, "CSS"); + super(bridgeServer, "CSS"); this.sonarRuntime = sonarRuntime; this.cssRules = new CssRules(checkFactory); } @@ -104,7 +103,7 @@ protected void analyzeFiles(List inputFiles) throws IOException { List rules = cssRules.getStylelintRules(); try { - progressReport.start(inputFiles.size(), inputFiles.iterator().next().absolutePath()); + progressReport.start(inputFiles.size(), inputFiles.iterator().next().toString()); for (InputFile inputFile : inputFiles) { if (context.isCancelled()) { throw new CancellationException( @@ -112,7 +111,7 @@ protected void analyzeFiles(List inputFiles) throws IOException { ); } analyzeFile(inputFile, context, rules); - progressReport.nextFile(inputFile.absolutePath()); + progressReport.nextFile(inputFile.toString()); } success = true; } finally { diff --git a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/EmbeddedNode.java b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/EmbeddedNode.java index c27856da398..a794b09be7e 100644 --- a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/EmbeddedNode.java +++ b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/EmbeddedNode.java @@ -35,9 +35,9 @@ import java.nio.file.Path; import java.util.Locale; import java.util.Set; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.api.scanner.ScannerSide; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; import org.sonar.plugins.javascript.nodejs.NodeVersion; import org.sonar.plugins.javascript.nodejs.ProcessWrapper; import org.sonarsource.api.sonarlint.SonarLintSide; @@ -53,7 +53,7 @@ public class EmbeddedNode { public static final String VERSION_FILENAME = "version.txt"; private static final String DEPLOY_LOCATION = Path.of("js", "node-runtime").toString(); private static final long EXTRACTION_LOCK_WAIT_TIME_MILLIS = 10000; - private static final Logger LOG = Loggers.get(EmbeddedNode.class); + private static final Logger LOG = LoggerFactory.getLogger(EmbeddedNode.class); private final Path deployLocation; private final Platform platform; private final Environment env; @@ -205,10 +205,7 @@ private static boolean isDifferent(InputStream newVersionIs, Path currentVersion var newVersionString = new String(newVersionIs.readAllBytes(), StandardCharsets.UTF_8); var currentVersionString = Files.readString(currentVersionPath); LOG.debug( - "Currently installed Node.js version: " + - currentVersionString + - ". Available version in analyzer: " + - newVersionString + "Currently installed Node.js version: {}. Available version in analyzer: {}", currentVersionString, newVersionString ); return !newVersionString.equals(currentVersionString); } diff --git a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/HtmlSensor.java b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/HtmlSensor.java index b98d250bb81..b3057b022dd 100644 --- a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/HtmlSensor.java +++ b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/HtmlSensor.java @@ -23,12 +23,12 @@ import java.util.List; import java.util.concurrent.TimeUnit; import java.util.stream.StreamSupport; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.api.batch.fs.FilePredicate; import org.sonar.api.batch.fs.FilePredicates; import org.sonar.api.batch.fs.InputFile; import org.sonar.api.batch.sensor.SensorDescriptor; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; import org.sonar.plugins.javascript.CancellationException; import org.sonar.plugins.javascript.JavaScriptLanguage; import org.sonar.plugins.javascript.bridge.BridgeServer.JsAnalysisRequest; @@ -41,7 +41,7 @@ public class HtmlSensor extends AbstractBridgeSensor { public static final String LANGUAGE = "web"; - private static final Logger LOG = Loggers.get(HtmlSensor.class); + private static final Logger LOG = LoggerFactory.getLogger(HtmlSensor.class); private final JsTsChecks checks; private final AnalysisProcessor analysisProcessor; private AnalysisMode analysisMode; @@ -49,12 +49,11 @@ public class HtmlSensor extends AbstractBridgeSensor { public HtmlSensor( JsTsChecks checks, BridgeServer bridgeServer, - AnalysisWarningsWrapper analysisWarnings, AnalysisProcessor processAnalysis ) { // The monitoring sensor remains inactive during HTML files analysis, as the // bridge doesn't provide nor compute metrics for such files. - super(bridgeServer, analysisWarnings, "JS in HTML"); + super(bridgeServer, "JS in HTML"); this.analysisProcessor = processAnalysis; this.checks = checks; } @@ -70,7 +69,7 @@ protected void analyzeFiles(List inputFiles) throws IOException { analysisMode = AnalysisMode.getMode(context, checks.eslintRules()); var success = false; try { - progressReport.start(inputFiles.size(), inputFiles.iterator().next().absolutePath()); + progressReport.start(inputFiles.size(), inputFiles.iterator().next().toString()); bridgeServer.initLinter( AnalysisMode.getHtmlFileRules(checks.eslintRules()), environments, @@ -85,7 +84,7 @@ protected void analyzeFiles(List inputFiles) throws IOException { "Analysis interrupted because the SensorContext is in cancelled state" ); } - progressReport.nextFile(inputFile.absolutePath()); + progressReport.nextFile(inputFile.toString()); var cacheStrategy = CacheStrategies.getStrategyFor(context, inputFile); if (cacheStrategy.isAnalysisRequired()) { analyze(inputFile, cacheStrategy); diff --git a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/JsTsChecks.java b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/JsTsChecks.java index 8bca6b3a957..2a7b5c8a2f2 100644 --- a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/JsTsChecks.java +++ b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/JsTsChecks.java @@ -26,12 +26,12 @@ import java.util.Objects; import java.util.stream.Stream; import javax.annotation.Nullable; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.api.batch.rule.CheckFactory; import org.sonar.api.batch.rule.Checks; import org.sonar.api.rule.RuleKey; import org.sonar.api.scanner.ScannerSide; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; import org.sonar.javascript.checks.CheckList; import org.sonar.javascript.checks.ParsingErrorCheck; import org.sonar.plugins.javascript.JavaScriptLanguage; @@ -49,7 +49,7 @@ @SonarLintSide public class JsTsChecks { - private static final Logger LOG = Loggers.get(JsTsChecks.class); + private static final Logger LOG = LoggerFactory.getLogger(JsTsChecks.class); private final CheckFactory checkFactory; private final CustomRuleRepository[] customRuleRepositories; private final Map> checks = new HashMap<>(); diff --git a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/JsTsSensor.java b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/JsTsSensor.java index e0846be5823..3f28d4af616 100644 --- a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/JsTsSensor.java +++ b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/JsTsSensor.java @@ -23,13 +23,12 @@ import java.util.List; import java.util.stream.StreamSupport; import javax.annotation.Nullable; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.api.batch.fs.FilePredicate; import org.sonar.api.batch.fs.FileSystem; import org.sonar.api.batch.fs.InputFile; import org.sonar.api.batch.sensor.SensorDescriptor; -import org.sonar.api.utils.TempFolder; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; import org.sonar.plugins.javascript.JavaScriptFilePredicate; import org.sonar.plugins.javascript.JavaScriptLanguage; import org.sonar.plugins.javascript.TypeScriptLanguage; @@ -37,8 +36,7 @@ public class JsTsSensor extends AbstractBridgeSensor { - private static final Logger LOG = Loggers.get(JsTsSensor.class); - private final TempFolder tempFolder; + private static final Logger LOG = LoggerFactory.getLogger(JsTsSensor.class); private final AnalysisWithProgram analysisWithProgram; private final AnalysisWithWatchProgram analysisWithWatchProgram; private final JsTsChecks checks; @@ -48,16 +46,12 @@ public class JsTsSensor extends AbstractBridgeSensor { public JsTsSensor( JsTsChecks checks, BridgeServer bridgeServer, - AnalysisWarningsWrapper analysisWarnings, - TempFolder tempFolder, AnalysisWithProgram analysisWithProgram, AnalysisWithWatchProgram analysisWithWatchProgram ) { this( checks, bridgeServer, - analysisWarnings, - tempFolder, null, analysisWithProgram, analysisWithWatchProgram @@ -67,14 +61,11 @@ public JsTsSensor( public JsTsSensor( JsTsChecks checks, BridgeServer bridgeServer, - AnalysisWarningsWrapper analysisWarnings, - TempFolder tempFolder, @Nullable SonarLintTypeCheckingChecker javaScriptProjectChecker, AnalysisWithProgram analysisWithProgram, AnalysisWithWatchProgram analysisWithWatchProgram ) { - super(bridgeServer, analysisWarnings, "JS/TS"); - this.tempFolder = tempFolder; + super(bridgeServer, "JS/TS"); this.analysisWithProgram = analysisWithProgram; this.analysisWithWatchProgram = analysisWithWatchProgram; this.checks = checks; @@ -116,7 +107,7 @@ protected void analyzeFiles(List inputFiles) throws IOException { this::createTsConfigFile ); AbstractAnalysis analysis; - if (shouldAnalyzeWithProgram(inputFiles)) { + if (shouldAnalyzeWithProgram()) { analysis = analysisWithProgram; } else { analysis = analysisWithWatchProgram; diff --git a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/NodeDeprecationWarning.java b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/NodeDeprecationWarning.java index 6a9995f8da4..6688cefe675 100644 --- a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/NodeDeprecationWarning.java +++ b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/NodeDeprecationWarning.java @@ -24,10 +24,10 @@ import java.util.Arrays; import java.util.List; import java.util.Map; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.api.scanner.ScannerSide; import org.sonar.api.utils.Version; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; import org.sonarsource.api.sonarlint.SonarLintSide; /** @@ -38,7 +38,7 @@ * 21 - nothing to warn, recommended version */ @ScannerSide -@SonarLintSide(lifespan = SonarLintSide.MULTIPLE_ANALYSES) +@SonarLintSide(lifespan = SonarLintSide.INSTANCE) public class NodeDeprecationWarning { static final Map REMOVAL_DATE = Map.ofEntries( @@ -46,7 +46,7 @@ public class NodeDeprecationWarning { entry(17, "Jan 31th, 2024") ); - private static final Logger LOG = Loggers.get(NodeDeprecationWarning.class); + private static final Logger LOG = LoggerFactory.getLogger(NodeDeprecationWarning.class); /** * This version should be kept in sync with sonar-javascript-plugin/pom.xml#nodeJsMinVersion. * diff --git a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/PluginInfo.java b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/PluginInfo.java index 6850923ed3b..68a68624fac 100644 --- a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/PluginInfo.java +++ b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/PluginInfo.java @@ -20,12 +20,12 @@ package org.sonar.plugins.javascript.bridge; import java.util.Optional; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class PluginInfo { - private static final Logger LOG = Loggers.get(PluginInfo.class); + private static final Logger LOG = LoggerFactory.getLogger(PluginInfo.class); private static String version; private static String ucfgPluginVersion; diff --git a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/QuickFixSupport.java b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/QuickFixSupport.java index 2b1af913fcd..8a69aa71365 100644 --- a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/QuickFixSupport.java +++ b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/QuickFixSupport.java @@ -19,10 +19,10 @@ */ package org.sonar.plugins.javascript.bridge; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.api.batch.fs.InputFile; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; -import org.sonarsource.sonarlint.plugin.api.issue.NewSonarLintIssue; +import org.sonar.api.batch.sensor.issue.NewIssue; /** * QuickFix logic is separated here, because it can't be used directly in the plugin extension class, otherwise @@ -30,7 +30,7 @@ */ class QuickFixSupport { - private static final Logger LOG = Loggers.get(QuickFixSupport.class); + private static final Logger LOG = LoggerFactory.getLogger(QuickFixSupport.class); private QuickFixSupport() { // utility class @@ -38,7 +38,7 @@ private QuickFixSupport() { static void addQuickFixes( BridgeServer.Issue issue, - NewSonarLintIssue sonarLintIssue, + NewIssue sonarLintIssue, InputFile file ) { issue.quickFixes.forEach(qf -> { diff --git a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/RulesBundles.java b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/RulesBundles.java index 8300ef7d4ca..63b988f380f 100644 --- a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/RulesBundles.java +++ b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/RulesBundles.java @@ -28,17 +28,17 @@ import java.util.Collections; import java.util.List; import java.util.Optional; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.api.scanner.ScannerSide; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; import org.sonar.plugins.javascript.api.RulesBundle; import org.sonarsource.api.sonarlint.SonarLintSide; @ScannerSide -@SonarLintSide(lifespan = SonarLintSide.MULTIPLE_ANALYSES) +@SonarLintSide(lifespan = SonarLintSide.INSTANCE) public class RulesBundles { - private static final Logger LOG = Loggers.get(RulesBundles.class); + private static final Logger LOG = LoggerFactory.getLogger(RulesBundles.class); private final List bundleUrls; private final List bundles; diff --git a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/TsConfigFile.java b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/TsConfigFile.java index 47c904a0f62..3e2fce9ecc0 100644 --- a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/TsConfigFile.java +++ b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/TsConfigFile.java @@ -31,13 +31,13 @@ import java.util.Set; import java.util.function.Predicate; import java.util.stream.Collectors; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.api.batch.fs.InputFile; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; class TsConfigFile implements Predicate { - private static final Logger LOG = Loggers.get(TsConfigFile.class); + private static final Logger LOG = LoggerFactory.getLogger(TsConfigFile.class); static final TsConfigFile UNMATCHED_CONFIG = new TsConfigFile( "NO_CONFIG", @@ -85,7 +85,7 @@ static Map> inputFilesByTsConfig( .filter(tsConfigFile -> tsConfigFile.test(inputFile)) .findFirst() .orElse(UNMATCHED_CONFIG); - LOG.debug("{} matched {}", inputFile.absolutePath(), tsconfig); + LOG.debug("{} matched {}", inputFile, tsconfig); result.computeIfAbsent(tsconfig, t -> new ArrayList<>()).add(inputFile); }); return result; diff --git a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/TsConfigProvider.java b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/TsConfigProvider.java index e278a2632ec..c70c557d8d2 100644 --- a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/TsConfigProvider.java +++ b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/TsConfigProvider.java @@ -37,13 +37,13 @@ import java.util.concurrent.ConcurrentHashMap; import java.util.function.Function; import javax.annotation.Nullable; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.api.SonarProduct; import org.sonar.api.batch.fs.FilePredicate; import org.sonar.api.batch.fs.FileSystem; import org.sonar.api.batch.fs.InputFile; import org.sonar.api.batch.sensor.SensorContext; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; import org.sonar.plugins.javascript.JavaScriptFilePredicate; import org.sonar.plugins.javascript.JavaScriptPlugin; import org.sonar.plugins.javascript.sonarlint.SonarLintTypeCheckingChecker; @@ -51,7 +51,7 @@ class TsConfigProvider { - private static final Logger LOG = Loggers.get(TsConfigProvider.class); + private static final Logger LOG = LoggerFactory.getLogger(TsConfigProvider.class); interface Provider { List tsconfigs(SensorContext context) throws IOException; @@ -185,7 +185,7 @@ public List tsconfigs(SensorContext context) { } } } - LOG.info("Found " + tsconfigs.size() + " tsconfig.json file(s): " + tsconfigs); + LOG.info("Found {} tsconfig.json file(s): {}",tsconfigs.size(), tsconfigs); return tsconfigs; } } diff --git a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/YamlSensor.java b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/YamlSensor.java index b18cd976ba4..341db81394d 100644 --- a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/YamlSensor.java +++ b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/YamlSensor.java @@ -28,11 +28,11 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.stream.StreamSupport; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.api.batch.fs.FilePredicates; import org.sonar.api.batch.fs.InputFile; import org.sonar.api.batch.sensor.SensorDescriptor; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; import org.sonar.plugins.javascript.CancellationException; import org.sonar.plugins.javascript.JavaScriptLanguage; import org.sonar.plugins.javascript.bridge.BridgeServer.JsAnalysisRequest; @@ -46,7 +46,7 @@ public class YamlSensor extends AbstractBridgeSensor { public static final String SAM_TRANSFORM_FIELD = "AWS::Serverless-2016-10-31"; public static final String NODEJS_RUNTIME_REGEX = "^\\s*Runtime:\\s*[\'\"]?nodejs\\S*[\'\"]?"; - private static final Logger LOG = Loggers.get(YamlSensor.class); + private static final Logger LOG = LoggerFactory.getLogger(YamlSensor.class); private final JsTsChecks checks; private final AnalysisProcessor analysisProcessor; private AnalysisMode analysisMode; @@ -59,7 +59,7 @@ public YamlSensor( ) { // The monitoring sensor remains inactive during YAML files analysis, as the // bridge doesn't provide nor compute metrics for such files. - super(bridgeServer, analysisWarnings, "JS in YAML"); + super(bridgeServer, "JS in YAML"); this.checks = checks; this.analysisProcessor = processAnalysis; } @@ -75,7 +75,7 @@ protected void analyzeFiles(List inputFiles) throws IOException { var progressReport = new ProgressReport("Analysis progress", TimeUnit.SECONDS.toMillis(10)); var success = false; try { - progressReport.start(inputFiles.size(), inputFiles.iterator().next().absolutePath()); + progressReport.start(inputFiles.size(), inputFiles.iterator().next().toString()); bridgeServer.initLinter( checks.eslintRules(), environments, @@ -90,7 +90,7 @@ protected void analyzeFiles(List inputFiles) throws IOException { "Analysis interrupted because the SensorContext is in cancelled state" ); } - progressReport.nextFile(inputFile.absolutePath()); + progressReport.nextFile(inputFile.toString()); analyze(inputFile); } success = true; diff --git a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/cache/CacheReporter.java b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/cache/CacheReporter.java index b2ac53e46f7..7f5a32a77ec 100644 --- a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/cache/CacheReporter.java +++ b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/cache/CacheReporter.java @@ -28,13 +28,13 @@ import java.util.Optional; import java.util.concurrent.atomic.AtomicInteger; import javax.annotation.Nullable; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.api.batch.fs.InputFile; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; class CacheReporter { - private static final Logger LOG = Loggers.get(CacheReporter.class); + private static final Logger LOG = LoggerFactory.getLogger(CacheReporter.class); private final Map, AtomicInteger> counters = new HashMap<>(); diff --git a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/cache/CacheStrategies.java b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/cache/CacheStrategies.java index 2eeee267103..9d876d8446b 100644 --- a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/cache/CacheStrategies.java +++ b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/cache/CacheStrategies.java @@ -25,18 +25,18 @@ import java.io.IOException; import javax.annotation.Nullable; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.api.SonarProduct; import org.sonar.api.batch.fs.InputFile; import org.sonar.api.batch.sensor.SensorContext; import org.sonar.api.utils.Version; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; import org.sonar.plugins.javascript.bridge.AnalysisMode; import org.sonar.plugins.javascript.bridge.PluginInfo; public class CacheStrategies { - private static final Logger LOG = Loggers.get(CacheStrategies.class); + private static final Logger LOG = LoggerFactory.getLogger(CacheStrategies.class); private static final CacheReporter REPORTER = new CacheReporter(); diff --git a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/cache/JsonSerialization.java b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/cache/JsonSerialization.java index eaeb12cbe4a..cc6ea2f2bfc 100644 --- a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/cache/JsonSerialization.java +++ b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/cache/JsonSerialization.java @@ -24,13 +24,13 @@ import java.io.IOException; import java.io.InputStreamReader; import java.nio.charset.StandardCharsets; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.api.batch.sensor.SensorContext; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; class JsonSerialization

extends CacheSerialization { - private static final Logger LOG = Loggers.get(JsonSerialization.class); + private static final Logger LOG = LoggerFactory.getLogger(JsonSerialization.class); private final Class

jsonClass; private final Gson gson = new Gson(); diff --git a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/cache/SequenceSerialization.java b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/cache/SequenceSerialization.java index 659162326ef..8e5804f0370 100644 --- a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/cache/SequenceSerialization.java +++ b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/cache/SequenceSerialization.java @@ -33,13 +33,13 @@ import java.util.List; import java.util.stream.StreamSupport; import javax.annotation.Nullable; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.api.batch.sensor.SensorContext; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; class SequenceSerialization extends CacheSerialization { - private static final Logger LOG = Loggers.get(SequenceSerialization.class); + private static final Logger LOG = LoggerFactory.getLogger(SequenceSerialization.class); private static final String ENTRY_SEPARATOR = "/"; private static final int DEFAULT_BUFFER_SIZE = 8192; diff --git a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/external/AbstractExternalIssuesSensor.java b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/external/AbstractExternalIssuesSensor.java index ae3e6b9b3a9..4462820ae38 100644 --- a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/external/AbstractExternalIssuesSensor.java +++ b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/external/AbstractExternalIssuesSensor.java @@ -22,19 +22,19 @@ import com.google.gson.Gson; import java.io.File; import java.util.List; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.api.batch.fs.FilePredicates; import org.sonar.api.batch.fs.InputFile; import org.sonar.api.batch.rule.Severity; import org.sonar.api.batch.sensor.Sensor; import org.sonar.api.batch.sensor.SensorContext; import org.sonar.api.batch.sensor.SensorDescriptor; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; import org.sonarsource.analyzer.commons.ExternalReportProvider; abstract class AbstractExternalIssuesSensor implements Sensor { - private static final Logger LOG = Loggers.get(AbstractExternalIssuesSensor.class); + private static final Logger LOG = LoggerFactory.getLogger(AbstractExternalIssuesSensor.class); static final Gson gson = new Gson(); static final long DEFAULT_REMEDIATION_COST = 5L; diff --git a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/external/EslintReportSensor.java b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/external/EslintReportSensor.java index fc441d37bb6..6f164e55be6 100644 --- a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/external/EslintReportSensor.java +++ b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/external/EslintReportSensor.java @@ -27,6 +27,8 @@ import java.io.IOException; import java.io.InputStreamReader; import java.nio.charset.StandardCharsets; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.api.batch.fs.InputFile; import org.sonar.api.batch.fs.TextPointer; import org.sonar.api.batch.fs.TextRange; @@ -35,14 +37,12 @@ import org.sonar.api.batch.sensor.issue.NewExternalIssue; import org.sonar.api.batch.sensor.issue.NewIssueLocation; import org.sonar.api.rules.RuleType; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; import org.sonar.plugins.javascript.rules.EslintRulesDefinition; import org.sonarsource.analyzer.commons.ExternalRuleLoader; public class EslintReportSensor extends AbstractExternalIssuesSensor { - private static final Logger LOG = Loggers.get(EslintReportSensor.class); + private static final Logger LOG = LoggerFactory.getLogger(EslintReportSensor.class); @Override String linterName() { @@ -90,7 +90,7 @@ private static void saveEslintError( ) { String eslintKey = eslintError.ruleId; if (eslintKey == null) { - LOG.warn("Parse error issue from ESLint will not be imported, file " + inputFile.uri()); + LOG.warn("Parse error issue from ESLint will not be imported, file {}", inputFile.uri()); return; } diff --git a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/external/TslintReportSensor.java b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/external/TslintReportSensor.java index 3ebde562a4b..72aa265fbfd 100644 --- a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/external/TslintReportSensor.java +++ b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/external/TslintReportSensor.java @@ -27,6 +27,8 @@ import java.io.InputStreamReader; import java.nio.charset.StandardCharsets; import java.util.Objects; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.api.batch.fs.InputFile; import org.sonar.api.batch.fs.TextPointer; import org.sonar.api.batch.fs.TextRange; @@ -34,13 +36,11 @@ import org.sonar.api.batch.sensor.issue.NewExternalIssue; import org.sonar.api.batch.sensor.issue.NewIssueLocation; import org.sonar.api.rules.RuleType; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; import org.sonar.plugins.javascript.rules.TslintRulesDefinition; public class TslintReportSensor extends AbstractExternalIssuesSensor { - private static final Logger LOG = Loggers.get(TslintReportSensor.class); + private static final Logger LOG = LoggerFactory.getLogger(TslintReportSensor.class); @Override String linterName() { diff --git a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/filter/BundleAssessor.java b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/filter/BundleAssessor.java index 2faf3ad792c..673155aeee7 100644 --- a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/filter/BundleAssessor.java +++ b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/filter/BundleAssessor.java @@ -26,13 +26,13 @@ import java.util.regex.Pattern; import org.apache.commons.io.IOUtils; import org.apache.commons.io.input.BoundedReader; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.api.batch.fs.InputFile; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; public class BundleAssessor implements Assessor { - private static final Logger LOG = Loggers.get(BundleAssessor.class); + private static final Logger LOG = LoggerFactory.getLogger(BundleAssessor.class); static final String PROPERTY = "sonar.javascript.detectBundles"; private static final Pattern COMMENT_OPERATOR_FUNCTION = bundleRegexPattern(); private static final int READ_CHARACTERS_LIMIT = 2048; @@ -73,11 +73,11 @@ public boolean test(InputFile inputFile) { } private static Pattern bundleRegexPattern() { - var COMMENT = "/\\*.*\\*/"; - var OPERATOR = "[!;+(]"; - var OPTIONAL_FUNCTION_NAME = "(?: [_$a-zA-Z][_$a-zA-Z0-9]*)?"; + var comment = "/\\*.*\\*/"; + var operator = "[!;+(]"; + var optionalFunctionName = "(?: [_$a-zA-Z][_$a-zA-Z0-9]*)?"; return Pattern.compile( - COMMENT + "\\s*" + OPERATOR + "function ?" + OPTIONAL_FUNCTION_NAME + "\\(", + comment + "\\s*" + operator + "function ?" + optionalFunctionName + "\\(", DOTALL ); } diff --git a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/filter/MinificationAssessor.java b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/filter/MinificationAssessor.java index 44ab65da4cb..d68b05742e3 100644 --- a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/filter/MinificationAssessor.java +++ b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/filter/MinificationAssessor.java @@ -19,9 +19,9 @@ */ package org.sonar.plugins.javascript.filter; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.api.batch.fs.InputFile; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; /** * An object to assess if a .js file is a minified file or not. @@ -33,7 +33,7 @@ */ class MinificationAssessor implements Assessor { - private static final Logger LOG = Loggers.get(MinificationAssessor.class); + private static final Logger LOG = LoggerFactory.getLogger(MinificationAssessor.class); private static final int DEFAULT_AVERAGE_LINE_LENGTH_THRESHOLD = 200; diff --git a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/filter/PathAssessor.java b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/filter/PathAssessor.java index 6a730646146..d4a5a07c302 100644 --- a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/filter/PathAssessor.java +++ b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/filter/PathAssessor.java @@ -19,17 +19,17 @@ */ package org.sonar.plugins.javascript.filter; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.api.batch.fs.InputFile; import org.sonar.api.config.Configuration; import org.sonar.api.utils.WildcardPattern; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; import org.sonar.plugins.javascript.JavaScriptPlugin; import org.sonar.plugins.javascript.utils.Exclusions; class PathAssessor implements Assessor { - private static final Logger LOG = Loggers.get(PathAssessor.class); + private static final Logger LOG = LoggerFactory.getLogger(PathAssessor.class); private final WildcardPattern[] excludedPatterns; PathAssessor(Configuration configuration) { diff --git a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/filter/SizeAssessor.java b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/filter/SizeAssessor.java index 241f792e7c6..a4e28ad612c 100644 --- a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/filter/SizeAssessor.java +++ b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/filter/SizeAssessor.java @@ -21,15 +21,15 @@ import java.io.IOException; import java.io.InputStream; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.api.batch.fs.InputFile; import org.sonar.api.config.Configuration; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; import org.sonar.plugins.javascript.JavaScriptPlugin; class SizeAssessor implements Assessor { - private static final Logger LOG = Loggers.get(SizeAssessor.class); + private static final Logger LOG = LoggerFactory.getLogger(SizeAssessor.class); private static final long DEFAULT_MAX_FILE_SIZE_KB = 1000L; // 1MB /** @@ -58,7 +58,7 @@ class SizeAssessor implements Assessor { } final void fallbackToDefaultMaxFileSize(String reasonErrorMessage) { - LOG.warn(reasonErrorMessage + ", falling back to " + DEFAULT_MAX_FILE_SIZE_KB + "."); + LOG.warn("{}, falling back to {}.", reasonErrorMessage, DEFAULT_MAX_FILE_SIZE_KB); maxFileSizeKb = DEFAULT_MAX_FILE_SIZE_KB; } diff --git a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/lcov/CoverageSensor.java b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/lcov/CoverageSensor.java index 9472cd36c7e..243b838494e 100644 --- a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/lcov/CoverageSensor.java +++ b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/lcov/CoverageSensor.java @@ -19,6 +19,9 @@ */ package org.sonar.plugins.javascript.lcov; +import static org.sonar.plugins.javascript.JavaScriptPlugin.LCOV_REPORT_PATHS; +import static org.sonar.plugins.javascript.JavaScriptPlugin.LCOV_REPORT_PATHS_ALIAS; + import java.io.File; import java.util.ArrayList; import java.util.Arrays; @@ -26,6 +29,8 @@ import java.util.List; import java.util.Map; import java.util.Set; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.api.batch.fs.FilePredicate; import org.sonar.api.batch.fs.FileSystem; import org.sonar.api.batch.fs.InputFile; @@ -34,24 +39,21 @@ import org.sonar.api.batch.sensor.SensorContext; import org.sonar.api.batch.sensor.SensorDescriptor; import org.sonar.api.batch.sensor.coverage.NewCoverage; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; import org.sonar.plugins.javascript.JavaScriptLanguage; -import org.sonar.plugins.javascript.JavaScriptPlugin; import org.sonar.plugins.javascript.TypeScriptLanguage; import org.sonarsource.analyzer.commons.FileProvider; public class CoverageSensor implements Sensor { - private static final Logger LOG = Loggers.get(CoverageSensor.class); + private static final Logger LOG = LoggerFactory.getLogger(CoverageSensor.class); @Override public void describe(SensorDescriptor descriptor) { descriptor .onlyOnLanguages(JavaScriptLanguage.KEY, TypeScriptLanguage.KEY) .onlyWhenConfiguration(conf -> - conf.hasKey(JavaScriptPlugin.LCOV_REPORT_PATHS) || - conf.hasKey(JavaScriptPlugin.LCOV_REPORT_PATHS_ALIAS) + conf.hasKey(LCOV_REPORT_PATHS) || + conf.hasKey(LCOV_REPORT_PATHS_ALIAS) ) .name("JavaScript/TypeScript Coverage") .onlyOnFileType(Type.MAIN); @@ -60,23 +62,18 @@ public void describe(SensorDescriptor descriptor) { @Override public void execute(SensorContext context) { Set reports = new HashSet<>( - Arrays.asList(context.config().getStringArray(JavaScriptPlugin.LCOV_REPORT_PATHS)) + Arrays.asList(context.config().getStringArray(LCOV_REPORT_PATHS)) ); reports.addAll( - Arrays.asList(context.config().getStringArray(JavaScriptPlugin.LCOV_REPORT_PATHS_ALIAS)) + Arrays.asList(context.config().getStringArray(LCOV_REPORT_PATHS_ALIAS)) ); - logIfUsedProperty(context, JavaScriptPlugin.LCOV_REPORT_PATHS); - logIfUsedProperty(context, JavaScriptPlugin.LCOV_REPORT_PATHS_ALIAS); + logIfUsedProperty(context, LCOV_REPORT_PATHS); + logIfUsedProperty(context, LCOV_REPORT_PATHS_ALIAS); if ( - context.config().hasKey(JavaScriptPlugin.LCOV_REPORT_PATHS) && - context.config().hasKey(JavaScriptPlugin.LCOV_REPORT_PATHS_ALIAS) + context.config().hasKey(LCOV_REPORT_PATHS) && + context.config().hasKey(LCOV_REPORT_PATHS_ALIAS) ) { - LOG.info( - String.format( - "Merging coverage reports from %s and %s.", - JavaScriptPlugin.LCOV_REPORT_PATHS, - JavaScriptPlugin.LCOV_REPORT_PATHS_ALIAS - ) + LOG.info("Merging coverage reports from {} and {}.", LCOV_REPORT_PATHS, LCOV_REPORT_PATHS_ALIAS ); } List lcovFiles = getLcovFiles(context.fileSystem().baseDir(), reports); @@ -133,17 +130,12 @@ private static void saveCoverageFromLcovFiles(SensorContext context, List List unresolvedPaths = parser.unresolvedPaths(); if (!unresolvedPaths.isEmpty()) { - LOG.warn( - String.format("Could not resolve %d file paths in %s", unresolvedPaths.size(), lcovFiles) - ); + LOG.warn("Could not resolve {} file paths in {}", unresolvedPaths.size(), lcovFiles); if (LOG.isDebugEnabled()) { - LOG.debug("Unresolved paths:\n" + String.join("\n", unresolvedPaths)); + LOG.debug("Unresolved paths:\n{}", String.join("\n", unresolvedPaths)); } else { LOG.warn( - "First unresolved path: " + - unresolvedPaths.get(0) + - " (Run in DEBUG mode to get full list of unresolved paths)" - ); + "First unresolved path: {} (Run in DEBUG mode to get full list of unresolved paths)", unresolvedPaths.get(0)); } } diff --git a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/lcov/LCOVParser.java b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/lcov/LCOVParser.java index 77e76a1d78f..56409e4faf7 100644 --- a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/lcov/LCOVParser.java +++ b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/lcov/LCOVParser.java @@ -31,11 +31,11 @@ import java.util.Set; import java.util.stream.Stream; import javax.annotation.CheckForNull; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.api.batch.fs.InputFile; import org.sonar.api.batch.sensor.SensorContext; import org.sonar.api.batch.sensor.coverage.NewCoverage; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; /** * http://ltp.sourceforge.net/coverage/lcov/geninfo.1.php @@ -53,7 +53,7 @@ class LCOVParser { private final FileLocator fileLocator; private int inconsistenciesCounter = 0; - private static final Logger LOG = Loggers.get(LCOVParser.class); + private static final Logger LOG = LoggerFactory.getLogger(LCOVParser.class); private LCOVParser(List lines, SensorContext context, FileLocator fileLocator) { this.context = context; @@ -150,12 +150,10 @@ private void parseLineCoverage(FileData fileData, int reportLineNum, String line private void logWrongDataWarning(String dataType, int reportLineNum, Exception e) { LOG.debug( - String.format( - "Problem during processing LCOV report: can't save %s data for line %s of coverage report file (%s).", + "Problem during processing LCOV report: can't save {} data for line {} of coverage report file ({}).", dataType, reportLineNum, e.toString() - ) ); inconsistenciesCounter++; } diff --git a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/nodejs/NodeCommand.java b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/nodejs/NodeCommand.java index 9958b71a6d3..301cc27149b 100644 --- a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/nodejs/NodeCommand.java +++ b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/nodejs/NodeCommand.java @@ -26,9 +26,9 @@ import java.util.concurrent.TimeUnit; import java.util.function.Consumer; import javax.annotation.Nullable; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.api.utils.Version; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; /** * Represents invocation of external NodeJS process. Use {@link NodeCommandBuilder} to create instance of this class. @@ -42,7 +42,7 @@ */ public class NodeCommand { - private static final Logger LOG = Loggers.get(NodeCommand.class); + private static final Logger LOG = LoggerFactory.getLogger(NodeCommand.class); final Consumer outputConsumer; final Consumer errorConsumer; diff --git a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/nodejs/NodeCommandBuilder.java b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/nodejs/NodeCommandBuilder.java index 0872b5b6ee4..84610fa8de0 100644 --- a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/nodejs/NodeCommandBuilder.java +++ b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/nodejs/NodeCommandBuilder.java @@ -29,7 +29,7 @@ import org.sonarsource.api.sonarlint.SonarLintSide; @ScannerSide -@SonarLintSide(lifespan = SonarLintSide.MULTIPLE_ANALYSES) +@SonarLintSide(lifespan = SonarLintSide.INSTANCE) public interface NodeCommandBuilder { NodeCommandBuilder minNodeVersion(Version minNodeVersion); diff --git a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/nodejs/NodeCommandBuilderImpl.java b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/nodejs/NodeCommandBuilderImpl.java index 94ba1877df4..227b4a5d351 100644 --- a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/nodejs/NodeCommandBuilderImpl.java +++ b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/nodejs/NodeCommandBuilderImpl.java @@ -34,15 +34,15 @@ import java.util.function.Consumer; import java.util.regex.Matcher; import java.util.regex.Pattern; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.api.config.Configuration; import org.sonar.api.utils.Version; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; import org.sonar.plugins.javascript.bridge.EmbeddedNode; public class NodeCommandBuilderImpl implements NodeCommandBuilder { - private static final Logger LOG = Loggers.get(NodeCommandBuilderImpl.class); + private static final Logger LOG = LoggerFactory.getLogger(NodeCommandBuilderImpl.class); public static final String NODE_EXECUTABLE_DEFAULT = "node"; private static final String NODE_EXECUTABLE_DEFAULT_MACOS = diff --git a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/nodejs/NodeVersion.java b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/nodejs/NodeVersion.java index 2daf8c301a2..3979bb67022 100644 --- a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/nodejs/NodeVersion.java +++ b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/nodejs/NodeVersion.java @@ -23,13 +23,13 @@ import static java.util.Collections.singletonList; import java.util.Map; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.api.utils.Version; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; public class NodeVersion { - private static final Logger LOG = Loggers.get(NodeVersion.class); + private static final Logger LOG = LoggerFactory.getLogger(NodeVersion.class); private NodeVersion() { // utility class diff --git a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/nodejs/ProcessWrapper.java b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/nodejs/ProcessWrapper.java index 07737420817..d3d833f7656 100644 --- a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/nodejs/ProcessWrapper.java +++ b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/nodejs/ProcessWrapper.java @@ -36,7 +36,7 @@ * thread */ @ScannerSide -@SonarLintSide(lifespan = SonarLintSide.MULTIPLE_ANALYSES) +@SonarLintSide(lifespan = SonarLintSide.INSTANCE) public interface ProcessWrapper { Process startProcess( List commandLine, diff --git a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/nodejs/StreamConsumer.java b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/nodejs/StreamConsumer.java index 5b6236555cd..122316d106f 100644 --- a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/nodejs/StreamConsumer.java +++ b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/nodejs/StreamConsumer.java @@ -28,12 +28,12 @@ import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; import java.util.function.Consumer; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; class StreamConsumer { - private static final Logger LOG = Loggers.get(StreamConsumer.class); + private static final Logger LOG = LoggerFactory.getLogger(StreamConsumer.class); private final ExecutorService executorService; StreamConsumer() { diff --git a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/sonarlint/SonarLintTypeCheckingCheckerImpl.java b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/sonarlint/SonarLintTypeCheckingCheckerImpl.java index 2e647efd31e..62ff6a71b2d 100644 --- a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/sonarlint/SonarLintTypeCheckingCheckerImpl.java +++ b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/sonarlint/SonarLintTypeCheckingCheckerImpl.java @@ -25,16 +25,16 @@ import java.nio.file.Files; import java.nio.file.Path; import java.util.stream.Stream; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.api.batch.sensor.SensorContext; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; import org.sonar.plugins.javascript.utils.PathWalker; import org.sonarsource.api.sonarlint.SonarLintSide; @SonarLintSide(lifespan = "MODULE") public class SonarLintTypeCheckingCheckerImpl implements SonarLintTypeCheckingChecker { - private static final Logger LOG = Loggers.get(SonarLintTypeCheckingCheckerImpl.class); + private static final Logger LOG = LoggerFactory.getLogger(SonarLintTypeCheckingCheckerImpl.class); static final String MAX_FILES_PROPERTY = "sonar.javascript.sonarlint.typechecking.maxfiles"; static final int DEFAULT_MAX_FILES_FOR_TYPE_CHECKING = 20_000; private static final int FILE_WALK_MAX_DEPTH = 20; diff --git a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/utils/ProgressReport.java b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/utils/ProgressReport.java index 466b3f31cd5..d83a7a2a33e 100644 --- a/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/utils/ProgressReport.java +++ b/sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/utils/ProgressReport.java @@ -20,8 +20,8 @@ package org.sonar.plugins.javascript.utils; import java.util.concurrent.atomic.AtomicBoolean; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class ProgressReport implements Runnable { @@ -55,7 +55,7 @@ public ProgressReport(String threadName, long period, Logger logger, String adje } public ProgressReport(String threadName, long period, String adjective) { - this(threadName, period, Loggers.get(ProgressReport.class), adjective); + this(threadName, period, LoggerFactory.getLogger(ProgressReport.class), adjective); } public ProgressReport(String threadName, long period) { diff --git a/sonar-plugin/sonar-javascript-plugin/src/test/java/org/sonar/plugins/javascript/bridge/CssRuleSensorTest.java b/sonar-plugin/sonar-javascript-plugin/src/test/java/org/sonar/plugins/javascript/bridge/CssRuleSensorTest.java index af36308936e..4f607be0d6b 100644 --- a/sonar-plugin/sonar-javascript-plugin/src/test/java/org/sonar/plugins/javascript/bridge/CssRuleSensorTest.java +++ b/sonar-plugin/sonar-javascript-plugin/src/test/java/org/sonar/plugins/javascript/bridge/CssRuleSensorTest.java @@ -123,7 +123,6 @@ public void setUp() throws IOException { new CssRuleSensor( sonarRuntime, bridgeServerMock, - new AnalysisWarningsWrapper(), CHECK_FACTORY ); } @@ -169,7 +168,6 @@ void test_descriptor_sonarqube_9_3() { new CssRuleSensor( sonarRuntime, bridgeServerMock, - new AnalysisWarningsWrapper(), CHECK_FACTORY ); DefaultSensorDescriptor sensorDescriptor = new DefaultSensorDescriptor(); @@ -189,7 +187,6 @@ void test_descriptor_sonarqube_9_2() { new CssRuleSensor( sonarRuntime, bridgeServerMock, - new AnalysisWarningsWrapper(), CHECK_FACTORY ); DefaultSensorDescriptor sensorDescriptor = new DefaultSensorDescriptor(); diff --git a/sonar-plugin/sonar-javascript-plugin/src/test/java/org/sonar/plugins/javascript/bridge/HtmlSensorTest.java b/sonar-plugin/sonar-javascript-plugin/src/test/java/org/sonar/plugins/javascript/bridge/HtmlSensorTest.java index 4c36880620b..98cc46c529b 100644 --- a/sonar-plugin/sonar-javascript-plugin/src/test/java/org/sonar/plugins/javascript/bridge/HtmlSensorTest.java +++ b/sonar-plugin/sonar-javascript-plugin/src/test/java/org/sonar/plugins/javascript/bridge/HtmlSensorTest.java @@ -317,7 +317,6 @@ private HtmlSensor createSensor() { return new HtmlSensor( checks(DUPLICATE_BRANCH_RULE_KEY, PARSING_ERROR_RULE_KEY), bridgeServerMock, - new AnalysisWarningsWrapper(), analysisProcessor ); } diff --git a/sonar-plugin/sonar-javascript-plugin/src/test/java/org/sonar/plugins/javascript/bridge/JavaScriptEslintBasedSensorTest.java b/sonar-plugin/sonar-javascript-plugin/src/test/java/org/sonar/plugins/javascript/bridge/JavaScriptEslintBasedSensorTest.java index 215d52d9faa..bc0580730cb 100644 --- a/sonar-plugin/sonar-javascript-plugin/src/test/java/org/sonar/plugins/javascript/bridge/JavaScriptEslintBasedSensorTest.java +++ b/sonar-plugin/sonar-javascript-plugin/src/test/java/org/sonar/plugins/javascript/bridge/JavaScriptEslintBasedSensorTest.java @@ -524,8 +524,6 @@ void should_skip_analysis_when_no_files() throws Exception { var javaScriptEslintBasedSensor = new JsTsSensor( checks(ESLINT_BASED_RULE), bridgeServerMock, - analysisWarnings, - tempFolder, analysisWithProgram, analysisWithWatchProgram ); @@ -542,8 +540,6 @@ void handle_missing_node() throws Exception { var javaScriptEslintBasedSensor = new JsTsSensor( checks(ESLINT_BASED_RULE), bridgeServerMock, - new AnalysisWarningsWrapper(), - tempFolder, analysisWithProgram, analysisWithWatchProgram ); @@ -606,8 +602,6 @@ void should_not_create_parsing_issue_when_no_rule() throws IOException { new JsTsSensor( checks(ESLINT_BASED_RULE), bridgeServerMock, - null, - tempFolder, analysisWithProgram, analysisWithWatchProgram ) @@ -788,8 +782,6 @@ private JsTsSensor createSensor( return new JsTsSensor( checks(ESLINT_BASED_RULE, "S2260", "S1451"), bridgeServerMock, - new AnalysisWarningsWrapper(), - tempFolder, sonarlintTypeCheckingChecker, analysisWithProgram, analysisWithWatchProgram diff --git a/sonar-plugin/sonar-javascript-plugin/src/test/java/org/sonar/plugins/javascript/bridge/JsTsSensorTest.java b/sonar-plugin/sonar-javascript-plugin/src/test/java/org/sonar/plugins/javascript/bridge/JsTsSensorTest.java index 8c4b51dcec4..0bc38fc8adf 100644 --- a/sonar-plugin/sonar-javascript-plugin/src/test/java/org/sonar/plugins/javascript/bridge/JsTsSensorTest.java +++ b/sonar-plugin/sonar-javascript-plugin/src/test/java/org/sonar/plugins/javascript/bridge/JsTsSensorTest.java @@ -187,7 +187,7 @@ void should_analyse() throws Exception { .contains( String.format( "Saving issue for rule no-all-duplicated-branches on file %s at line 1", - inputFile.absolutePath() + inputFile ) ); @@ -775,8 +775,6 @@ private JsTsSensor createSensor() { return new JsTsSensor( checks(ESLINT_BASED_RULE, "S2260"), bridgeServerMock, - analysisWarnings, - tempFolder, analysisWithProgram(), analysisWithWatchProgram() ); diff --git a/sonar-plugin/sonar-javascript-plugin/src/test/java/org/sonar/plugins/javascript/utils/ProgressReportTest.java b/sonar-plugin/sonar-javascript-plugin/src/test/java/org/sonar/plugins/javascript/utils/ProgressReportTest.java index 8605d3fc3d2..6b20ef8eafa 100644 --- a/sonar-plugin/sonar-javascript-plugin/src/test/java/org/sonar/plugins/javascript/utils/ProgressReportTest.java +++ b/sonar-plugin/sonar-javascript-plugin/src/test/java/org/sonar/plugins/javascript/utils/ProgressReportTest.java @@ -29,8 +29,8 @@ import java.util.concurrent.atomic.AtomicLong; import org.junit.jupiter.api.Test; import org.mockito.ArgumentCaptor; +import org.slf4j.Logger; import org.sonar.api.testfixtures.log.LogTesterJUnit5; -import org.sonar.api.utils.log.Logger; import org.sonar.api.utils.log.LoggerLevel; class ProgressReportTest { @@ -73,7 +73,7 @@ void testPlural() throws Exception { verify(logger, atLeast(3)).info(captor.capture()); List messages = captor.getAllValues(); - assertThat(messages.size()).isGreaterThanOrEqualTo(3); + assertThat(messages).hasSizeGreaterThanOrEqualTo(3); assertThat(messages.get(0)).isEqualTo("2 source files to be analyzed"); for (int i = 1; i < messages.size() - 1; i++) { assertThat(messages.get(i)).isEqualTo("0/2 files analyzed, current file: foo1.java"); @@ -107,7 +107,7 @@ void testSingular() throws Exception { verify(logger, atLeast(3)).info(captor.capture()); List messages = captor.getAllValues(); - assertThat(messages.size()).isGreaterThanOrEqualTo(3); + assertThat(messages).hasSizeGreaterThanOrEqualTo(3); assertThat(messages.get(0)).isEqualTo("1 source file to be analyzed"); for (int i = 1; i < messages.size() - 1; i++) { assertThat(messages.get(i)).isEqualTo("0/1 files analyzed, current file: foo.java");