From ac175e2de9d32bdff651edd176c28a017869cac7 Mon Sep 17 00:00:00 2001 From: san-zrl Date: Thu, 23 Jul 2026 11:58:31 +0200 Subject: [PATCH 1/3] adapted test to new algo names Signed-off-by: san-zrl --- .../java/org/pqca/scanning/PythonScannerServiceTest.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/test/java/org/pqca/scanning/PythonScannerServiceTest.java b/src/test/java/org/pqca/scanning/PythonScannerServiceTest.java index 7f32067..718ede4 100644 --- a/src/test/java/org/pqca/scanning/PythonScannerServiceTest.java +++ b/src/test/java/org/pqca/scanning/PythonScannerServiceTest.java @@ -52,19 +52,19 @@ void test() throws ClientDisconnected { assertThat( assertableCBOM.hasDetectionWithNameAt( - "SHA256", "src/test/testdata/python/pyca/generate_key.py", 4)) + "SHA-256", "src/test/testdata/python/pyca/generate_key.py", 4)) .isTrue(); assertThat( assertableCBOM.hasDetectionWithNameAt( - "AES128-CBC-PKCS7", + "AES-128-CBC-PKCS7", "src/test/testdata/python/pyca/generate_key.py", 4)) .isTrue(); assertThat( assertableCBOM.hasDetectionWithNameAt( - "HMAC-SHA256", "src/test/testdata/python/pyca/generate_key.py", 4)) + "HMAC-SHA-256", "src/test/testdata/python/pyca/generate_key.py", 4)) .isTrue(); assertThat( From 2dfa960da295481a29e0e335ab85f8834fa9f256 Mon Sep 17 00:00:00 2001 From: san-zrl Date: Thu, 23 Jul 2026 11:58:41 +0200 Subject: [PATCH 2/3] adapted test to new algo names Signed-off-by: san-zrl --- src/test/java/org/pqca/scanning/GoScannerServiceTest.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/test/java/org/pqca/scanning/GoScannerServiceTest.java b/src/test/java/org/pqca/scanning/GoScannerServiceTest.java index 1ee297e..f1acb4d 100644 --- a/src/test/java/org/pqca/scanning/GoScannerServiceTest.java +++ b/src/test/java/org/pqca/scanning/GoScannerServiceTest.java @@ -47,12 +47,12 @@ void test() throws ClientDisconnected { // check - verify cryptographic assets are detected AssertableCBOM assertableCBOM = new AssertableCBOM(scanResult.cbom()); - assertThat(scanResult.cbom().cycloneDXbom().getComponents()).hasSize(27); + assertThat(scanResult.cbom().cycloneDXbom().getComponents()).hasSize(28); assertableCBOM.hasNumberOfDetections(69); assertThat( assertableCBOM.hasDetectionWithNameAt( - "SHA256", + "SHA-256", "src/test/testdata/go/gocrypto/GoCryptoSHA256TestFile.go", 10)) .isTrue(); @@ -73,7 +73,7 @@ void test() throws ClientDisconnected { assertThat( assertableCBOM.hasDetectionWithNameAt( - "HMAC-SHA256", + "HMAC-SHA-256", "src/test/testdata/go/gocrypto/GoCryptoHMACTestFile.go", 11)) .isTrue(); From 24597888c69451b4243c258e06b67c69882ca8b5 Mon Sep 17 00:00:00 2001 From: san-zrl Date: Tue, 18 Aug 2026 10:45:54 +0200 Subject: [PATCH 3/3] extract go scanner helper to java temp dir Signed-off-by: san-zrl --- pom.xml | 2 +- .../pqca/scanning/go/GoScannerService.java | 79 +++++++++++-------- .../pqca/scanning/GoScannerServiceTest.java | 21 ++++- 3 files changed, 65 insertions(+), 37 deletions(-) diff --git a/pom.xml b/pom.xml index 711ae28..5f2f893 100644 --- a/pom.xml +++ b/pom.xml @@ -13,7 +13,7 @@ 21 UTF-8 - 1.5.1 + 1.6.1 13.4.3.4290 25.8.0.112029 diff --git a/src/main/java/org/pqca/scanning/go/GoScannerService.java b/src/main/java/org/pqca/scanning/go/GoScannerService.java index e19676e..55dacad 100644 --- a/src/main/java/org/pqca/scanning/go/GoScannerService.java +++ b/src/main/java/org/pqca/scanning/go/GoScannerService.java @@ -24,6 +24,7 @@ import jakarta.annotation.Nullable; import java.io.File; import java.io.IOException; +import java.nio.file.Files; import java.util.ArrayList; import java.util.List; import org.apache.commons.io.FileUtils; @@ -38,7 +39,6 @@ import org.sonar.api.batch.fs.InputFile; import org.sonar.api.batch.sensor.SensorContext; import org.sonar.api.batch.sensor.internal.SensorContextTester; -import org.sonar.api.impl.utils.DefaultTempFolder; import org.sonar.api.rule.RuleKey; import org.sonar.go.converter.GoConverter; import org.sonar.go.plugin.GoChecks; @@ -65,43 +65,52 @@ public GoScannerService( int numberOfScannedLines = 0; int numberOfScannedFiles = 0; - File goTempFolder = new DefaultTempFolder(this.projectDirectory).newDir(); - + File goTempFolder = null; try { - GoConverter goConverter = new GoConverter(goTempFolder); - GoCheck visitor = new GoDetectionCollectionRule(this); - GoChecks checks = new GoRuleChecks(visitor); - final SensorContextTester sensorContext = SensorContextTester.create(projectDirectory); - - // Go scanner (CryptoGoSensor) reads files from context - index.forEach( - project -> project.inputFileList().forEach(sensorContext.fileSystem()::add)); - - for (ProjectModule project : index) { - numberOfScannedFiles += project.inputFileList().size(); - numberOfScannedLines += - project.inputFileList().stream().mapToInt(InputFile::lines).sum(); - - final String projectStr = - project.identifier() + " (" + counter + "/" + index.size() + ")"; - if (this.progressDispatcher != null) { - this.progressDispatcher.send( - new ProgressMessage( - ProgressMessageType.LABEL, - "Scanning go project " + projectStr)); - } - LOGGER.info("Scanning go project {}", projectStr); - - CryptoGoSensor.execute((SensorContext) sensorContext, goConverter, checks); + goTempFolder = Files.createTempDirectory("cbomkit-go-").toFile(); + } catch (IOException e) { + LOGGER.error("Failed to create temp dir for go scanner", e); + } - counter += 1; - } - LOGGER.info("Scanned {} go projects", index.size()); - } finally { + if (goTempFolder != null) { try { - FileUtils.deleteDirectory(goTempFolder); - } catch (IOException e) { - LOGGER.error("Failed to delete temp dir {}", goTempFolder); + GoConverter goConverter = new GoConverter(goTempFolder); + GoCheck visitor = new GoDetectionCollectionRule(this); + GoChecks checks = new GoRuleChecks(visitor); + final SensorContextTester sensorContext = + SensorContextTester.create(projectDirectory); + + // Go scanner (CryptoGoSensor) reads files from context + index.forEach( + project -> + project.inputFileList().forEach(sensorContext.fileSystem()::add)); + + for (ProjectModule project : index) { + numberOfScannedFiles += project.inputFileList().size(); + numberOfScannedLines += + project.inputFileList().stream().mapToInt(InputFile::lines).sum(); + + final String projectStr = + project.identifier() + " (" + counter + "/" + index.size() + ")"; + if (this.progressDispatcher != null) { + this.progressDispatcher.send( + new ProgressMessage( + ProgressMessageType.LABEL, + "Scanning go project " + projectStr)); + } + LOGGER.info("Scanning go project {}", projectStr); + + CryptoGoSensor.execute((SensorContext) sensorContext, goConverter, checks); + + counter += 1; + } + LOGGER.info("Scanned {} go projects", index.size()); + } finally { + try { + FileUtils.deleteDirectory(goTempFolder); + } catch (IOException e) { + LOGGER.error("Failed to delete temp dir {}", goTempFolder, e); + } } } diff --git a/src/test/java/org/pqca/scanning/GoScannerServiceTest.java b/src/test/java/org/pqca/scanning/GoScannerServiceTest.java index f1acb4d..1e3b243 100644 --- a/src/test/java/org/pqca/scanning/GoScannerServiceTest.java +++ b/src/test/java/org/pqca/scanning/GoScannerServiceTest.java @@ -22,7 +22,13 @@ import static org.assertj.core.api.Assertions.assertThat; import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; +import java.util.stream.Stream; import org.junit.jupiter.api.Test; import org.pqca.errors.ClientDisconnected; import org.pqca.indexing.ProjectModule; @@ -33,9 +39,11 @@ class GoScannerServiceTest { @Test - void test() throws ClientDisconnected { + void test() throws ClientDisconnected, IOException { // indexing final File projectDirectory = new File("src/test/testdata/go/gocrypto"); + final Set projectDirectoryEntriesBeforeScan = + listRelativePaths(projectDirectory.toPath()); final GoIndexService goIndexService = new GoIndexService(projectDirectory); final List goModules = goIndexService.index(null); assertThat(goModules).hasSize(1); @@ -84,5 +92,16 @@ void test() throws ClientDisconnected { "src/test/testdata/go/gocrypto/GoCryptoPBKDF2TestFile.go", 15)) .isTrue(); + + assertThat(listRelativePaths(projectDirectory.toPath())) + .isEqualTo(projectDirectoryEntriesBeforeScan); + } + + private static Set listRelativePaths(Path projectDirectory) throws IOException { + try (Stream paths = Files.walk(projectDirectory)) { + return paths.map(projectDirectory::relativize) + .map(Path::toString) + .collect(Collectors.toSet()); + } } }