diff --git a/gradle.properties b/gradle.properties index 26daa7a..fe279e0 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1 +1 @@ -version=1.0.3 \ No newline at end of file +version=1.0.4 \ No newline at end of file diff --git a/src/main/java/com/ibm/cldk/CodeAnalyzer.java b/src/main/java/com/ibm/cldk/CodeAnalyzer.java index 6849264..0ee54dc 100644 --- a/src/main/java/com/ibm/cldk/CodeAnalyzer.java +++ b/src/main/java/com/ibm/cldk/CodeAnalyzer.java @@ -70,7 +70,7 @@ public class CodeAnalyzer implements Runnable { private static boolean noBuild = false; @Option(names = {"-f", "--project-root-path"}, description = "Path to the root pom.xml file of the project.") - private static String projectRootPom; + public static String projectRootPom; @Option(names = {"-a", "--analysis-level"}, description = "Level of analysis to perform. Options: 1 (for just symbol table) or 2 (for call graph). Default: 1") private static int analysisLevel = 1; @@ -116,9 +116,7 @@ private static void analyze() throws Exception { Log.debug("Single file analysis."); Pair, Map>> symbolTableExtractionResult = SymbolTable.extractSingle(sourceAnalysis); symbolTable = symbolTableExtractionResult.getLeft(); - } - - else { + } else { // download library dependencies of project for type resolution String dependencies = null; if (BuildProject.downloadLibraryDependencies(input, projectRootPom)) { diff --git a/src/main/java/com/ibm/cldk/utils/BuildProject.java b/src/main/java/com/ibm/cldk/utils/BuildProject.java index 6616be4..fe4d2b3 100644 --- a/src/main/java/com/ibm/cldk/utils/BuildProject.java +++ b/src/main/java/com/ibm/cldk/utils/BuildProject.java @@ -1,5 +1,7 @@ package com.ibm.cldk.utils; +import com.ibm.cldk.CodeAnalyzer; + import java.io.BufferedReader; import java.io.File; import java.io.IOException; @@ -10,15 +12,25 @@ import java.util.Arrays; import java.util.List; -import static com.ibm.cldk.utils.ProjectDirectoryScanner.classFilesStream; +import static com.ibm.cldk.utils.ProjectDirectoryScanner.classFilesStream; +import static com.ibm.cldk.CodeAnalyzer.projectRootPom; public class BuildProject { public static Path libDownloadPath; private static final String LIB_DEPS_DOWNLOAD_DIR = "_library_dependencies"; - private static final String MAVEN_CMD = System.getProperty("os.name").toLowerCase().contains("windows") - ? (new File("mvnw.cmd").exists() ? "mvnw.cmd" : "mvn.cmd") - : (new File("mvnw").exists() ? "mvnw" : "mvn"); + private static final String MAVEN_CMD = BuildProject.getMavenCommand(); + private static String getMavenCommand() { + Boolean isWindows = System.getProperty("os.name").toLowerCase().contains("windows"); + String mvnCommand; + if (isWindows) { + mvnCommand = new File(projectRootPom, "mvnw.bat").exists() ? String.valueOf(new File(projectRootPom, "mvnw.bat")) : "mvn.bat"; + } else { + mvnCommand = new File(projectRootPom, "mvnw").exists() ? String.valueOf(new File(projectRootPom, "mvnw")) : "mvn"; + } + return mvnCommand; + } + private static final String GRADLE_CMD = System.getProperty("os.name").toLowerCase().contains("windows") ? "gradlew.bat" : "gradlew"; public static Path tempInitScript; static { @@ -28,6 +40,7 @@ public class BuildProject { throw new RuntimeException(e); } } + private static final String GRADLE_DEPENDENCIES_TASK = "allprojects { afterEvaluate { project -> task downloadDependencies(type: Copy) {\n" + " def configs = project.configurations.findAll { it.canBeResolved }\n\n" + " dependsOn configs\n" +