Skip to content

Conversation

@jjppp
Copy link
Member

@jjppp jjppp commented Dec 7, 2025

This PR address the need for adding classes from the reflection log to the closed-world for different frontends in a uniform way, by making 3 following changes:

  1. The type of Options.analyses is changed from Map<String, String> to Map<String, AnalysisOptions>. This is because accessing reflection logs requires AnalysisOptions, but they are not accessible until the processing of Options is done. Moving the parsing logic of AnalysisOptions from PlanConfig to Options via picocli converters simplifies PlanConfig while making Options cohesive.
  2. The logic of adding classes in the reflection log is moved from SootWorldBuilder to Options.postProcess. This leaves world builders now unaware of reflection and analyses.
  3. WorldBuilder.build does not need its analyses argument anymore, since AnalysisOptions can be now accessed via Options. This simplifies the interface of all world builders.

@codecov
Copy link

codecov bot commented Dec 7, 2025

Codecov Report

❌ Patch coverage is 93.75000% with 3 lines in your changes missing coverage. Please review.
✅ Project coverage is 75.69%. Comparing base (bb9a8f8) to head (b784be4).

Files with missing lines Patch % Lines
src/main/java/pascal/taie/config/Options.java 92.30% 2 Missing and 1 partial ⚠️
Additional details and impacted files
@@            Coverage Diff            @@
##             master     #213   +/-   ##
=========================================
  Coverage     75.69%   75.69%           
+ Complexity     4668     4661    -7     
=========================================
  Files           482      482           
  Lines         16147    16143    -4     
  Branches       2203     2202    -1     
=========================================
- Hits          12222    12220    -2     
+ Misses         3059     3057    -2     
  Partials        866      866           
Files with missing lines Coverage Δ
src/main/java/pascal/taie/Main.java 75.71% <100.00%> (-3.16%) ⬇️
src/main/java/pascal/taie/config/PlanConfig.java 69.69% <100.00%> (-0.90%) ⬇️
...pascal/taie/frontend/cache/CachedWorldBuilder.java 83.82% <100.00%> (+2.74%) ⬆️
...va/pascal/taie/frontend/soot/SootWorldBuilder.java 83.16% <100.00%> (-2.31%) ⬇️
src/main/java/pascal/taie/config/Options.java 77.85% <92.30%> (+5.04%) ⬆️

... and 3 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

This commit involves 3 changes:
1. The type of `Options.analyses` is changed from `Map<String, String>` to `Map<String, AnalysisOptions>`. This means the parsing logic of `AnalysisOptions` is moved from `PlanConfig` to `Options` via picocli converters.
2. The logic of adding classes in the reflection log is moved from `SootWorldBuilder` to `Options.postProcess`. This leaves world builders now unaware of reflection and analyses.
3. `WorldBuilder.build` does not need its `analyses` argument anymore, since `AnalysisOptions` can be now accessed via `Options`. This simplifies the interface of all world builders.
@jjppp jjppp force-pushed the add-reflection-classes branch from 821eabd to b784be4 Compare December 9, 2025 04:40
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.

1 participant