Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,10 @@
**/.settings
**/.classpath
**/.idea
*.iml
**/.project
data/
**/target/*
**/*.log
Dataset/apps/*/*.txt
Dataset/apps/*/*.dat
Dataset/apps/*/*.dat
18 changes: 14 additions & 4 deletions Slicer4J/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -130,12 +130,12 @@
</plugins>
</build>

<repositories>
<!--<repositories>
<repository>
<id>localrepository</id>
<url>file://${project.basedir}/libs</url>
</repository>
</repositories>
</repositories>-->
<dependencies>
<dependency>
<groupId>ca.ubc.ece.resess</groupId>
Expand All @@ -147,12 +147,22 @@
<artifactId>graphviz-java</artifactId>
<version>0.18.1</version>
</dependency>
<dependency>
<groupId>org.soot-oss</groupId>
<artifactId>soot</artifactId>
<version>[4.2.1]</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>de.tud.sse</groupId>
<artifactId>soot-infoflow</artifactId>
<version>2.9.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/libs/soot-infoflow-cmd-2.9.0-jar-with-dependencies.jar</systemPath>
<exclusions>
<exclusion>
<groupId>org.soot-oss</groupId>
<artifactId>soot</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- https://mvnrepository.com/artifact/org.hamcrest/java-hamcrest -->
<dependency>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -220,6 +220,63 @@ public void runInstrumentedJarFromMain(String pathToJar, String mainClass, Strin
reader.close();
}

public void logApiForIdePlugin() {
List<TraceStatement> trs = Parser.readFile(fileToParse, staticLogFile);

prepare();
DynamicControlFlowGraph icdg = new DynamicControlFlowGraph();
icdg.createDCFG(trs);
printGraph(icdg);

if (variableString == null) {
variableString = "*";
}
FrameworkModel.setStubDroidPath(stubDroidPath);
FrameworkModel.setTaintWrapperFile(taintWrapperPath);

List<StatementInstance> stmts = new ArrayList<>();
for (Integer backSlicePos: backwardSlicePositions) {
stmts.add(icdg.mapNoUnits(backSlicePos));
}

List<String> variables = new ArrayList<>();
if (!variableString.equals("*")) {
String[] split = variableString.split("-");
for (String s : split) {
variables.add("$" + s);
}
}
setVariables(variables);

Set<AccessPath> accessPaths = new HashSet<>();
for (String v: variables) {
for (StatementInstance stmt: stmts) {
accessPaths.add(new AccessPath(v, new Type(){
private static final long serialVersionUID = 1L;
@Override
public String toString() {
return "SlicingCriterionType";
}
}, stmt.getLineNo(), AccessPath.NOT_DEFINED, stmt));
}
}

setWorkingSet(new SlicingWorkingSet(false));
DynamicSlice dynamicSlice = slice(icdg, true, false, false, false, stmts, accessPaths, getWorkingSet());
// dynamicPrint = new LinkedHashSet<>();
// SlicePrinter.printSlices(dynamicSlice);
// SlicePrinter.printSliceGraph(dynamicSlice);
// SlicePrinter.printDotGraph(outDir, dynamicSlice);
// SlicePrinter.printSliceLines(outDir, dynamicSlice);
// SlicePrinter.printRawSlice(outDir, dynamicSlice);
SlicePrinter.printSliceWithDependencies(outDir, dynamicSlice);
// DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy_MM_dd_HH_mm_ss");
// LocalDateTime now = LocalDateTime.now();
// String resultFileName = outDir + File.separator + "result_" +mode+"_"+ dtf.format(now) + ".csv";
// SlicePrinter.printToCSV(resultFileName, dynamicSlice);

}

public static void main(String [] args) {
long startTime = System.nanoTime();
boolean justTrace = false;
Expand Down