Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

IFDS core refactor #225

Open
wants to merge 64 commits into
base: develop
Choose a base branch
from
Open

IFDS core refactor #225

wants to merge 64 commits into from

Conversation

sergeypospelov
Copy link
Member

@sergeypospelov sergeypospelov commented Apr 4, 2024

Description

PR TODOs:

  • Unused Analysis
  • Multi chunk scenario + tests
  • Graceful shutdown on timeout
  • Try to remove Fact generic parameter
  • Revert Kotlin version (better fix IRTest)
  • Unify helper extension functions (system creation, analysis start, result retrieval)
  • Fix workaround with flag
  • Remove and replace old entities
  • Some tests
  • Comments
  • Description

Copy link
Contributor

github-actions bot commented Apr 4, 2024

Test results on JDK 19

1 328 tests  +3   1 316 ✅ +3   4m 55s ⏱️ - 3m 3s
   50 suites +2      12 💤 ±0 
   50 files   +2       0 ❌ ±0 

Results for commit 1b5872c. ± Comparison against base commit 5068453.

This pull request removes 1055 and adds 1058 tests. Note that renamed tests count towards both.
org.jacodb.analysis.impl.ConditionEvaluatorTest ‑ And(Not(True)) is false()
org.jacodb.analysis.impl.ConditionEvaluatorTest ‑ And(True) is true()
org.jacodb.analysis.impl.ConditionEvaluatorTest ‑ AnnotationType in unexpected()
org.jacodb.analysis.impl.ConditionEvaluatorTest ‑ ConstantEq(boolArg(true), false) is false()
org.jacodb.analysis.impl.ConditionEvaluatorTest ‑ ConstantEq(boolArg(true), true) is true()
org.jacodb.analysis.impl.ConditionEvaluatorTest ‑ ConstantEq(intArg(42), 42) is true()
org.jacodb.analysis.impl.ConditionEvaluatorTest ‑ ConstantEq(intArg(42), 999) is false()
org.jacodb.analysis.impl.ConditionEvaluatorTest ‑ ConstantEq(stringArg('test'), 'other') is false()
org.jacodb.analysis.impl.ConditionEvaluatorTest ‑ ConstantEq(stringArg('test'), 'test') is true()
org.jacodb.analysis.impl.ConditionEvaluatorTest ‑ ConstantEq(unresolved, any) is false()
…
org.jacodb.actors.RoutersTest ‑ Test message key router()
org.jacodb.actors.RoutersTest ‑ Test random router()
org.jacodb.actors.RoutersTest ‑ Test round robin router()
org.jacodb.actors.StoppingTest ‑ Test stops()
org.jacodb.analysis.custom.NullabilityAssumptionAnalysisTest ‑ null-assumption analysis should work 2()
org.jacodb.analysis.custom.NullabilityAssumptionAnalysisTest ‑ null-assumption analysis should work()
org.jacodb.analysis.ifds.ConditionEvaluatorTest ‑ And(Not(True)) is false()
org.jacodb.analysis.ifds.ConditionEvaluatorTest ‑ And(True) is true()
org.jacodb.analysis.ifds.ConditionEvaluatorTest ‑ AnnotationType in unexpected()
org.jacodb.analysis.ifds.ConditionEvaluatorTest ‑ ConstantEq(boolArg(true), false) is false()
…
This pull request removes 7 skipped tests and adds 7 skipped tests. Note that renamed tests count towards both.
org.jacodb.analysis.impl.IfdsNpeTest ‑ activation points maintain flow sensitivity()
org.jacodb.analysis.impl.IfdsNpeTest ‑ array aliasing()
org.jacodb.analysis.impl.IfdsNpeTest ‑ complex aliasing()
org.jacodb.analysis.impl.IfdsNpeTest ‑ context injection in points-to()
org.jacodb.analysis.impl.IfdsNpeTest ‑ mixed array and class aliasing()
org.jacodb.analysis.impl.IfdsNpeTest ‑ no NPE after checked access with field()
org.jacodb.analysis.impl.IfdsNpeTest ‑ simple points-to analysis()
org.jacodb.analysis.ifds.IfdsNpeTest ‑ activation points maintain flow sensitivity()
org.jacodb.analysis.ifds.IfdsNpeTest ‑ array aliasing()
org.jacodb.analysis.ifds.IfdsNpeTest ‑ complex aliasing()
org.jacodb.analysis.ifds.IfdsNpeTest ‑ context injection in points-to()
org.jacodb.analysis.ifds.IfdsNpeTest ‑ mixed array and class aliasing()
org.jacodb.analysis.ifds.IfdsNpeTest ‑ no NPE after checked access with field()
org.jacodb.analysis.ifds.IfdsNpeTest ‑ simple points-to analysis()

♻️ This comment has been updated with latest results.

Copy link
Contributor

github-actions bot commented Apr 4, 2024

Test results on JDK 8

1 328 tests  +3   1 314 ✅ +3   5m 1s ⏱️ - 1m 27s
   50 suites +2      14 💤 ±0 
   50 files   +2       0 ❌ ±0 

Results for commit 1b5872c. ± Comparison against base commit 5068453.

This pull request removes 1055 and adds 1058 tests. Note that renamed tests count towards both.
org.jacodb.analysis.impl.ConditionEvaluatorTest ‑ And(Not(True)) is false()
org.jacodb.analysis.impl.ConditionEvaluatorTest ‑ And(True) is true()
org.jacodb.analysis.impl.ConditionEvaluatorTest ‑ AnnotationType in unexpected()
org.jacodb.analysis.impl.ConditionEvaluatorTest ‑ ConstantEq(boolArg(true), false) is false()
org.jacodb.analysis.impl.ConditionEvaluatorTest ‑ ConstantEq(boolArg(true), true) is true()
org.jacodb.analysis.impl.ConditionEvaluatorTest ‑ ConstantEq(intArg(42), 42) is true()
org.jacodb.analysis.impl.ConditionEvaluatorTest ‑ ConstantEq(intArg(42), 999) is false()
org.jacodb.analysis.impl.ConditionEvaluatorTest ‑ ConstantEq(stringArg('test'), 'other') is false()
org.jacodb.analysis.impl.ConditionEvaluatorTest ‑ ConstantEq(stringArg('test'), 'test') is true()
org.jacodb.analysis.impl.ConditionEvaluatorTest ‑ ConstantEq(unresolved, any) is false()
…
org.jacodb.actors.RoutersTest ‑ Test message key router()
org.jacodb.actors.RoutersTest ‑ Test random router()
org.jacodb.actors.RoutersTest ‑ Test round robin router()
org.jacodb.actors.StoppingTest ‑ Test stops()
org.jacodb.analysis.custom.NullabilityAssumptionAnalysisTest ‑ null-assumption analysis should work 2()
org.jacodb.analysis.custom.NullabilityAssumptionAnalysisTest ‑ null-assumption analysis should work()
org.jacodb.analysis.ifds.ConditionEvaluatorTest ‑ And(Not(True)) is false()
org.jacodb.analysis.ifds.ConditionEvaluatorTest ‑ And(True) is true()
org.jacodb.analysis.ifds.ConditionEvaluatorTest ‑ AnnotationType in unexpected()
org.jacodb.analysis.ifds.ConditionEvaluatorTest ‑ ConstantEq(boolArg(true), false) is false()
…
This pull request removes 7 skipped tests and adds 7 skipped tests. Note that renamed tests count towards both.
org.jacodb.analysis.impl.IfdsNpeTest ‑ activation points maintain flow sensitivity()
org.jacodb.analysis.impl.IfdsNpeTest ‑ array aliasing()
org.jacodb.analysis.impl.IfdsNpeTest ‑ complex aliasing()
org.jacodb.analysis.impl.IfdsNpeTest ‑ context injection in points-to()
org.jacodb.analysis.impl.IfdsNpeTest ‑ mixed array and class aliasing()
org.jacodb.analysis.impl.IfdsNpeTest ‑ no NPE after checked access with field()
org.jacodb.analysis.impl.IfdsNpeTest ‑ simple points-to analysis()
org.jacodb.analysis.ifds.IfdsNpeTest ‑ activation points maintain flow sensitivity()
org.jacodb.analysis.ifds.IfdsNpeTest ‑ array aliasing()
org.jacodb.analysis.ifds.IfdsNpeTest ‑ complex aliasing()
org.jacodb.analysis.ifds.IfdsNpeTest ‑ context injection in points-to()
org.jacodb.analysis.ifds.IfdsNpeTest ‑ mixed array and class aliasing()
org.jacodb.analysis.ifds.IfdsNpeTest ‑ no NPE after checked access with field()
org.jacodb.analysis.ifds.IfdsNpeTest ‑ simple points-to analysis()

♻️ This comment has been updated with latest results.

Copy link
Contributor

github-actions bot commented Apr 4, 2024

Lifecycle test results

48 tests  ±0   48 ✅ ±0   1m 21s ⏱️ -2s
 5 suites ±0    0 💤 ±0 
 5 files   ±0    0 ❌ ±0 

Results for commit 1b5872c. ± Comparison against base commit 5068453.

♻️ This comment has been updated with latest results.

Copy link
Contributor

github-actions bot commented Apr 4, 2024

Test results on JDK 11

1 328 tests  +3   1 318 ✅ +3   5m 48s ⏱️ -38s
   50 suites +2      10 💤 ±0 
   50 files   +2       0 ❌ ±0 

Results for commit 1b5872c. ± Comparison against base commit 5068453.

This pull request removes 1055 and adds 1058 tests. Note that renamed tests count towards both.
org.jacodb.analysis.impl.ConditionEvaluatorTest ‑ And(Not(True)) is false()
org.jacodb.analysis.impl.ConditionEvaluatorTest ‑ And(True) is true()
org.jacodb.analysis.impl.ConditionEvaluatorTest ‑ AnnotationType in unexpected()
org.jacodb.analysis.impl.ConditionEvaluatorTest ‑ ConstantEq(boolArg(true), false) is false()
org.jacodb.analysis.impl.ConditionEvaluatorTest ‑ ConstantEq(boolArg(true), true) is true()
org.jacodb.analysis.impl.ConditionEvaluatorTest ‑ ConstantEq(intArg(42), 42) is true()
org.jacodb.analysis.impl.ConditionEvaluatorTest ‑ ConstantEq(intArg(42), 999) is false()
org.jacodb.analysis.impl.ConditionEvaluatorTest ‑ ConstantEq(stringArg('test'), 'other') is false()
org.jacodb.analysis.impl.ConditionEvaluatorTest ‑ ConstantEq(stringArg('test'), 'test') is true()
org.jacodb.analysis.impl.ConditionEvaluatorTest ‑ ConstantEq(unresolved, any) is false()
…
org.jacodb.actors.RoutersTest ‑ Test message key router()
org.jacodb.actors.RoutersTest ‑ Test random router()
org.jacodb.actors.RoutersTest ‑ Test round robin router()
org.jacodb.actors.StoppingTest ‑ Test stops()
org.jacodb.analysis.custom.NullabilityAssumptionAnalysisTest ‑ null-assumption analysis should work 2()
org.jacodb.analysis.custom.NullabilityAssumptionAnalysisTest ‑ null-assumption analysis should work()
org.jacodb.analysis.ifds.ConditionEvaluatorTest ‑ And(Not(True)) is false()
org.jacodb.analysis.ifds.ConditionEvaluatorTest ‑ And(True) is true()
org.jacodb.analysis.ifds.ConditionEvaluatorTest ‑ AnnotationType in unexpected()
org.jacodb.analysis.ifds.ConditionEvaluatorTest ‑ ConstantEq(boolArg(true), false) is false()
…
This pull request removes 7 skipped tests and adds 7 skipped tests. Note that renamed tests count towards both.
org.jacodb.analysis.impl.IfdsNpeTest ‑ activation points maintain flow sensitivity()
org.jacodb.analysis.impl.IfdsNpeTest ‑ array aliasing()
org.jacodb.analysis.impl.IfdsNpeTest ‑ complex aliasing()
org.jacodb.analysis.impl.IfdsNpeTest ‑ context injection in points-to()
org.jacodb.analysis.impl.IfdsNpeTest ‑ mixed array and class aliasing()
org.jacodb.analysis.impl.IfdsNpeTest ‑ no NPE after checked access with field()
org.jacodb.analysis.impl.IfdsNpeTest ‑ simple points-to analysis()
org.jacodb.analysis.ifds.IfdsNpeTest ‑ activation points maintain flow sensitivity()
org.jacodb.analysis.ifds.IfdsNpeTest ‑ array aliasing()
org.jacodb.analysis.ifds.IfdsNpeTest ‑ complex aliasing()
org.jacodb.analysis.ifds.IfdsNpeTest ‑ context injection in points-to()
org.jacodb.analysis.ifds.IfdsNpeTest ‑ mixed array and class aliasing()
org.jacodb.analysis.ifds.IfdsNpeTest ‑ no NPE after checked access with field()
org.jacodb.analysis.ifds.IfdsNpeTest ‑ simple points-to analysis()

♻️ This comment has been updated with latest results.

Copy link

codecov bot commented Apr 15, 2024

Codecov Report

Attention: Patch coverage is 77.19113% with 216 lines in your changes are missing coverage. Please review.

Project coverage is 74.79%. Comparing base (5068453) to head (1b5872c).

Files Patch % Lines
...g/jacodb/analysis/ifds/taint/TaintFlowFunctions.kt 53.33% 21 Missing ⚠️
.../org/jacodb/actors/impl/workers/UserActorWorker.kt 72.58% 15 Missing and 2 partials ⚠️
.../jacodb/actors/impl/workers/InternalActorWorker.kt 45.83% 12 Missing and 1 partial ⚠️
...jacodb/actors/impl/actors/internal/WatcherActor.kt 80.00% 6 Missing and 6 partials ⚠️
...in/kotlin/org/jacodb/analysis/ifds/npe/Builders.kt 57.14% 11 Missing and 1 partial ⚠️
...n/kotlin/org/jacodb/actors/impl/ActorSystemImpl.kt 71.79% 11 Missing ⚠️
...kotlin/org/jacodb/analysis/ifds/unused/Builders.kt 76.08% 10 Missing and 1 partial ⚠️
...org/jacodb/analysis/ifds/common/ChunkStrategies.kt 47.36% 10 Missing ⚠️
...org/jacodb/analysis/ifds/common/JcChunkResolver.kt 79.16% 6 Missing and 4 partials ⚠️
.../kotlin/org/jacodb/analysis/ifds/taint/Builders.kt 64.28% 9 Missing and 1 partial ⚠️
... and 22 more
Additional details and impacted files
@@              Coverage Diff              @@
##             develop     #225      +/-   ##
=============================================
- Coverage      75.81%   74.79%   -1.02%     
- Complexity      1649     1695      +46     
=============================================
  Files            175      188      +13     
  Lines          10241    10218      -23     
  Branches        1892     1838      -54     
=============================================
- Hits            7764     7643     -121     
- Misses          1713     1834     +121     
+ Partials         764      741      -23     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@sergeypospelov sergeypospelov requested a review from Lipen May 14, 2024 22:15
@sergeypospelov sergeypospelov marked this pull request as ready for review May 15, 2024 10:57
@sergeypospelov sergeypospelov changed the title [WIP] IFDS core refactor IFDS core refactor May 15, 2024
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.

2 participants