From 2cf9a6da64348762fad6ef98a55504635036422d Mon Sep 17 00:00:00 2001 From: Agustin Isasmendi Date: Mon, 26 May 2025 09:44:45 +0200 Subject: [PATCH] fix(SP-2588): Intellij inspect cleanup --- src/main/java/com/scanoss/Scanner.java | 8 +++++--- .../java/com/scanoss/ScannerPostProcessor.java | 5 ++--- src/main/java/com/scanoss/Winnowing.java | 7 +++---- .../java/com/scanoss/cli/ScanCommandLine.java | 6 +----- src/main/java/com/scanoss/filters/AntFilter.java | 5 +++-- .../java/com/scanoss/filters/GitIgnoreFilter.java | 4 ++-- .../java/com/scanoss/rest/HttpStatusCode.java | 15 ++++++--------- src/main/java/com/scanoss/utils/Hpsm.java | 2 +- .../java/com/scanoss/utils/WinnowingUtils.java | 6 +++--- src/test/java/com/scanoss/TestBom.java | 3 +-- src/test/java/com/scanoss/TestScanner.java | 8 ++++---- src/test/java/com/scanoss/TestSettings.java | 1 - 12 files changed, 31 insertions(+), 39 deletions(-) diff --git a/src/main/java/com/scanoss/Scanner.java b/src/main/java/com/scanoss/Scanner.java index 7ae7904..9f86e63 100644 --- a/src/main/java/com/scanoss/Scanner.java +++ b/src/main/java/com/scanoss/Scanner.java @@ -223,8 +223,9 @@ public List processFolder(@NonNull String folder, FileProcessor processo List> futures = new ArrayList<>(); try { Files.walkFileTree(Paths.get(folder), new SimpleFileVisitor<>() { + @NonNull @Override - public FileVisitResult preVisitDirectory(Path file, BasicFileAttributes attrs) { + public FileVisitResult preVisitDirectory(Path file, @NonNull BasicFileAttributes attrs) { if(folderFilter.test(file)) { log.debug("Processing file: {}", file.getFileName().toString()); return FileVisitResult.SKIP_SUBTREE; // Skip the rest of this directory tree @@ -232,8 +233,9 @@ public FileVisitResult preVisitDirectory(Path file, BasicFileAttributes attrs) { return FileVisitResult.CONTINUE; } + @NonNull @Override - public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) { + public FileVisitResult visitFile(Path file, @NonNull BasicFileAttributes attrs) { if (attrs.isRegularFile() && !fileFilter.test(file) && attrs.size() > 0) { String filename = file.toString(); Future future = executorService.submit(() -> processor.process(filename, stripDirectory(folder, filename))); @@ -292,7 +294,7 @@ public List processFileList(@NonNull String root, @NonNull List if (skipDir) { continue; // skip this file as the folder is not allowed } - String nameLower = path.getFileName().toString().toLowerCase(); + if (!this.fileFilter.test(path)) { Path fullPath = Path.of(root, file); File f = fullPath.toFile(); diff --git a/src/main/java/com/scanoss/ScannerPostProcessor.java b/src/main/java/com/scanoss/ScannerPostProcessor.java index 82b05da..5bfce38 100644 --- a/src/main/java/com/scanoss/ScannerPostProcessor.java +++ b/src/main/java/com/scanoss/ScannerPostProcessor.java @@ -146,7 +146,6 @@ private void buildPurl2ComponentDetailsMap(@NonNull List scanFil * * @param results The list of scan results to process and modify * @param rules The list of replacement rules to apply - * @return The modified input list of scan results with updated PURLs */ private void applyReplaceRules(@NonNull List results, @NonNull List rules) { log.debug("Starting replace rules application for {} results with {} rules", results.size(), rules.size()); @@ -268,7 +267,7 @@ private ScanFileDetails createUpdatedResultDetails(ScanFileDetails existingCompo /** * Marks all components in the list as non-matching by replacing each component - * with a new instance that has MatchType.NONE while preserving the serverDetails + * with a new instance that has MatchType. NONE while preserving the serverDetails * Modifies the input list in place using List.replaceAll(). * * @param components List of scan file details to be marked as non-matching @@ -451,7 +450,7 @@ private boolean isPurlMatch(String rulePurl, String[] resultPurls) { * 1. The result has a valid file path identifier * 2. The result contains a non-empty list of scan details * 3. The primary scan detail entry (first in the list) exists - * + *

* This structural validation is a prerequisite for any further processing of scan results, * such as match analysis or rule processing. Without these basic elements, the scan result * cannot be meaningfully processed. diff --git a/src/main/java/com/scanoss/Winnowing.java b/src/main/java/com/scanoss/Winnowing.java index fb8fd16..c868d8e 100644 --- a/src/main/java/com/scanoss/Winnowing.java +++ b/src/main/java/com/scanoss/Winnowing.java @@ -32,7 +32,6 @@ import org.apache.tika.Tika; import org.apache.tika.mime.MediaType; import org.apache.tika.mime.MediaTypeRegistry; -import org.jetbrains.annotations.NotNull; import java.io.ByteArrayInputStream; import java.io.File; @@ -91,7 +90,7 @@ public class Winnowing { * @param obfuscatedPath the obfuscated path * @return the real file path corresponding to the provided obfuscated path, or the original path if no mapping exists */ - public String deobfuscateFilePath(@NotNull String obfuscatedPath) { + public String deobfuscateFilePath(@NonNull String obfuscatedPath) { String originalPath = obfuscationMap.get(obfuscatedPath); return originalPath != null ? originalPath : obfuscatedPath; } @@ -229,7 +228,7 @@ public String wfpForContents(@NonNull String filename, Boolean binFile, byte[] c * @param originalPath the original file path to be obfuscated; must not be null * @return the obfuscated file path with a unique identifier and the original file extension */ - private String obfuscateFilePath(@NotNull String originalPath) { + private String obfuscateFilePath(@NonNull String originalPath) { final String extension = extractExtension(originalPath); // Generate a unique identifier for the obfuscated file using a thread-safe approach @@ -244,7 +243,7 @@ private String obfuscateFilePath(@NotNull String originalPath) { * @param path the file path or name (must not be null) * @return the file extension with leading dot (e.g., ".txt") or empty string if no extension */ - private String extractExtension(@NotNull String path) { + private String extractExtension(@NonNull String path) { try { String extractedExtension = FilenameUtils.getExtension(path).trim(); return extractedExtension.isEmpty() ? "" : "." + extractedExtension; diff --git a/src/main/java/com/scanoss/cli/ScanCommandLine.java b/src/main/java/com/scanoss/cli/ScanCommandLine.java index 4a8a01a..d3e6c53 100644 --- a/src/main/java/com/scanoss/cli/ScanCommandLine.java +++ b/src/main/java/com/scanoss/cli/ScanCommandLine.java @@ -121,10 +121,6 @@ public void run() { throw new RuntimeException("Error: No file or folder specified to scan"); } - //TODO: Deprecate options - String sbomType = null; - String sbom = null; - String caCertPem = null; if (caCert != null && !caCert.isEmpty()) { caCertPem = loadFileToString(caCert); @@ -167,7 +163,7 @@ public void run() { scanner = Scanner.builder().skipSnippets(skipSnippets).allFolders(allFolders).allExtensions(allExtensions) .hiddenFilesFolders(allHidden).numThreads(numThreads).url(apiUrl).apiKey(apiKey) .retryLimit(retryLimit).timeout(Duration.ofSeconds(timeoutLimit)).scanFlags(scanFlags) - .sbomType(sbomType).sbom(sbom).snippetLimit(snippetLimit).customCert(caCertPem).proxy(proxy).hpsm(enableHpsm) + .snippetLimit(snippetLimit).customCert(caCertPem).proxy(proxy).hpsm(enableHpsm) .settings(settings).obfuscate(obfuscate) .build(); diff --git a/src/main/java/com/scanoss/filters/AntFilter.java b/src/main/java/com/scanoss/filters/AntFilter.java index a6d69f8..156d83b 100644 --- a/src/main/java/com/scanoss/filters/AntFilter.java +++ b/src/main/java/com/scanoss/filters/AntFilter.java @@ -23,8 +23,9 @@ package com.scanoss.filters; import lombok.Builder; +import lombok.NonNull; import org.apache.tools.ant.types.selectors.SelectorUtils; -import org.jetbrains.annotations.NotNull; + import java.nio.file.Path; import java.util.List; import java.util.function.Predicate; @@ -47,7 +48,7 @@ public class AntFilter { * @param patterns a non-null list of Ant-style patterns to match against paths */ @Builder - public AntFilter(@NotNull List patterns) { + public AntFilter(@NonNull List patterns) { this.patterns = patterns; } diff --git a/src/main/java/com/scanoss/filters/GitIgnoreFilter.java b/src/main/java/com/scanoss/filters/GitIgnoreFilter.java index 73a6f83..c024616 100644 --- a/src/main/java/com/scanoss/filters/GitIgnoreFilter.java +++ b/src/main/java/com/scanoss/filters/GitIgnoreFilter.java @@ -24,11 +24,11 @@ import lombok.AccessLevel; import lombok.Builder; +import lombok.NonNull; import lombok.Setter; import org.eclipse.jgit.ignore.FastIgnoreRule; import org.eclipse.jgit.ignore.IgnoreNode; import org.eclipse.jgit.ignore.IgnoreNode.MatchResult; -import org.jetbrains.annotations.NotNull; import java.nio.file.Path; import java.util.ArrayList; import java.util.List; @@ -45,7 +45,7 @@ public class GitIgnoreFilter { private List rules; @Builder - public GitIgnoreFilter(@NotNull List patterns) { + public GitIgnoreFilter(@NonNull List patterns) { this.rules = new ArrayList<>(); patterns.forEach(pattern -> rules.add(new FastIgnoreRule(pattern))); this.node = new IgnoreNode(rules); diff --git a/src/main/java/com/scanoss/rest/HttpStatusCode.java b/src/main/java/com/scanoss/rest/HttpStatusCode.java index d602532..eea325e 100644 --- a/src/main/java/com/scanoss/rest/HttpStatusCode.java +++ b/src/main/java/com/scanoss/rest/HttpStatusCode.java @@ -22,6 +22,8 @@ */ package com.scanoss.rest; +import lombok.Getter; + /** * Enum list of standard HTTP Status Codes */ @@ -281,6 +283,10 @@ public enum HttpStatusCode { */ NETWORK_AUTHENTICATION_REQUIRED(511, "Network Authentication Required"); + /** + * Get the Integer value of the HTTP Status Code + */ + @Getter private final int value; private final String description; @@ -310,15 +316,6 @@ public static String getByValueToString(int value) { return value + " Unknown Status Code"; } - /** - * Get the Integer value of the HTTP Status Code - * - * @return HTTP status integer value - */ - public int getValue() { - return value; - } - /** * String friendly version of the HTTP Status Code * diff --git a/src/main/java/com/scanoss/utils/Hpsm.java b/src/main/java/com/scanoss/utils/Hpsm.java index 6ff8dd7..8346c1d 100644 --- a/src/main/java/com/scanoss/utils/Hpsm.java +++ b/src/main/java/com/scanoss/utils/Hpsm.java @@ -39,7 +39,7 @@ public class Hpsm { private static final int CRC8_MAXIM_DOW_POLYNOMIAL = 0x8C; // 0x31 reflected private static final int CRC8_MAXIM_DOW_INITIAL = 0x00; // 0x00 reflected private static final int CRC8_MAXIM_DOW_FINAL = 0x00; // 0x00 reflected - private static int[] crc8MaximDowTable = new int[CRC8_MAXIM_DOW_TABLE_SIZE]; + private static final int[] crc8MaximDowTable = new int[CRC8_MAXIM_DOW_TABLE_SIZE]; private static final byte[] HEX_ARRAY = "0123456789ABCDEF".getBytes(StandardCharsets.US_ASCII); diff --git a/src/main/java/com/scanoss/utils/WinnowingUtils.java b/src/main/java/com/scanoss/utils/WinnowingUtils.java index 47b67b9..0e99d15 100644 --- a/src/main/java/com/scanoss/utils/WinnowingUtils.java +++ b/src/main/java/com/scanoss/utils/WinnowingUtils.java @@ -22,7 +22,7 @@ */ package com.scanoss.utils; -import org.jetbrains.annotations.NotNull; +import lombok.NonNull; import java.util.HashSet; import java.util.Set; @@ -63,7 +63,7 @@ public static char normalize(char c) { * @param wfpBlock the WFP block containing file entries * @return the first extracted file path, or null if none found */ - public static String extractFilePathFromWFPBlock(@NotNull String wfpBlock) { + public static String extractFilePathFromWFPBlock(@NonNull String wfpBlock) { Set paths = extractFilePathsFromWFPBlock(wfpBlock); return paths.isEmpty() ? null : paths.iterator().next(); } @@ -76,7 +76,7 @@ public static String extractFilePathFromWFPBlock(@NotNull String wfpBlock) { * @param wfpBlock the WFP block containing multiple file entries * @return a Set of extracted file paths, empty if none found */ - public static Set extractFilePathsFromWFPBlock(@NotNull String wfpBlock) { + public static Set extractFilePathsFromWFPBlock(@NonNull String wfpBlock) { Set paths = new HashSet<>(); // Pattern to match file=,, format and capture the path diff --git a/src/test/java/com/scanoss/TestBom.java b/src/test/java/com/scanoss/TestBom.java index bfbf280..93d15d0 100644 --- a/src/test/java/com/scanoss/TestBom.java +++ b/src/test/java/com/scanoss/TestBom.java @@ -110,8 +110,7 @@ public void testReplaceRulesSortingWithDuplicatePaths() { // Verify the rules with same path length maintain original order assertEquals("Size should be 2", 2, sortedRules.size()); - assertTrue("Both rules should have same priority", - new RuleComparator().compare(sortedRules.get(0), sortedRules.get(1)) == 0); + assertEquals("Both rules should have same priority", 0, new RuleComparator().compare(sortedRules.get(0), sortedRules.get(1))); log.info("Finished testReplaceRulesSortingWithDuplicatePaths -->"); } diff --git a/src/test/java/com/scanoss/TestScanner.java b/src/test/java/com/scanoss/TestScanner.java index 06c8555..d0175e3 100644 --- a/src/test/java/com/scanoss/TestScanner.java +++ b/src/test/java/com/scanoss/TestScanner.java @@ -32,12 +32,12 @@ import com.scanoss.settings.ScanossSettings; import com.scanoss.utils.JsonUtils; import com.scanoss.utils.WinnowingUtils; +import lombok.NonNull; import lombok.extern.slf4j.Slf4j; import okhttp3.mockwebserver.Dispatcher; import okhttp3.mockwebserver.MockResponse; import okhttp3.mockwebserver.MockWebServer; import okhttp3.mockwebserver.RecordedRequest; -import org.jetbrains.annotations.NotNull; import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -341,7 +341,7 @@ public void TestScannerFiltering() { f = "testing/data/folder-ends-with-nbproject"; Scanner scanner = Scanner.builder().build(); List wfps = scanner.wfpFolder(f); - assertTrue("WFP should NOT be empty", !wfps.isEmpty()); + assertFalse("WFP should NOT be empty", wfps.isEmpty()); log.info("Testing filtering: file nbproject should not be filtered... "); f = "testing/data"; @@ -464,9 +464,9 @@ private List collectFilePaths(String directory) throws IOException { */ private Dispatcher createNoMatchDispatcher(Set receivedPaths) { return new Dispatcher() { - @NotNull + @NonNull @Override - public MockResponse dispatch(@NotNull RecordedRequest request) { + public MockResponse dispatch(@NonNull RecordedRequest request) { // Extract the WFP from the request and parse all obfuscated paths String requestBody = request.getBody().readUtf8(); Set paths = WinnowingUtils.extractFilePathsFromWFPBlock(requestBody); diff --git a/src/test/java/com/scanoss/TestSettings.java b/src/test/java/com/scanoss/TestSettings.java index 8537a89..fa71132 100644 --- a/src/test/java/com/scanoss/TestSettings.java +++ b/src/test/java/com/scanoss/TestSettings.java @@ -32,7 +32,6 @@ import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; -import java.util.ArrayList; import java.util.List; import static org.junit.Assert.*;