Skip to content

Tse26#217

Open
barbosamaatheus wants to merge 8 commits into
spgroup:masterfrom
barbosamaatheus:tse26
Open

Tse26#217
barbosamaatheus wants to merge 8 commits into
spgroup:masterfrom
barbosamaatheus:tse26

Conversation

@barbosamaatheus

@barbosamaatheus barbosamaatheus commented Jun 27, 2026

Copy link
Copy Markdown
Collaborator
  • Adicionei a opção de escolher qual algoritmo de call graph usar (CHA, RTA, VTA, SPARK) via -cg ou --callgraph
  • Criei a flag -prt ou --partial-results-on-timeout para capturar resultados parciais quando uma análise timeout, em vez de descartar tudo

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR extends the Soot output-processor runner to (a) let users choose the call graph algorithm via -cg/--callgraph and (b) optionally keep partial results when an analysis times out via -prt/--partial-results-on-timeout.

Changes:

  • Added CLI flags for call graph selection (-cg) and partial-results-on-timeout (-prt), plus documentation updates.
  • Plumbed call graph option into Soot config generation and refactored algorithm constructors to accept it.
  • Introduced timeout-handling changes in ConflictDetectionAlgorithm to optionally return partial results.

Reviewed changes

Copilot reviewed 8 out of 9 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
src/main/services/outputProcessors/soot/RunSootAnalysisOutputProcessor.groovy Adds propagation hook for partial-results-on-timeout across configured algorithms.
src/main/services/outputProcessors/soot/README.md Documents new -cg and -prt flags.
src/main/services/outputProcessors/soot/NonCommutativeConflictDetectionAlgorithm.groovy Consolidates constructors and adds call graph option to generated Soot configs.
src/main/services/outputProcessors/soot/Main.groovy Wires partial-results-on-timeout flag and starts passing call graph into some algorithm constructions.
src/main/services/outputProcessors/soot/ConflictDetectionAlgorithm.groovy Adds call graph option, partial-results-on-timeout behavior, and new timeout/output-thread handling.
src/main/services/outputProcessors/soot/arguments/Arguments.groovy Adds fields/getters/setters for call graph + partial-results-on-timeout.
src/main/services/outputProcessors/soot/arguments/ArgsParser.groovy Adds parsing/validation for -cg and -prt.
README.md Normalizes Gradle build command to ./gradlew.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

processOutputThread.join(GRACE_PERIOD_MILLIS)
String partial = atomicResult.get()
println "Result at timeout: ${partial}"
return partial + "-timeout"
Comment on lines +152 to +155
} else {
processOutputThread.interrupt();
}
return "timeout";
if (this.options.cg) {
String algorithm = options.cg?.toString()?.trim()?.toUpperCase()
if (!algorithm || !["CHA", "RTA", "VTA", "SPARK"].contains(algorithm)) {
throw new IllegalArgumentException("Invalid callgraph algorithm: ${options.cg}")
List<ConflictDetectionAlgorithm> detectionAlgorithms = new ArrayList<ConflictDetectionAlgorithm>();


String callgraph = appArguments.getCallgraph();
if (this.options.r) {
args.setReachability(true)
}
if (this.options.cg) {

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@barbosamaatheus se o usuário não usar a opção cg, qual o algoritmo padrão usado? deveria ser o mesmo usado antes, para mantermos compatibilidade com experimentos anteriores; não termos que alterar experimentos anteriores para adicionar essa opção

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants