From 3f6658633968006accea631d0e499f37209943d0 Mon Sep 17 00:00:00 2001 From: Victor Date: Tue, 5 Dec 2023 17:12:03 +0100 Subject: [PATCH 01/11] wip --- .../org/sonar/plugins/javascript/JavaScriptPlugin.java | 1 + .../plugins/javascript/bridge/AnalysisWithProgram.java | 8 ++++++++ .../plugins/javascript/bridge/JsTsSensorTest.java | 10 ++++++++++ 3 files changed, 19 insertions(+) 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 4bd341f1e9b..bb4d4534252 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 @@ -61,6 +61,7 @@ public class JavaScriptPlugin implements Plugin { + public static final Object TYPESCRIPT_VERSION = "5.3.2"; private static final Logger LOG = Loggers.get(JavaScriptPlugin.class); // Subcategories 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 6176a6caa27..d0a52ac57d8 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 @@ -33,6 +33,7 @@ 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; import org.sonar.plugins.javascript.bridge.BridgeServer.TsProgramRequest; import org.sonar.plugins.javascript.bridge.cache.CacheAnalysis; @@ -80,6 +81,13 @@ void analyzeFiles(List inputFiles, List tsConfigs) throws IOE var program = bridgeServer.createProgram(new TsProgramRequest(tsConfig)); if (program.error != null) { LOG.error("Failed to create program: " + program.error); + this.analysisWarnings.addUnique( + String.format( + "Failed to create TypeScript program with %s. Highest TypeScript supported version is %s", + tsConfig, + JavaScriptPlugin.TYPESCRIPT_VERSION + ) + ); PROFILER.stopInfo(); continue; } 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 48e18cad4b3..076c27e67e9 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 @@ -83,6 +83,7 @@ import org.sonar.api.utils.Version; import org.sonar.api.utils.log.LoggerLevel; import org.sonar.javascript.checks.CheckList; +import org.sonar.plugins.javascript.JavaScriptPlugin; import org.sonar.plugins.javascript.TestUtils; import org.sonar.plugins.javascript.bridge.BridgeServer.AnalysisResponse; import org.sonar.plugins.javascript.bridge.BridgeServer.JsAnalysisRequest; @@ -527,6 +528,15 @@ void should_analyze_by_program() throws Exception { ); assertThat(logTester.logs(LoggerLevel.ERROR)) .contains("Failed to create program: something went wrong"); + + assertThat(analysisWarnings.warnings) + .contains( + String.format( + "Failed to create TypeScript program with %s. Highest TypeScript supported version is %s", + absolutePath(baseDir, "dir3/tsconfig.json"), + JavaScriptPlugin.TYPESCRIPT_VERSION + ) + ); } @Test From f23e3163ae9e7290805ee3056f920fd8059fd96d Mon Sep 17 00:00:00 2001 From: Victor Diez Date: Wed, 6 Dec 2023 11:01:36 +0100 Subject: [PATCH 02/11] add analysiswarnings for parsing errors --- .../plugins/javascript/bridge/AbstractAnalysis.java | 5 ++++- .../plugins/javascript/bridge/AnalysisProcessor.java | 8 ++++++++ .../javascript/bridge/AnalysisWithProgram.java | 10 +++++++--- .../javascript/bridge/AnalysisWithWatchProgram.java | 11 +++++++++-- .../bridge/JavaScriptEslintBasedSensorTest.java | 10 ++++++---- .../plugins/javascript/bridge/JsTsSensorTest.java | 7 ++++++- 6 files changed, 40 insertions(+), 11 deletions(-) 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 795d1b66af5..69b2d1b87d1 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 @@ -45,15 +45,18 @@ abstract class AbstractAnalysis { JsTsChecks checks; ProgressReport progressReport; AnalysisMode analysisMode; + protected final AnalysisWarningsWrapper analysisWarnings; AbstractAnalysis( BridgeServer bridgeServer, Monitoring monitoring, - AnalysisProcessor analysisProcessor + AnalysisProcessor analysisProcessor, + AnalysisWarningsWrapper analysisWarnings ) { this.bridgeServer = bridgeServer; this.monitoring = monitoring; this.analysisProcessor = analysisProcessor; + this.analysisWarnings = analysisWarnings; } protected static String inputFileLanguage(InputFile file) { 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 0fac76bd1a8..93b10102f5e 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 @@ -29,6 +29,7 @@ import java.io.Serializable; import java.util.Arrays; +import java.util.HashSet; import java.util.List; import java.util.stream.Collectors; import org.sonar.api.batch.fs.InputFile; @@ -70,6 +71,7 @@ public class AnalysisProcessor { private ContextUtils contextUtils; private InputFile file; private JsTsChecks checks; + HashSet parsingErrors; public AnalysisProcessor( NoSonarFilter noSonarFilter, @@ -79,6 +81,7 @@ public AnalysisProcessor( this.noSonarFilter = noSonarFilter; this.fileLinesContextFactory = fileLinesContextFactory; this.monitoring = monitoring; + this.parsingErrors = new HashSet<>(); } void processResponse( @@ -92,6 +95,7 @@ void processResponse( this.checks = checks; this.file = file; if (response.parsingError != null) { + parsingErrors.add(file.absolutePath()); processParsingError(response.parsingError); return; } @@ -117,6 +121,10 @@ void processResponse( } } + public int parsingErrorsCount() { + return parsingErrors.size(); + } + void processCacheAnalysis(SensorContext context, InputFile file, CacheAnalysis cacheAnalysis) { this.context = context; contextUtils = new ContextUtils(context); 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 d0a52ac57d8..e5ab66f6e47 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 @@ -47,7 +47,6 @@ public class AnalysisWithProgram extends AbstractAnalysis { private static final Logger LOG = Loggers.get(AnalysisWithProgram.class); private static final Profiler PROFILER = Profiler.create(LOG); - private final AnalysisWarningsWrapper analysisWarnings; public AnalysisWithProgram( BridgeServer bridgeServer, @@ -55,8 +54,7 @@ public AnalysisWithProgram( AnalysisProcessor analysisProcessor, AnalysisWarningsWrapper analysisWarnings ) { - super(bridgeServer, monitoring, analysisProcessor); - this.analysisWarnings = analysisWarnings; + super(bridgeServer, monitoring, analysisProcessor, analysisWarnings); } @Override @@ -118,6 +116,12 @@ void analyzeFiles(List inputFiles, List tsConfigs) throws IOE } } success = true; + this.analysisWarnings.addUnique( + String.format( + "There were %d parsing errors while analyzing the project. Check the logs for further details", + analysisProcessor.parsingErrorsCount() + ) + ); } finally { if (success) { progressReport.stop(); 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 bf0432655e6..9be320cf2c3 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 @@ -48,9 +48,10 @@ public class AnalysisWithWatchProgram extends AbstractAnalysis { public AnalysisWithWatchProgram( BridgeServer bridgeServer, Monitoring monitoring, - AnalysisProcessor analysisProcessor + AnalysisProcessor analysisProcessor, + AnalysisWarningsWrapper analysisWarnings ) { - super(bridgeServer, monitoring, analysisProcessor); + super(bridgeServer, monitoring, analysisProcessor, analysisWarnings); } @Override @@ -82,6 +83,12 @@ public void analyzeFiles(List inputFiles, List tsConfigs) thr } } success = true; + this.analysisWarnings.addUnique( + String.format( + "There were %d parsing errors while analyzing the project. Check the logs for further details", + analysisProcessor.parsingErrorsCount() + ) + ); } finally { if (success) { progressReport.stop(); 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 9316b0fc6cf..3503c43501a 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 @@ -153,15 +153,17 @@ public void setUp() throws Exception { when(fileLinesContextFactory.createFor(any(InputFile.class))).thenReturn(fileLinesContext); analysisProcessor = new AnalysisProcessor(new DefaultNoSonarFilter(), fileLinesContextFactory, monitoring); + var analysisWarnings = new AnalysisWarningsWrapper(); + analysisWithProgram = - new AnalysisWithProgram( + new AnalysisWithProgram(bridgeServerMock, monitoring, analysisProcessor, analysisWarnings); + analysisWithWatchProgram = + new AnalysisWithWatchProgram( bridgeServerMock, monitoring, analysisProcessor, - new AnalysisWarningsWrapper() + analysisWarnings ); - analysisWithWatchProgram = - new AnalysisWithWatchProgram(bridgeServerMock, monitoring, analysisProcessor); } @Test 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 076c27e67e9..d4d215be86a 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 @@ -805,7 +805,12 @@ private AnalysisWithProgram analysisWithProgram() { } private AnalysisWithWatchProgram analysisWithWatchProgram() { - return new AnalysisWithWatchProgram(bridgeServerMock, monitoring, processAnalysis); + return new AnalysisWithWatchProgram( + bridgeServerMock, + monitoring, + processAnalysis, + analysisWarnings + ); } private AnalysisResponse createResponse() { From c89a6a108a641e7a96a32ecd98611512fede9751 Mon Sep 17 00:00:00 2001 From: Victor Diez Date: Wed, 6 Dec 2023 12:09:21 +0100 Subject: [PATCH 03/11] only add warnings if parsing errors exist --- .../javascript/bridge/AnalysisWithProgram.java | 14 ++++++++------ .../bridge/AnalysisWithWatchProgram.java | 14 ++++++++------ 2 files changed, 16 insertions(+), 12 deletions(-) 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 e5ab66f6e47..e070c668ef3 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 @@ -116,12 +116,14 @@ void analyzeFiles(List inputFiles, List tsConfigs) throws IOE } } success = true; - this.analysisWarnings.addUnique( - String.format( - "There were %d parsing errors while analyzing the project. Check the logs for further details", - analysisProcessor.parsingErrorsCount() - ) - ); + if (analysisProcessor.parsingErrorsCount() > 0) { + this.analysisWarnings.addUnique( + String.format( + "There were %d parsing errors while analyzing the project. Check the logs for further details", + analysisProcessor.parsingErrorsCount() + ) + ); + } } finally { if (success) { progressReport.stop(); 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 9be320cf2c3..9056eb68ba4 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 @@ -83,12 +83,14 @@ public void analyzeFiles(List inputFiles, List tsConfigs) thr } } success = true; - this.analysisWarnings.addUnique( - String.format( - "There were %d parsing errors while analyzing the project. Check the logs for further details", - analysisProcessor.parsingErrorsCount() - ) - ); + if (analysisProcessor.parsingErrorsCount() > 0) { + this.analysisWarnings.addUnique( + String.format( + "There were %d parsing errors while analyzing the project. Check the logs for further details", + analysisProcessor.parsingErrorsCount() + ) + ); + } } finally { if (success) { progressReport.stop(); From b1be9524e9dab4b5a13448b0312a0cf3a14083d0 Mon Sep 17 00:00:00 2001 From: Victor Diez Date: Wed, 6 Dec 2023 13:02:19 +0100 Subject: [PATCH 04/11] fix test --- .../sonar/plugins/javascript/bridge/JsTsSensorTest.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) 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 d4d215be86a..8672af97ceb 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 @@ -42,6 +42,7 @@ import java.util.Collection; import java.util.Iterator; import java.util.List; +import java.util.regex.Pattern; import java.util.stream.Collectors; import java.util.stream.StreamSupport; import org.junit.jupiter.api.BeforeEach; @@ -507,8 +508,12 @@ void should_analyze_by_program() throws Exception { when(bridgeServerMock.analyzeTypeScript(any())).thenReturn(new AnalysisResponse()); ArgumentCaptor captor = ArgumentCaptor.forClass(JsAnalysisRequest.class); + ArgumentCaptor captorProgram = ArgumentCaptor.forClass( + TsProgramRequest.class + ); createSensor().execute(context); verify(bridgeServerMock, times(4)).analyzeTypeScript(captor.capture()); + verify(bridgeServerMock, times(4)).createProgram(captorProgram.capture()); assertThat(captor.getAllValues()) .extracting(req -> req.filePath) .containsExactlyInAnyOrder( @@ -533,7 +538,7 @@ void should_analyze_by_program() throws Exception { .contains( String.format( "Failed to create TypeScript program with %s. Highest TypeScript supported version is %s", - absolutePath(baseDir, "dir3/tsconfig.json"), + captorProgram.getAllValues().get(2).tsConfig, JavaScriptPlugin.TYPESCRIPT_VERSION ) ); From 7c5934ee34fdd61e9f79f8d1e2c05787c1befb0c Mon Sep 17 00:00:00 2001 From: Victor Date: Wed, 6 Dec 2023 15:23:51 +0100 Subject: [PATCH 05/11] Update sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/JavaScriptPlugin.java Co-authored-by: Ilia Kebets <104737176+ilia-kebets-sonarsource@users.noreply.github.com> --- .../java/org/sonar/plugins/javascript/JavaScriptPlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 bb4d4534252..5557bd2da05 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 @@ -61,7 +61,7 @@ public class JavaScriptPlugin implements Plugin { - public static final Object TYPESCRIPT_VERSION = "5.3.2"; + public static final String TYPESCRIPT_VERSION = "5.3.2"; private static final Logger LOG = Loggers.get(JavaScriptPlugin.class); // Subcategories From 78aa5203441e13417d07c5da571aa7a7f2ad874b Mon Sep 17 00:00:00 2001 From: Victor Date: Wed, 6 Dec 2023 15:24:34 +0100 Subject: [PATCH 06/11] Update sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/AnalysisProcessor.java Co-authored-by: Ilia Kebets <104737176+ilia-kebets-sonarsource@users.noreply.github.com> --- .../org/sonar/plugins/javascript/bridge/AnalysisProcessor.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 93b10102f5e..c6321284c7f 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 @@ -71,7 +71,7 @@ public class AnalysisProcessor { private ContextUtils contextUtils; private InputFile file; private JsTsChecks checks; - HashSet parsingErrors; + HashSet parsingErrorFiles; public AnalysisProcessor( NoSonarFilter noSonarFilter, From 7509771d3fe3a2d43d18946a1541b4c5dd5665c5 Mon Sep 17 00:00:00 2001 From: Victor Date: Wed, 6 Dec 2023 15:24:44 +0100 Subject: [PATCH 07/11] Update sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/AnalysisWithProgram.java Co-authored-by: Ilia Kebets <104737176+ilia-kebets-sonarsource@users.noreply.github.com> --- .../sonar/plugins/javascript/bridge/AnalysisWithProgram.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 e070c668ef3..f59bab243b8 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 @@ -81,7 +81,7 @@ void analyzeFiles(List inputFiles, List tsConfigs) throws IOE LOG.error("Failed to create program: " + program.error); this.analysisWarnings.addUnique( String.format( - "Failed to create TypeScript program with %s. Highest TypeScript supported version is %s", + "Failed to create TypeScript program with TSconfig file %s. Highest TypeScript supported version is %s.", tsConfig, JavaScriptPlugin.TYPESCRIPT_VERSION ) From 67673d5a1f3649db8f518e9bedd0585a60439cf1 Mon Sep 17 00:00:00 2001 From: Victor Date: Wed, 6 Dec 2023 15:25:00 +0100 Subject: [PATCH 08/11] Update sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/AnalysisWithWatchProgram.java Co-authored-by: Ilia Kebets <104737176+ilia-kebets-sonarsource@users.noreply.github.com> --- .../plugins/javascript/bridge/AnalysisWithWatchProgram.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 9056eb68ba4..97a291ba9ae 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 @@ -86,7 +86,7 @@ public void analyzeFiles(List inputFiles, List tsConfigs) thr if (analysisProcessor.parsingErrorsCount() > 0) { this.analysisWarnings.addUnique( String.format( - "There were %d parsing errors while analyzing the project. Check the logs for further details", + "There were parsing errors in %d files while analyzing the project. Check the logs for further details.", analysisProcessor.parsingErrorsCount() ) ); From 3b0bc2a6891bb0d56fa71dd2800627916d7bf068 Mon Sep 17 00:00:00 2001 From: Victor Diez Date: Wed, 6 Dec 2023 15:28:40 +0100 Subject: [PATCH 09/11] changes after review --- .../plugins/javascript/bridge/AnalysisProcessor.java | 8 ++++---- .../plugins/javascript/bridge/AnalysisWithProgram.java | 6 +++--- .../javascript/bridge/AnalysisWithWatchProgram.java | 4 ++-- .../sonar/plugins/javascript/bridge/JsTsSensorTest.java | 2 +- 4 files changed, 10 insertions(+), 10 deletions(-) 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 c6321284c7f..d08713a8354 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 @@ -81,7 +81,7 @@ public AnalysisProcessor( this.noSonarFilter = noSonarFilter; this.fileLinesContextFactory = fileLinesContextFactory; this.monitoring = monitoring; - this.parsingErrors = new HashSet<>(); + this.parsingErrorFiles = new HashSet<>(); } void processResponse( @@ -95,7 +95,7 @@ void processResponse( this.checks = checks; this.file = file; if (response.parsingError != null) { - parsingErrors.add(file.absolutePath()); + parsingErrorFiles.add(file.absolutePath()); processParsingError(response.parsingError); return; } @@ -121,8 +121,8 @@ void processResponse( } } - public int parsingErrorsCount() { - return parsingErrors.size(); + public int parsingErrorFilesCount() { + return parsingErrorFiles.size(); } void processCacheAnalysis(SensorContext context, InputFile file, CacheAnalysis cacheAnalysis) { 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 f59bab243b8..4197a872e58 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 @@ -81,7 +81,7 @@ void analyzeFiles(List inputFiles, List tsConfigs) throws IOE 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.", + "Failed to create TypeScript program with TSConfig file %s. Highest TypeScript supported version is %s.", tsConfig, JavaScriptPlugin.TYPESCRIPT_VERSION ) @@ -116,11 +116,11 @@ void analyzeFiles(List inputFiles, List tsConfigs) throws IOE } } success = true; - if (analysisProcessor.parsingErrorsCount() > 0) { + if (analysisProcessor.parsingErrorFilesCount() > 0) { this.analysisWarnings.addUnique( String.format( "There were %d parsing errors while analyzing the project. Check the logs for further details", - analysisProcessor.parsingErrorsCount() + analysisProcessor.parsingErrorFilesCount() ) ); } 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 97a291ba9ae..d7ae0960acf 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 @@ -83,11 +83,11 @@ public void analyzeFiles(List inputFiles, List tsConfigs) thr } } success = true; - if (analysisProcessor.parsingErrorsCount() > 0) { + if (analysisProcessor.parsingErrorFilesCount() > 0) { this.analysisWarnings.addUnique( String.format( "There were parsing errors in %d files while analyzing the project. Check the logs for further details.", - analysisProcessor.parsingErrorsCount() + analysisProcessor.parsingErrorFilesCount() ) ); } 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 8672af97ceb..2471d4ca214 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 @@ -537,7 +537,7 @@ void should_analyze_by_program() throws Exception { assertThat(analysisWarnings.warnings) .contains( String.format( - "Failed to create TypeScript program with %s. Highest TypeScript supported version is %s", + "Failed to create TypeScript program with TSConfig file %s. Highest TypeScript supported version is %s.", captorProgram.getAllValues().get(2).tsConfig, JavaScriptPlugin.TYPESCRIPT_VERSION ) From ad45b88835d4053ea2624facc6aa5ac650ab0c7b Mon Sep 17 00:00:00 2001 From: Victor Date: Wed, 6 Dec 2023 15:30:35 +0100 Subject: [PATCH 10/11] Update sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/bridge/AnalysisWithProgram.java Co-authored-by: Ilia Kebets <104737176+ilia-kebets-sonarsource@users.noreply.github.com> --- .../sonar/plugins/javascript/bridge/AnalysisWithProgram.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 4197a872e58..75743a2216e 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 @@ -119,7 +119,7 @@ void analyzeFiles(List inputFiles, List tsConfigs) throws IOE if (analysisProcessor.parsingErrorFilesCount() > 0) { this.analysisWarnings.addUnique( String.format( - "There were %d parsing errors while analyzing the project. Check the logs for further details", + "There were parsing errors in %d files while analyzing the project. Check the logs for further details.", analysisProcessor.parsingErrorFilesCount() ) ); From 8544a8b4d941c8fd294aefb5e0ccee6444e89100 Mon Sep 17 00:00:00 2001 From: Victor Diez Date: Wed, 6 Dec 2023 15:35:10 +0100 Subject: [PATCH 11/11] clearer var name --- .../plugins/javascript/bridge/AnalysisProcessor.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) 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 d08713a8354..602846afc20 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 @@ -71,7 +71,7 @@ public class AnalysisProcessor { private ContextUtils contextUtils; private InputFile file; private JsTsChecks checks; - HashSet parsingErrorFiles; + HashSet uniqueParsingErrors; public AnalysisProcessor( NoSonarFilter noSonarFilter, @@ -81,7 +81,7 @@ public AnalysisProcessor( this.noSonarFilter = noSonarFilter; this.fileLinesContextFactory = fileLinesContextFactory; this.monitoring = monitoring; - this.parsingErrorFiles = new HashSet<>(); + this.uniqueParsingErrors = new HashSet<>(); } void processResponse( @@ -95,7 +95,7 @@ void processResponse( this.checks = checks; this.file = file; if (response.parsingError != null) { - parsingErrorFiles.add(file.absolutePath()); + uniqueParsingErrors.add(file.absolutePath()); processParsingError(response.parsingError); return; } @@ -122,7 +122,7 @@ void processResponse( } public int parsingErrorFilesCount() { - return parsingErrorFiles.size(); + return uniqueParsingErrors.size(); } void processCacheAnalysis(SensorContext context, InputFile file, CacheAnalysis cacheAnalysis) {