{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Jar Unit Tests" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "jupyter": { "source_hidden": true } }, "outputs": [], "source": [ "// Custom Imports\n", "List addedJars = %jars *.jar\n", "//*/\n", "%maven junit:junit:4.12\n", "%maven org.apache.commons:commons-io:1.3.2\n", "\n", "// CryptoGuard imports\n", "import static org.junit.Assert.assertFalse;\n", "import static org.junit.Assert.assertTrue;\n", "import static org.junit.Assert.assertEquals;\n", "import static org.junit.Assert.assertNull;\n", "import static org.junit.Assert.assertNotNull;\n", "import static util.Utils.makeArg;\n", "import frontEnd.Interface.outputRouting.ExceptionHandler;\n", "import frontEnd.Interface.ArgumentsCheck;\n", "import frontEnd.MessagingSystem.routing.Listing;\n", "import frontEnd.MessagingSystem.routing.EnvironmentInformation;\n", "import frontEnd.MessagingSystem.routing.structure.Default.Report;\n", "import frontEnd.MessagingSystem.routing.structure.Scarf.AnalyzerReport;\n", "import frontEnd.MessagingSystem.routing.structure.Scarf.BugInstance;\n", "import frontEnd.Interface.EntryPoint;\n", "import rule.engine.EngineType;\n", "import frontEnd.argsIdentifier;\n", "import java.io.File;\n", "import java.nio.charset.StandardCharsets;\n", "import java.nio.file.Files;\n", "import java.nio.file.Paths;\n", "import java.util.ArrayList;\n", "import java.util.Arrays;\n", "import java.util.List;\n", "import org.junit.After;\n", "import org.junit.Before;\n", "import org.junit.Test;\n", "import org.junit.runner.RunWith;\n", "import soot.G;\n", "import util.Utils;\n", "import org.apache.commons.io.FileUtils;\n", "import java.util.Scanner;" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "jupyter": { "source_hidden": true } }, "outputs": [], "source": [ "// region String Statics\n", "public static final Boolean isLinux = !System.getProperty(\"os.name\").contains(\"Windows\");\n", "public static final String basePath = System.getProperty(\"user.dir\").replace(\"/Notebook\",\"\");\n", "public static final String scarfArgs = Utils.osPathJoin(basePath, \"src\", \"main\",\"resources\", \"Scarf\", \"sample.properties\");\n", "public static final String testRec = Utils.osPathJoin(basePath, \"samples\");\n", "public static final String testPath = Utils.osPathJoin(System.getProperty(\"user.dir\"),\"tmp\");\n", "\n", "FileUtils.deleteDirectory(new File (testPath));\n", "new File(testPath).mkdirs();\n", " \n", "public static final String testRec_tester_test = Utils.osPathJoin(testRec,\"temp\", \"tester\");\n", "public static final String testRec_tester_test_Class = Utils.osPathJoin(testRec_tester_test, \"test.class\");\n", "public static final String testRec_tester_test_Java = Utils.osPathJoin(testRec_tester_test, \"test.java\");\n", "public static final String testRec_tester_test_Java_xml = Utils.osPathJoin(testPath, \"test_java.xml\");\n", "public static final String srcOneGrv = Utils.osPathJoin(testRec,\"testable-jar\");\n", "public static final String pracitceJavaPackage = Utils.osPathJoin(srcOneGrv,\"src\", \"main\", \"java\", \"tester\", \"Crypto_VeryTemp.java\");\n", "public static final String verySimple_Gradle = Utils.osPathJoin(testRec,\"VerySimple_Gradle\");\n", "public static final String verySimple_Gradle_File = Utils.osPathJoin(verySimple_Gradle, \"src\", \"main\", \"java\", \"very.java\");\n", "public static final String crypto_Example = Utils.osPathJoin(testRec,\"Crypto_Example\");\n", "public static final String crypto_Example_File = Utils.osPathJoin(crypto_Example, \"src\", \"main\", \"java\", \"Crypto.java\");\n", "public static final String passwordUtils_Example = Utils.osPathJoin(testRec,\"PasswordUtils_Example\");\n", "public static final String passwordUtils_Example_File = Utils.osPathJoin(passwordUtils_Example, \"src\", \"main\", \"java\", \"PasswordUtils.java\");\n", "public static final String symCrypto_Example = Utils.osPathJoin(testRec,\"SymCrypto_Example\");\n", "public static final String symCrypto_Example_File = Utils.osPathJoin(symCrypto_Example, \"src\", \"main\", \"java\", \"SymCrypto.java\");\n", "public static final String symCrypto_Package_Example = Utils.osPathJoin(testRec,\"SymCrypto_Package_Example\");\n", "public static final String symCrypto_Example_Package_File = Utils.osPathJoin(symCrypto_Package_Example, \"src\", \"main\", \"java\", \"tester\",\"SymCrypto.java\");\n", "public static final String symCrypto_Multiple_Example = Utils.osPathJoin(testRec, \"SymCrypto_Multi_Example\");\n", "public static final String symCrypto_Multiple_Example_File_1 = Utils.osPathJoin(symCrypto_Multiple_Example, \"src\", \"main\", \"java\", \"SymCrypto.java\");\n", "public static final String symCrypto_Multiple_Example_File_2 = Utils.osPathJoin(symCrypto_Multiple_Example, \"src\", \"main\", \"java\", \"PassEncryptor.java\");\n", "public static final String srcOneGrv_base = \"tester\";\n", "public static final String srcOneGrvInputFile = Utils.osPathJoin(srcOneGrv,\"input.in\");\n", "public static final String javaSource = Utils.osPathJoin(srcOneGrv, \"src\",\"main\", \"java\", \"tester\");\n", "public static final String classSource = Utils.osPathJoin(srcOneGrv, \"build\",\"classes\", \"java\", \"main\", \"tester\");\n", "public static final String[] classFiles = {\n", " Utils.osPathJoin(classSource, \"PBEUsage.class\"), \n", " Utils.osPathJoin(classSource, \"UrlFrameWorks.class\"), \n", " Utils.osPathJoin(classSource, \"NewTestCase1.class\"), \n", " Utils.osPathJoin(classSource, \"NewTestCase2.class\")\n", "};\n", "public static final String newTestCaseTwo_Class = Utils.osPathJoin(classSource,\"NewTestCase2.class\");\n", "public static final String newTestCaseTwo_xml = Utils.osPathJoin(testPath,\"NewTestCase2-class.xml\");\n", "public static final String newTestCaseTwo_xml_0 = Utils.osPathJoin(testPath,\"NewTestCase2-class_0.xml\");\n", "public static final String testablejar_Crypto_plugin_class_json =Utils.osPathJoin(testPath, \"java-plugin-file_One.json\");\n", "public static final String testablejar_Crypto_plugin_class_json_0 =Utils.osPathJoin(testPath, \"java-plugin-file_One_0.json\");\n", "public static final String testablejar_PBEUsage_class_xml = Utils.osPathJoin(testPath, \"PBEUsage-class-file_One.xml\");\n", "public static final String testablejar_Crypto_class = Utils.osPathJoin(classSource, \"Crypto.class\");\n", "public static final String testablejar_Crypto_class_xml = Utils.osPathJoin(testPath, \"java-file_One.xml\");\n", "public static final String testablejar_Crypto_class_xml_0 = Utils.osPathJoin(testPath, \"java-file_One_0.xml\");\n", "public static final String[] javaFiles = {Utils.osPathJoin(javaSource, \"PBEUsage.java\"), Utils.osPathJoin(javaSource,\"UrlFrameWorks.java\")};\n", "public static final String jarOne = Utils.osPathJoin(testRec, \"testable-jar\",\"build\", \"libs\", \"testable-jar.jar\");\n", "public static final String srcOneGrvDep = Utils.osPathJoin(testRec,\"testable-jar\", \"build\", \"dependencies\");\n", "public static final String javaFileOne = Utils.osPathJoin(testPath,\"java-file_One.xml\");\n", "public static final String javaFileTwo = Utils.osPathJoin(testPath,\"java-file_Two.txt\");\n", "public static final String javaFileThree = Utils.osPathJoin(testPath,\"java-file_Three.txt\");\n", "public static final String javaFileThreeXML = Utils.osPathJoin(testPath,\"java-file_Three.xml\");\n", "public static final String pathToSchema = Utils.osPathJoin(basePath, \"src\",\"main\", \"resources\", \"Scarf\", \"scarf_v1.2.xsd\");\n", "public static final String pathToAPK = Utils.osPathJoin(testRec,\"app-debug.apk\");\n", "public static final String tempFileOutTxt = Utils.osPathJoin(testPath,\"testable-jar.txt\");\n", "public static final String tempFileOutXML = Utils.osPathJoin(testPath,\"testable-jar.xml\");\n", "public static final String tempFileOutJSON = Utils.osPathJoin(testPath,\"testable-jar.json\");\n", "public static final String tempTestJJava_Txt = Utils.osPathJoin(testPath,\"temp_java-jar.txt\");\n", "public static final String tempStreamXML = Utils.osPathJoin(testPath,\"testable-jar_Stream.xml\");\n", "public static final String tempFileOutTxt_two = Utils.osPathJoin(testPath,\"testable-jar_classFiles.txt\");\n", "public static final String tempFileOutTxt_two_0 = Utils.osPathJoin(testPath,\"testable-jar_classFiles_0.txt\");\n", "public static final String tempFileOutTxt_default = Utils.osPathJoin(testPath,\"testable-jar_classFiles.json\");\n", "public static final String tempFileOutTxt_default_0 = Utils.osPathJoin(testPath,\"testable-jar_classFiles_0.json\");\n", "public static final String tempFileOutXML_two = Utils.osPathJoin(testPath,\"testable-jar_classFiles.xml\");\n", "public static final String tempFileOutTxt_Class = Utils.osPathJoin(testPath,\"java-class-file.txt\");\n", "public static final String tempFileOutTxt_Class_fullproj = Utils.osPathJoin(testPath, \"java-class-proj-file.xml\");\n", "public static final String tempFileOutTxt_Class_fullproj_0 = Utils.osPathJoin(testPath, \"java-class-proj-file_0.xml\");\n", "public static final String tempFileOutTxt_Class_tester_test = Utils.osPathJoin(testPath, \"java-class-file_sample_tester-test.txt\");\n", "public static final String tempFileOutXML_Class_0 = Utils.osPathJoin(testPath,\"java-class-file_0.xml\");\n", "public static final String tempFileOutXML_Class_1 = Utils.osPathJoin(testPath,\"java-class-file_1.xml\");\n", "public static final String tempFileOutXML_Class_Stream_0 = Utils.osPathJoin(testPath, \"java-class-file-stream_0.xml\");\n", "public static final String tempFileOutApk = Utils.osPathJoin(testPath,\"app-debug.txt\");\n", "public static final String tempFileOutApk_CSV = Utils.osPathJoin(testPath,\"app-debug.csv\");\n", "public static final String tempFileOutApk_Steam = Utils.osPathJoin(testPath,\"app-debug_Stream.txt\");\n", "public static final String tempFileOutApk_CSVStream = Utils.osPathJoin(testPath,\"app-debug_Stream.csv\");\n", "public static final String tempFileOutApk_YAMLStream = Utils.osPathJoin(testPath, \"app-debug_Stream.yaml\");\n", "public static final String tempFileOutApk_Scarf = Utils.osPathJoin(testPath,\"app-debug.xml\");\n", "public static final String tempFileOutApk_Scarf_XArgs = Utils.osPathJoin(testPath, \"app-debug_XArgs.xml\");\n", "public static final String tempFileOutApk_Scarf_Steam = Utils.osPathJoin(testPath, \"app-debug_Stream.xml\");\n", "public static final String tempFileOutApk_Default = Utils.osPathJoin(testPath,\"app-debug.json\");\n", "public static final String tempFileOutApk_Default_Steam = Utils.osPathJoin(testPath, \"app-debug_Stream.json\");\n", "public static final String tempFileOutJson_Project = Utils.osPathJoin(testPath,\"very-simple_Project.json\");\n", "public static final String crypto_Example_Json_Project = Utils.osPathJoin(testPath, \"Crypto_Example_Project.json\");\n", "public static final String passwordUtils_Example_Json_Project =Utils.osPathJoin(testPath, \"PasswordUtils_Example_Project.json\");\n", "public static final String symCrypto_Example_Json_Project = Utils.osPathJoin(testPath, \"SymCrypto_Example_Project.json\");\n", "public static final String tempFileOutJson_File = Utils.osPathJoin(testPath,\"very-simple_File.json\");\n", "public static final String crypto_Example_Json_File = Utils.osPathJoin(testPath,\"Crypto_Example_File.json\");\n", "public static final String passwordUtils_Example_Json_File = Utils.osPathJoin(testPath, \"PasswordUtils_Example_File.json\");\n", "public static final String symCrypto_Example_Json_File = Utils.osPathJoin(testPath, \"SymCrypto_Example_File.json\");\n", "public static final String symCrypto_Example_Package_Json_File =Utils.osPathJoin(testPath, \"SymCrypto_Package_Example_File.json\");\n", "public static final String symCrypto_Multiple_Files = Utils.osPathJoin(testPath,\"SymCrypto_Example_Files.json\");\n", "public static final String tempJarFile_txt = Utils.osPathJoin(testPath,\"tempJarFile_txt.txt\");\n", "public static final String tempJarFile_Scarf_0 = Utils.osPathJoin(testPath,\"tempJarFile_Scarf_0.xml\");\n", "public static final String tempJarFile_Scarf_1 = Utils.osPathJoin(testPath,\"tempJarFile_Scarf_1.xml\");\n", "public static final String tempJarFile_Scarf_2 = Utils.osPathJoin(testPath,\"tempJarFile_Scarf_2.xml\");\n", "public static final String tempJarFile_Scarf_Steam_1 = Utils.osPathJoin(testPath, \"tempJarFile_Scarf_Steam_1.xml\");\n", "public static final String tempJarFile_Default_0 = Utils.osPathJoin(testPath,\"tempJarFile_Default_0.json\");\n", "public static final String tempJarFile_Default_Stream_0 = Utils.osPathJoin(testPath, \"tempJarFile_Default_Stream_0.json\");\n", "public static final ArrayList < String > sampleAuxClassPathOneList = new ArrayList < > (Arrays.asList(testRec, jarOne, javaFiles[0], javaFiles[1],classFiles[0], classFiles[1]));\n", "public static final String sampleAuxClassPathOne = String.join(\":\",sampleAuxClassPathOneList);\n", "public static final ArrayList < String > sampleAuxClassPathTwoList = new ArrayList < > (Arrays.asList(testRec, jarOne, javaFiles[0], javaFiles[1], classFiles[0], classFiles[1], scarfArgs));\n", "public static final String sampleAuxClassPathTwo = String.join(\":\",sampleAuxClassPathTwoList);\n", "public static final String verySimple_Path = Utils.osPathJoin(testRec,\"VerySimple\");\n", "public static final String verySimple_Jar = Utils.osPathJoin(verySimple_Path,\"very.jar\");\n", "public static final String verySimple_Jar_xml = Utils.osPathJoin(testPath,\"verySimple_jar.xml\");\n", "public static final String verySimple_Java = Utils.osPathJoin(verySimple_Path,\"very.java\");\n", "public static final String verySimple_Java_xml = Utils.osPathJoin(testPath,\"verySimple_java.xml\");\n", "public static final String verySimple_Klass = Utils.osPathJoin(verySimple_Path,\"very.class\");\n", "public static final String verySimple_Klass_xml = Utils.osPathJoin(testPath,\"verySimple_klass.xml\");\n", "public static final String verySimple_Klass_xml_0 = Utils.osPathJoin(testPath,\"verySimple_klass_0.xml\");\n", "public static final String verySimple_Klass_xml_1 = Utils.osPathJoin(testPath,\"verySimple_klass_1.xml\");\n", "public static final String verySimple_Klass_csv_1 = Utils.osPathJoin(testPath,\"verySimple_klass_1.csv\");\n", "public static final String verySimple_Klass_xml_2 = Utils.osPathJoin(testPath,\"verySimple_klass_2.xml\");\n", "public static final String verySimple_Klass_yaml_1 = Utils.osPathJoin(testPath,\"verySimple_klass_2.yaml\");\n", "public static final ArrayList < String > srcOneGrvInputArr = new ArrayList < > (Arrays.asList(\n", " Utils.osPathJoin(javaSource, \"UrlFrameWorks.java\"),\n", " Utils.osPathJoin(javaSource, \"PasswordUtils.java\"), \n", " Utils.osPathJoin(javaSource, \"Crypto.java\"), \n", " Utils.osPathJoin(javaSource, \"PBEUsage.java\"),\n", " Utils.osPathJoin(javaSource, \"NewTestCase2.java\"), \n", " Utils.osPathJoin(javaSource, \"VeryBusyClass.java\"), \n", " Utils.osPathJoin(javaSource,\"SymCrypto.java\"), \n", " Utils.osPathJoin(javaSource, \"NewTestCase1.java\"),\n", " Utils.osPathJoin(javaSource, \"LiveVarsClass.java\"), \n", " Utils.osPathJoin(javaSource, \"PassEncryptor.java\")));\n", "public static final ArrayList < String > srcOneGrvInputArr_Class = new ArrayList < > (Arrays.asList(\n", " Utils.osPathJoin(classSource,\"UrlFrameWorks.class\"), \n", " Utils.osPathJoin(classSource,\"PasswordUtils.class\"), \n", " Utils.osPathJoin(classSource, \"Crypto.class\"),\n", " Utils.osPathJoin(classSource, \"Crypto$1.class\"), \n", " Utils.osPathJoin(classSource, \"Crypto$2.class\"), \n", " Utils.osPathJoin(classSource,\"Crypto$3.class\"), \n", " Utils.osPathJoin(classSource, \"PBEUsage.class\"),\n", " Utils.osPathJoin(classSource, \"NewTestCase2.class\"), \n", " Utils.osPathJoin(classSource, \"VeryBusyClass.class\"), \n", " Utils.osPathJoin(classSource,\"SymCrypto.class\"), \n", " Utils.osPathJoin(classSource, \"NewTestCase1.class\"),\n", " Utils.osPathJoin(classSource, \"LiveVarsClass.class\"), \n", " Utils.osPathJoin(classSource, \"PassEncryptor.class\")));\n", "\n", "// endregion\n", "public static String[] cleaningArgs(String arg) {\n", " ArrayList < String > cleanArgs = new ArrayList < > (Arrays.asList(arg.split(\n", " \" \")));\n", "\n", " cleanArgs.removeIf(StringUtils::isEmpty);\n", "\n", " return cleanArgs.toArray(new String[cleanArgs.size()]);\n", "}\n", "\n", "public static String captureNewFileOutViaStdOut(String[] args) throws\n", "Exception {\n", " return captureNewFileOutViaStdOut(args, false);\n", "}\n", "\n", "public static String[] arr(ArrayList < String > in) {\n", " return in.toArray(new String[in.size()]);\n", "}\n", "\n", "public static ArrayList < String > arr(String[] in) {\n", " return new ArrayList < > (Arrays.asList(in));\n", "}\n", "\n", "public static String getFileNameFromString(String filePath) {\n", " if (StringUtils.isBlank(filePath))\n", "\treturn \"\";\n", " \n", " filePath = StringUtils.trimToNull(filePath);\n", " String[] splits = filePath.split(Utils.fileSep);\n", " String fileName = splits[splits.length - 1];\n", " return StringUtils.trimToNull(fileName.substring(0, fileName.indexOf(\".\")));\n", "}\n", "\n", "public static String retrieveFilesFromDir(String dir, String name) {\n", " ProcessBuilder cmd = new ProcessBuilder();\n", " cmd.command((\"find \" + dir + \" -name \" + name).split(\" \"));\n", " StringBuilder output = new StringBuilder();\n", "\n", " try {\n", "\tProcess exe = cmd.start();\n", "\tString line;\n", "\n", "\ttry(BufferedReader reader = new BufferedReader(new InputStreamReader(\n", "\t exe.getInputStream()))) {\n", "\t while ((line = reader.readLine()) != null)\n", "\t\toutput.append(line).append(\"\\n\");\n", "\t}\n", "\tcatch(Exception e) {}\n", " }\n", " catch(Exception e) {}\n", "\n", " return output.toString();\n", "}\n", "\n", "public static InputStream setIn(String string) {\n", " InputStream input = System.in;\n", "\n", " System.setIn(new ByteArrayInputStream(string.getBytes()));\n", "\n", " return input;\n", "}\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "// Utililties\n", "String cur_user = System.getProperty(\"user.name\");\n", "String java_home = \"/home/\" + cur_user + \"/.sdkman/candidates/java/8.0.252-zulu\";\n", "String java7_home = \"/home/\" + cur_user + \"/.sdkman/candidates/java/7.0.262-zulu\";\n", "String android_home = \"/home/\" + cur_user + \"/.sdkman/candidates/android/current\";\n", "\n", "public static String[] arr(ArrayList < String > in) {\n", " return in.toArray(new String[in.size()]);\n", "}\n", "\n", "public static ArrayList < String > arr(String[] in) {\n", " return new ArrayList < > (Arrays.asList(in));\n", "}\n", "public static void print(String file) {\n", " try {\n", " Scanner reader = new Scanner(new File(file));\n", " \n", " while(reader.hasNextLine())\n", " System.out.println(reader.nextLine());\n", " } catch (FileNotFoundException e) {}\n", "}" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "public void main_VerySimple_Scarf() {\n", " G.reset();\n", " String fileOut = verySimple_Jar_xml;\n", "\n", " new File(fileOut).delete();\n", " if (isLinux) {\n", "\tString args = makeArg(argsIdentifier.FORMAT, EngineType.JAR) \n", " + makeArg(argsIdentifier.SOURCE, verySimple_Jar) +\n", " // makeArg(argsIdentifier.DEPENDENCY, srcOneGrvDep) +\n", " makeArg(argsIdentifier.FORMATOUT, Listing.ScarfXML) + \n", " makeArg(argsIdentifier.OUT, fileOut) + \n", " makeArg(argsIdentifier.STREAM) +\n", " makeArg(argsIdentifier.ANDROID, \"/InvalidPath/\") + \n", " makeArg(argsIdentifier.JAVA, java_home) + \n", " makeArg(argsIdentifier.TIMEMEASURE) + \n", " makeArg(argsIdentifier.NOEXIT) +\n", " makeArg(argsIdentifier.PRETTY);\n", "\n", "\ttry {\n", "\t EntryPoint.main(args.split(\" \"));\n", "\n", "\t AnalyzerReport report = AnalyzerReport.deserialize(new File(fileOut));\n", "\t assertFalse(report.getBugInstance().isEmpty());\n", " print(fileOut);\n", "\t}\n", "\tcatch(Exception e) {\n", "\t e.printStackTrace();\n", "\t assertNull(e);\n", "\t}\n", " }\n", "}\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "main_VerySimple_Scarf()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "public void main_TestableJar() {\n", " G.reset();\n", " String fileOut = tempJarFile_txt;\n", "\n", " new File(fileOut).delete();\n", " if (isLinux) {\n", "\tString args = \n", " makeArg(argsIdentifier.FORMAT, EngineType.JAR) + \n", " makeArg(argsIdentifier.FORMATOUT, Listing.Legacy) + \n", " makeArg(argsIdentifier.SOURCE, jarOne) + \n", " makeArg(argsIdentifier.ANDROID,\"/InvalidPath/\") + \n", " makeArg(argsIdentifier.JAVA, java_home) + \n", " makeArg(argsIdentifier.DEPENDENCY,srcOneGrvDep) + \n", " makeArg(argsIdentifier.NOEXIT) + \n", " makeArg(argsIdentifier.OUT, fileOut);\n", "\n", "\ttry {\n", "\t EntryPoint.main(args.split(\" \"));\n", "\n", "\t List < String > results = Files.readAllLines(Paths.get(fileOut), StandardCharsets.UTF_8);\n", "\t assertTrue(results.size() >= 10);\n", " print(fileOut);\n", "\t}\n", "\tcatch(Exception e) {\n", "\t e.printStackTrace();\n", "\t assertNull(e);\n", "\t}\n", " }\n", "}\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "main_TestableJar()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "public void main_TestableJar_Scarf() {\n", " G.reset();\n", " String fileOut = tempJarFile_Scarf_0;\n", "\n", " new File(fileOut).delete();\n", " if (isLinux) {\n", "\tString args = \n", " makeArg(argsIdentifier.FORMAT, EngineType.JAR) + \n", " makeArg(argsIdentifier.SOURCE, jarOne) + \n", " makeArg(argsIdentifier.DEPENDENCY,srcOneGrvDep) + \n", " makeArg(argsIdentifier.FORMATOUT,Listing.ScarfXML) + \n", " makeArg(argsIdentifier.OUT, fileOut) + \n", " makeArg(argsIdentifier.ANDROID, \"/InvalidPath/\") + \n", " makeArg(argsIdentifier.JAVA, java_home) + \n", " makeArg(argsIdentifier.TIMEMEASURE) + \n", " makeArg(argsIdentifier.NOEXIT) +\n", " makeArg(argsIdentifier.PRETTY);\n", "\n", "\ttry {\n", "\t EntryPoint.main(args.split(\" \"));\n", "\n", "\t AnalyzerReport.deserialize(new File(fileOut));\n", " print(fileOut);\n", "\t}\n", "\tcatch(Exception e) {\n", "\t e.printStackTrace();\n", "\t assertNull(e);\n", "\t}\n", " }\n", "}\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "main_TestableJar_Scarf()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "public void main_TestableJar_Scarf_Heuristics() {\n", " G.reset();\n", " String fileOut = tempJarFile_Scarf_0;\n", "\n", " new File(fileOut).delete();\n", " if (isLinux) {\n", "\tString args = \n", " makeArg(argsIdentifier.FORMAT, EngineType.JAR) + \n", " makeArg(argsIdentifier.SOURCE, jarOne) + \n", " makeArg(argsIdentifier.DEPENDENCY,srcOneGrvDep) + \n", " makeArg(argsIdentifier.FORMATOUT,Listing.ScarfXML) + \n", " makeArg(argsIdentifier.OUT, fileOut) + \n", " makeArg(argsIdentifier.TIMEMEASURE) + \n", " makeArg(argsIdentifier.ANDROID,\"/InvalidPath/\") + \n", " makeArg(argsIdentifier.JAVA, java_home) + \n", " makeArg(argsIdentifier.NOEXIT) + \n", " makeArg(argsIdentifier.HEURISTICS) + \n", " makeArg(argsIdentifier.PRETTY);\n", "\n", "\ttry {\n", "\t EntryPoint.main(args.split(\" \"));\n", "\n", "\t AnalyzerReport report = AnalyzerReport.deserialize(new File(fileOut));\n", "\t assertNotNull(report.getHeuristics());\n", "\t assertFalse(report.getBugInstance().isEmpty());\n", " print(fileOut);\n", "\t}\n", "\tcatch(Exception e) {\n", "\t e.printStackTrace();\n", "\t assertNull(e);\n", "\t}\n", " }\n", "}\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "main_TestableJar_Scarf_Heuristics()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "public void main_TestableJar_Default() {\n", " G.reset();\n", " String fileOut = tempJarFile_Default_0;\n", "\n", " new File(fileOut).delete();\n", " if (isLinux) {\n", "\tString args = \n", " makeArg(argsIdentifier.FORMAT, EngineType.JAR) + \n", " makeArg(argsIdentifier.SOURCE, jarOne) + \n", " makeArg(argsIdentifier.DEPENDENCY,srcOneGrvDep) + \n", " makeArg(argsIdentifier.FORMATOUT, Listing.Default) +\n", " makeArg(argsIdentifier.OUT, fileOut) + \n", " makeArg(argsIdentifier.ANDROID, \"/InvalidPath/\") + \n", " makeArg(argsIdentifier.JAVA, java_home) + \n", " makeArg(argsIdentifier.TIMEMEASURE) + \n", " makeArg(argsIdentifier.NOEXIT) +\n", " makeArg(argsIdentifier.PRETTY);\n", "\n", "\ttry {\n", "\t EntryPoint.main(args.split(\" \"));\n", "\n", "\t Report report = Report.deserialize(new File(fileOut));\n", "\t assertFalse(report.getIssues().isEmpty());\n", " print(fileOut);\n", "\t}\n", "\tcatch(Exception e) {\n", "\t e.printStackTrace();\n", "\t assertNull(e);\n", "\t}\n", " }\n", "}" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "main_TestableJar_Default()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "public void main_TestableJar_Default_SpecifyJavaHome() {\n", " G.reset();\n", " String fileOut = tempJarFile_Default_0;\n", "\n", " new File(fileOut).delete();\n", " if (isLinux) {\n", "\tString args = \n", " makeArg(argsIdentifier.FORMAT, EngineType.JAR) + \n", " makeArg(argsIdentifier.SOURCE, jarOne) + \n", " makeArg(argsIdentifier.DEPENDENCY,srcOneGrvDep) + \n", " makeArg(argsIdentifier.FORMATOUT, Listing.Default) +\n", " makeArg(argsIdentifier.ANDROID, \"/InvalidPath/\") +\n", " makeArg(argsIdentifier.JAVA, java_home) + \n", " makeArg(argsIdentifier.OUT, fileOut) + \n", " makeArg(argsIdentifier.TIMEMEASURE) +\n", " makeArg(argsIdentifier.NOEXIT) + \n", " makeArg(argsIdentifier.PRETTY);\n", "\n", "\ttry {\n", "\t EntryPoint.main(args.split(\" \"));\n", "\n", "\t Report report = Report.deserialize(new File(fileOut));\n", "\t assertFalse(report.getIssues().isEmpty());\n", " print(fileOut);\n", "\t}\n", "\tcatch(Exception e) {\n", "\t e.printStackTrace();\n", "\t assertNull(e);\n", "\t}\n", " }\n", "}\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "main_TestableJar_Default_SpecifyJavaHome()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "public void main_TestableJar_Default_Heuristics() {\n", " G.reset();\n", " String fileOut = tempJarFile_Default_0;\n", "\n", " new File(fileOut).delete();\n", " if (isLinux) {\n", "\tString args = \n", " makeArg(argsIdentifier.FORMAT, EngineType.JAR) + \n", " makeArg(argsIdentifier.SOURCE, jarOne) + \n", " makeArg(argsIdentifier.DEPENDENCY,srcOneGrvDep) + \n", " makeArg(argsIdentifier.FORMATOUT, Listing.Default) +\n", " makeArg(argsIdentifier.OUT, fileOut) + \n", " makeArg(argsIdentifier.HEURISTICS) + \n", " makeArg(argsIdentifier.ANDROID,\"/InvalidPath/\") + \n", " makeArg(argsIdentifier.JAVA, java_home) + \n", " makeArg(argsIdentifier.NOEXIT) + \n", " makeArg(argsIdentifier.TIMEMEASURE) + \n", " makeArg(argsIdentifier.PRETTY);\n", "\n", "\ttry {\n", "\t EntryPoint.main(args.split(\" \"));\n", "\n", "\t Report report = Report.deserialize(new File(fileOut));\n", "\t assertNotNull(report.getHeuristics());\n", "\t assertFalse(report.getIssues().isEmpty());\n", " print(fileOut);\n", "\t}\n", "\tcatch(Exception e) {\n", "\t e.printStackTrace();\n", "\t assertNull(e);\n", "\t}\n", " }\n", "}\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "main_TestableJar_Default_Heuristics()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "public void main_TestableJar_Scarf_Args() {\n", " G.reset();\n", " String fileOut = tempJarFile_Scarf_1;\n", "\n", " new File(fileOut).delete();\n", " if (isLinux) {\n", "\tString args = \n", " makeArg(argsIdentifier.FORMAT, EngineType.JAR) + \n", " makeArg(argsIdentifier.SOURCE, jarOne) + \n", " makeArg(argsIdentifier.DEPENDENCY,srcOneGrvDep) + \n", " makeArg(argsIdentifier.FORMATOUT,Listing.ScarfXML) + \n", " makeArg(argsIdentifier.OUT, fileOut) + \n", " makeArg(argsIdentifier.ANDROID, \"/InvalidPath/\") + \n", " makeArg(argsIdentifier.JAVA, java_home) + \n", " makeArg(argsIdentifier.TIMEMEASURE) + \n", " makeArg(argsIdentifier.NOEXIT) +\n", " makeArg(argsIdentifier.PRETTY) + \n", " makeArg(argsIdentifier.SCONFIG,scarfArgs);\n", "\n", "\ttry {\n", "\t EntryPoint.main(args.split(\" \"));\n", "\n", "\t AnalyzerReport report = AnalyzerReport.deserialize(new File(fileOut));\n", "\t assertFalse(report.getBugInstance().isEmpty());\n", " print(fileOut);\n", "\t}\n", "\tcatch(Exception e) {\n", "\t e.printStackTrace();\n", "\t assertNull(e);\n", "\t}\n", " }\n", "}\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "main_TestableJar_Scarf_Args()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "public void main_TestableJar_Scarf_Stream() {\n", " G.reset();\n", " String fileOut = tempJarFile_Scarf_Steam_1;\n", "\n", " new File(fileOut).delete();\n", " if (isLinux) {\n", "\tString args = \n", " makeArg(argsIdentifier.FORMAT, EngineType.JAR) + \n", " makeArg(argsIdentifier.SOURCE, jarOne) + \n", " makeArg(argsIdentifier.DEPENDENCY,srcOneGrvDep) + \n", " makeArg(argsIdentifier.FORMATOUT,Listing.ScarfXML) + \n", " makeArg(argsIdentifier.OUT, fileOut) + \n", " makeArg(argsIdentifier.STREAM) + \n", " makeArg(argsIdentifier.ANDROID,\"/InvalidPath/\") + \n", " makeArg(argsIdentifier.JAVA, java_home) + \n", " makeArg(argsIdentifier.TIMEMEASURE) + \n", " makeArg(argsIdentifier.NOEXIT) + \n", " makeArg(argsIdentifier.PRETTY);\n", "\n", "\ttry {\n", "\t EntryPoint.main(args.split(\" \"));\n", "\n", "\t AnalyzerReport report = AnalyzerReport.deserialize(new File(fileOut));\n", "\t assertFalse(report.getBugInstance().isEmpty());\n", " print(fileOut);\n", "\n", " }\n", "\tcatch(Exception e) {\n", "\t e.printStackTrace();\n", "\t assertNull(e);\n", "\t}\n", " }\n", "}\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "main_TestableJar_Scarf_Stream()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "public void main_TestableJar_Default_Stream() {\n", " G.reset();\n", " String fileOut = tempJarFile_Default_Stream_0;\n", "\n", " new File(fileOut).delete();\n", " if (isLinux) {\n", "\tString args = \n", " makeArg(argsIdentifier.FORMAT, EngineType.JAR) + \n", " makeArg(argsIdentifier.SOURCE, jarOne) + \n", " makeArg(argsIdentifier.DEPENDENCY,srcOneGrvDep) + \n", " makeArg(argsIdentifier.FORMATOUT, Listing.Default) +\n", " makeArg(argsIdentifier.OUT, fileOut) + \n", " makeArg(argsIdentifier.STREAM) + \n", " makeArg(argsIdentifier.ANDROID,\"/InvalidPath/\") + \n", " makeArg(argsIdentifier.JAVA, java_home) + \n", " makeArg(argsIdentifier.TIMEMEASURE) + \n", " makeArg(argsIdentifier.NOEXIT) + \n", " makeArg(argsIdentifier.PRETTY);\n", "\n", "\ttry {\n", "\t EntryPoint.main(args.split(\" \"));\n", "\n", "\t Report report = Report.deserialize(new File(fileOut));\n", "\t assertFalse(report.getIssues().isEmpty());\n", " print(fileOut);\n", "\t}\n", "\tcatch(Exception e) {\n", "\t e.printStackTrace();\n", "\t assertNull(e);\n", "\t}\n", " }\n", "}\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "main_TestableJar_Default_Stream()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "public void main_TestableJar_ScarfTimeStamp() {\n", " G.reset();\n", " String fileOut = tempJarFile_Scarf_2;\n", "\n", " new File(fileOut).delete();\n", " if (isLinux) {\n", "\tString args = \n", " makeArg(argsIdentifier.FORMAT, EngineType.JAR) + \n", " makeArg(argsIdentifier.SOURCE, jarOne) + \n", " makeArg(argsIdentifier.DEPENDENCY,srcOneGrvDep) + \n", " makeArg(argsIdentifier.FORMATOUT,Listing.ScarfXML) + \n", " makeArg(argsIdentifier.OUT, fileOut) + \n", " makeArg(argsIdentifier.ANDROID, \"/InvalidPath/\") + \n", " makeArg(argsIdentifier.JAVA, java_home) + \n", " makeArg(argsIdentifier.TIMESTAMP) + \n", " makeArg(argsIdentifier.NOEXIT) +\n", " makeArg(argsIdentifier.PRETTY);\n", "\n", "\ttry {\n", "\t EntryPoint.main(args.split(\" \"));\n", "\n", "\t AnalyzerReport report = AnalyzerReport.deserialize(new File(fileOut));\n", "\t assertFalse(report.getBugInstance().isEmpty());\n", " print(fileOut);\n", "\t}\n", "\tcatch(Exception e) {\n", "\t e.printStackTrace();\n", "\t assertNull(e);\n", "\t}\n", " }\n", "}\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "main_TestableJar_ScarfTimeStamp()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "public void main_TestableJar_ScarfTimeStamp_UsingClassPaths() {\n", " G.reset();\n", " if (isLinux) {\n", "\tString args = \n", " makeArg(argsIdentifier.FORMAT, EngineType.JAR) + \n", " makeArg(argsIdentifier.SOURCE, jarOne) + \n", " makeArg(argsIdentifier.DEPENDENCY,srcOneGrvDep) + \n", " makeArg(argsIdentifier.FORMATOUT,Listing.ScarfXML) + \n", " makeArg(argsIdentifier.OUT,tempJarFile_Scarf_2) + \n", " makeArg(argsIdentifier.TIMESTAMP) + \n", " makeArg(argsIdentifier.ANDROID, \"/InvalidPath/\") + \n", " makeArg(argsIdentifier.JAVA, java_home) + \n", " makeArg(argsIdentifier.NOEXIT) + \n", " makeArg(argsIdentifier.PRETTY);\n", "\n", "\ttry {\n", "\t EntryPoint.main(args.split(\" \"));\n", "\n", "\t List < String > results = Files.readAllLines(Paths.get(tempJarFile_Scarf_2),StandardCharsets.UTF_8);\n", "\t assertTrue(results.size() >= 10);\n", "\t AnalyzerReport.deserialize(new File(tempJarFile_Scarf_2));\n", " print(tempJarFile_Scarf_2);\n", "\t}\n", "\tcatch(Exception e) {\n", "\t e.printStackTrace();\n", "\t assertNull(e);\n", "\t}\n", " }\n", "}\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "main_TestableJar_ScarfTimeStamp_UsingClassPaths()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "public void main_TestableJar_Default_WithHeuristics() {\n", " G.reset();\n", " String fileOut = tempJarFile_Default_0;\n", "\n", " new File(fileOut).delete();\n", " if (isLinux) {\n", "\tString args = \n", " makeArg(argsIdentifier.FORMAT, EngineType.JAR) + \n", " makeArg(argsIdentifier.SOURCE, jarOne) + \n", " makeArg(argsIdentifier.DEPENDENCY,srcOneGrvDep) + \n", " makeArg(argsIdentifier.FORMATOUT, Listing.Default) +\n", " makeArg(argsIdentifier.OUT, fileOut) + \n", " makeArg(argsIdentifier.TIMEMEASURE) + \n", " makeArg(argsIdentifier.ANDROID,\"/InvalidPath/\") + \n", " makeArg(argsIdentifier.JAVA, java_home) + \n", " makeArg(argsIdentifier.NOEXIT) + \n", " makeArg(argsIdentifier.PRETTY) + \n", " makeArg(argsIdentifier.HEURISTICS);\n", "\n", "\ttry {\n", "\t EntryPoint.main(args.split(\" \"));\n", "\n", "\t Report report = Report.deserialize(new File(fileOut));\n", "\t assertNotNull(report.getHeuristics());\n", "\t assertFalse(report.getIssues().isEmpty());\n", " print(fileOut);\n", "\t}\n", "\tcatch(Exception e) {\n", "\t e.printStackTrace();\n", "\t assertNull(e);\n", "\t}\n", " }\n", "}\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "main_TestableJar_Default_WithHeuristics()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "public void main_TestableJar_Default_WithClassPath() {\n", " G.reset();\n", " String fileOut = tempJarFile_Default_0;\n", " String deps = srcOneGrvDep;\n", "\n", " deps = \":\" + deps + \":\" + deps + \":\";\n", " new File(fileOut).delete();\n", " if (isLinux) {\n", "\tString args = \n", " makeArg(argsIdentifier.FORMAT, EngineType.JAR) + \n", " makeArg(argsIdentifier.SOURCE, jarOne) + \n", " makeArg(argsIdentifier.DEPENDENCY,deps) + \n", " makeArg(argsIdentifier.FORMATOUT, Listing.Default) +\n", " makeArg(argsIdentifier.OUT, fileOut) + \n", " makeArg(argsIdentifier.TIMEMEASURE) + \n", " makeArg(argsIdentifier.ANDROID,\"/InvalidPath/\") +\n", " makeArg(argsIdentifier.JAVA, java_home) + \n", " makeArg(argsIdentifier.NOEXIT) + \n", " makeArg(argsIdentifier.HEURISTICS) + \n", " makeArg(argsIdentifier.PRETTY);\n", "\n", "\ttry {\n", "\t EntryPoint.main(args.split(\" \"));\n", "\n", "\t Report report = Report.deserialize(new File(fileOut));\n", "\t assertNotNull(report.getHeuristics());\n", "\t assertFalse(report.getIssues().isEmpty());\n", " print(fileOut);\n", "\t}\n", "\tcatch(Exception e) {\n", "\t e.printStackTrace();\n", "\t assertNull(e);\n", "\t}\n", " }\n", "}\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "main_TestableJar_Default_WithClassPath()" ] } ], "metadata": { "kernelspec": { "display_name": "Java", "language": "java", "name": "java" }, "language_info": { "codemirror_mode": "java", "file_extension": ".jshell", "mimetype": "text/x-java-source", "name": "Java", "pygments_lexer": "java", "version": "11.0.6+10" } }, "nbformat": 4, "nbformat_minor": 4 }