Выходной файл класса для объекта класса, созданного в Soot - PullRequest
0 голосов
/ 07 мая 2018

Для задачи генерации теста мне нужно сгенерировать файлы .class программно. Я использую Soot Framework для генерации кода. Допустим, я создал класс с помощью Scene.v().makeSootClass("Test") и добавил к нему несколько методов. Как теперь я могу скомпилировать это виртуальное Java-представление структуры Soot IR в файл .class?

В документах перечислены некоторые параметры вывода для их интерфейса командной строки , но я бы хотел сделать это программно через API в Java, и я не могу найти инструкции о том, как действовать.

1 Ответ

0 голосов
/ 08 мая 2018

После нескольких поисков я нашел соответствующую документацию , объясняющую это. Соответствующий фрагмент кода из этих документов:

String fileName = SourceLocator.v().getFileNameFor(sClass, Options.output_format_class);
OutputStream streamOut = new JasminOutputStream(new FileOutputStream(fileName));
PrintWriter writerOut = new PrintWriter(new OutputStreamWriter(streamOut));

JasminClass jasminClass = new soot.jimple.JasminClass(sClass);
jasminClass.print(writerOut);
writerOut.flush();
streamOut.close();
...