-
Notifications
You must be signed in to change notification settings - Fork 26
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
String Analysis #1
Open
errt
wants to merge
593
commits into
develop
Choose a base branch
from
feature/StringAnalysis
base: develop
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from 1 commit
Commits
Show all changes
593 commits
Select commit
Hold shift + click to select a range
ba0f1e6
Cleanup path transformation
maximilianruesch b54c1c9
Fix initialization handling in field access information key
maximilianruesch 4a1f3de
Convert interprocedural analysis to contextprovider
maximilianruesch 2b9940c
Simplify switch statement processing a bit
maximilianruesch c01be5f
Simplify and fix path leaning and processing
maximilianruesch 935b913
Reduce nesting of string expressions
maximilianruesch a546963
Start refactor of interprocedural analysis
maximilianruesch 272c271
Denote nested switch improvement
maximilianruesch ac25c20
Refactor to l0 and l1
maximilianruesch 4a9f267
Fix formatting
maximilianruesch 1ab4a86
Merge branch 'bug/fix-initialization-of-field-access-information-key'…
maximilianruesch b7db6a1
Start to unify string analysis
maximilianruesch 8bd2657
Refactor dependent vars handling
maximilianruesch c1e9209
Simplify lean path computation
maximilianruesch c4deda8
Refactor path elements to hold pcs instead of def sites
maximilianruesch 6bbcfd2
Start support of string_concat calls on l0 level
maximilianruesch 74acf8c
Refactor state dependency of interpretation handlers
maximilianruesch e25bd09
Move array access handling to l0
maximilianruesch b6c4f63
Revamp testing scheme to level based testing
maximilianruesch cd34702
Add static method test
maximilianruesch 800e5c6
Simplify L1Analysis
maximilianruesch e232e4d
Simplify virtual function call resolving
maximilianruesch a561116
Support simple contexts for callees via context provider
maximilianruesch c296ec3
Revamp state hierarchy
maximilianruesch 4f57fc1
Fix field interpretation for l1 tests
maximilianruesch eb304c6
Remove unused l0 interpreters
maximilianruesch 71475f7
Repair some l1 test cases
maximilianruesch e688f93
Properly deduplicate possible string values in string constancy
maximilianruesch 703aa8a
Support substring calls on l0 string analysis
maximilianruesch 5829189
Merge branch 'bug/fix-constant-value-integer-range-canonical-forms' i…
maximilianruesch d4adea8
Fix formatting after scalaFmt intro post work
maximilianruesch cb124c3
Fix substring test
maximilianruesch a1c8f6f
Exclude some broken L1 tests from general test runs
maximilianruesch 61e072b
Reduce static function call handling to l0 level
maximilianruesch 2100448
Reduce non-virtual method call handling to l0 level
maximilianruesch c302ff3
Revamp interpretation result system
maximilianruesch b3308a3
Lower upper bound of interpreted instructions
maximilianruesch da42432
Remove unnecessary state handling for virtual function calls
maximilianruesch dcce8f1
Introduce refinability traits into interpretation results
maximilianruesch bdb8855
Revamp dependency handling for interpretation
maximilianruesch 0d11391
Remove fallthrough ip result
maximilianruesch 244ea73
Split interpretation handler from state
maximilianruesch 15e0e69
Completely revamp interpretation dependency handling
maximilianruesch ea74cbb
Group all simple value const expr interpreters
maximilianruesch 4b7a53b
Merge branch 'develop' into feature/StringAnalysis
maximilianruesch dc467a5
Remove debug statements from property store
maximilianruesch 40b2dfd
Use PCs for interpretation instead of def sites
maximilianruesch 1d2a997
Fix complex sci detection for parameters
maximilianruesch f1903f8
Rebuild string constancy information with constancy trees
maximilianruesch c7ee182
Move control of callees to using interpreter
maximilianruesch b00b2fb
Remove method context from l1 state responsibility
maximilianruesch b45921b
Collapse computation state into single class
maximilianruesch 7f80037
Remove unused code
maximilianruesch f06b1e2
Use own state for def site analysis
maximilianruesch bd9ce1b
Simplify string tree repetition
maximilianruesch 62c88db
Remove unwanted changes
maximilianruesch 7b34f1b
Introduce realistic test assertion values
maximilianruesch 6168ffd
Remove complex path finding for control structures
maximilianruesch 623e5f7
Turn around string analysis to produce UBs instead of LBs
maximilianruesch d0ffa12
Simplify all string analysis levels
maximilianruesch dffb636
Further simplify all string analysis levels
maximilianruesch 231fa30
Remove nested paths from string analysis for now
maximilianruesch a49c1fd
Simplify lean path construction
maximilianruesch 8f7fa64
Add simple form of structural analysis
maximilianruesch d30fefa
Implement location of proper acyclic intervals
maximilianruesch cc52286
Reimagine def site entities as def use site entities
maximilianruesch 84caf22
Simplify path handling
maximilianruesch 6075f15
Return functions for string constancy and introduce path finder hiera…
maximilianruesch c82b6d6
Introduce path finder for structural analysis
maximilianruesch b62fd8f
Introduce hyperedges to better visualize structural analysis
maximilianruesch 64ebe9d
Stabilize post order traversal
maximilianruesch ee598a6
Break up basic blocks in structural analysis
maximilianruesch 81f3b3a
Remove pathfinder hierarchy in favor of structural analysis based pat…
maximilianruesch 97b0d2f
Simplify string analysis and definition package names
maximilianruesch ca9787d
Fix detection for cyclic graphs in structural analysis
maximilianruesch a77c94c
Fix color coding for DOT export
maximilianruesch 185e606
Fix detection of cycles in block types
maximilianruesch 2f5b4d5
Implement location of cycles structural analysis
maximilianruesch 286c8f0
Refactor structural analysis structure
maximilianruesch 177aea7
Simplify ayclic region detection
maximilianruesch 152fa7b
Improve node coloring for dot export
maximilianruesch 58b2f7d
Clarify variable reference
maximilianruesch 759c242
Overhaul string analysis computation for flow functions
maximilianruesch c64f8ec
Correct package file name
maximilianruesch bd39888
Remove unused functions
maximilianruesch 68855e3
Compute super flow graph in structural analysis as well
maximilianruesch a00b64c
Generalize used flow graph nodes to a trait
maximilianruesch 9f4bd78
Add a special global exit node
maximilianruesch 636423e
Enable computing the entry node to a region during structural analysis
maximilianruesch 2f52fa6
Implement rudimentary data flow analysis
maximilianruesch d039725
Extend environments by webs
maximilianruesch 7f35866
Extend data flow analysis for remaining acyclic regions
maximilianruesch 85778e7
Fix substring and append flow functions
maximilianruesch 93bbe9c
Fix computation of registered webs
maximilianruesch f6062dc
Return lower bound when cyclic control structures exist
maximilianruesch a4a9031
Update many test cases for L0
maximilianruesch 75de3db
Correctly interpret arguments of setLength
maximilianruesch fc09357
Fix interpreting arguments of substring calls
maximilianruesch 4ad4694
Return LB for values which were not interpreted
maximilianruesch bdb4628
Stabelize traversal for data flow analysis
maximilianruesch e606db4
Fix multiple disjoint def sites that meet at analyzed variable
maximilianruesch 373f3f5
Fix return value interpretation of virtual function calls
maximilianruesch e74bf87
Correctly forward string builder references during append calls
maximilianruesch 013e883
Refactor method string flow into its own property
maximilianruesch 76f4302
Fix some of the L1 test cases
maximilianruesch ca87162
Simplify interface of interpretation handler levels
maximilianruesch dc18adb
Let loops map to dynamic elements if they modify the environment
maximilianruesch 93888e3
Rebuild for context oriented analysis
maximilianruesch 9d0624c
Fix the parameter read tests
maximilianruesch aa1d43d
Fix missing simplify in tests
maximilianruesch 87ad517
Fix remaining static call based tests
maximilianruesch 63e1f33
Fix post order traversal and implement more efficient cycle check
maximilianruesch d867a54
Implement much more efficient back edge path detection
maximilianruesch ef57f72
Refactor out individual processing functions in data flow analysis
maximilianruesch d21898d
Optimize data flow analysis
maximilianruesch 37f7959
Remove timing debug statements
maximilianruesch b8519f5
Remove filters on L0 tests
maximilianruesch c9acbc3
Correctly handle dependencies in string analysis
maximilianruesch a4f5cb4
Interpret arbitrary calls to object return types as well
maximilianruesch dbd7db0
Fix L1 tests by interpreting notable variable usages correctly
maximilianruesch 600ef56
Remove debug statements
maximilianruesch 2f4e0c6
Enable a few more L1 tests that now pass
maximilianruesch f7092ed
Refactor test overrides such that only annotations need to be specifi…
maximilianruesch 3d93873
Improve performance of natural loop interpretation
maximilianruesch ec553c1
Add more L0 test cases
maximilianruesch 38bfe45
Refactor reflective calls support tool into a more readable form
maximilianruesch 3f06497
Run tests with domains from both L1 and L2
maximilianruesch 721554b
Remove unused methods
maximilianruesch 9102ff9
Handle invalid flow instead of neutral elements
maximilianruesch 8248100
Use field access information FPCF property instead of the project inf…
maximilianruesch fb07cb8
Simplify or-nodes into single child if present
maximilianruesch 6c07b23
Remove superflouous comment
maximilianruesch 7be416a
Fix handling of field reads for EPK access dependees
maximilianruesch b68d366
Harden context string analysis against missing parameters
maximilianruesch 0e570dd
Remove unused functions
maximilianruesch 6caa4ba
Fix dependee collection of field read interpretation
maximilianruesch a5e8c91
Fix some L1 tests
maximilianruesch 6193e55
Properly react to updates in function call interpretation
maximilianruesch 6811a89
Integrate system properties analysis
maximilianruesch e2c1403
Fix function call interpreter for non-defined method dependees
maximilianruesch 8a1ed5e
Improve structural analysis performance
maximilianruesch 07312ba
Add global entry to flow graphs
maximilianruesch 739036a
Start optimizing memory footprint of data flow analysis
maximilianruesch 8dfb5d4
Slightly optimize index building for dominator tree during structural…
maximilianruesch dd4a0e0
Optimize some predecessor checks
maximilianruesch 99adecf
Fix acyclic regions and greatly improve acyclic region performance
maximilianruesch 9815bb0
Speed up post order traversal by using inner elements
maximilianruesch 9edd5e9
Implement mutable dominator information
maximilianruesch 961f5e4
Simplify location of acyclic interval
maximilianruesch 2d6a861
Simplify path back
maximilianruesch aa843ba
Implement rudimentary cycle caching
maximilianruesch 6aaa5cc
Simplify replace method
maximilianruesch ff7575f
Use mutable graphs in structural analysis
maximilianruesch 2feeb21
Simplify dominator updates
maximilianruesch 862373c
Simplify post order traversal
maximilianruesch 7f6fd1d
Make analyzing proper regions somewhat more efficient
maximilianruesch c196d7e
Rework data flow analysis of proper regions
maximilianruesch 371850c
Correct webs computation for data flow analysis start
maximilianruesch 3088212
Speed up proper region data flow somewhat
maximilianruesch f637269
Prefilter string tree concats for empty elements
maximilianruesch 97901f0
Fix parameter dependency handling in context string analysis
maximilianruesch a03542d
Really fix parameter dependency handling and add test case
maximilianruesch 0936496
Add soundness mode and failure to string interpretation
maximilianruesch d9ce2f3
Fix soundness mode config key for failures
maximilianruesch c77c3e4
Remove unnecessary statements
maximilianruesch dc41edb
Improve memory efficiency of joining environments
maximilianruesch 9b079c2
Cache loop graphs during data flow analysis
maximilianruesch f7d932d
Introduce after phase scheduling to properties test
maximilianruesch 16cba15
Rework string analysis tests
maximilianruesch 860f6a4
Flatten call stack for handling new callers
maximilianruesch 15875f2
Raise all levels by one and add L0 for handling const values
maximilianruesch 221f262
Reduce usage of memory inefficient constForAllFlow
maximilianruesch 948c255
Increase memory efficiency of data flow analysis
maximilianruesch dea60cb
Increase memory efficiency of preparations for data flow analysis
maximilianruesch ec64401
Improve memory efficiency of string trees using multi layer caching
maximilianruesch 645ab05
Remove unused imports
maximilianruesch 84978ba
Add regex caching and preliminary sorting on string tree node
maximilianruesch 980df12
Stabilize string tree node ordering by introducing set and seq based …
maximilianruesch 22cb723
Cache more of the start env if possible
maximilianruesch dab0378
Improve sorting and fix tests related to sorting
maximilianruesch 0da7ef5
Add performance caching for PDUWebs
maximilianruesch a2421fd
Improve joining environments
maximilianruesch 3de6534
Rework context string analysis for more controlled continuation
maximilianruesch ce9f140
Split up analyses for method parameter contexts
maximilianruesch 4a122dc
Introduce node hashcode caching for flow graph nodes
maximilianruesch 75ef400
Optimize parameter replacement in string trees
maximilianruesch b80f551
Optimize children mapping in string tree OR nodes
maximilianruesch 010c26c
Limit size of string trees by configurable maximum depth
maximilianruesch 4c9fac4
Optimize handling of string environments during data flow analysis
maximilianruesch 9a1f166
Fix loading domain into test framework
maximilianruesch b2d2b0b
Make excluded packages configurable
maximilianruesch a352518
Introduce soundness mode for data flow analysis
maximilianruesch 7ef3a13
Fill in missing config values into string analysis and reference conf
maximilianruesch 951b950
Fix invalid parameter references due to cross-method field read strin…
maximilianruesch 11f14e1
Move soundness mode into parent package
maximilianruesch 9b30598
Add soundness mode to more interpreters
maximilianruesch 964dcbb
Restrict constructor call interpretation to string relevant types
maximilianruesch 10733bf
Remove write threshold from field read interpretation
maximilianruesch d714256
Improve maximum depth detection
maximilianruesch 823c006
Support more java serialized class strings
maximilianruesch bbcc3c4
Improve return value soundness mode for several interpreters
maximilianruesch deb608c
Introduce l3 and raise field access interpretation
maximilianruesch 71823b0
Merge branch 'develop' into feature/StringAnalysis
maximilianruesch 34f1f3b
Fix variable definitions after merge
maximilianruesch e502d1b
Improve performance of string tree environments
maximilianruesch 1c5a3eb
Fix indents in config
maximilianruesch a4e762a
Limit string tree depth to 10
maximilianruesch dee9b5f
Add some improve comments
maximilianruesch bc0d6c4
Merge branch 'develop' into feature/StringAnalysis
maximilianruesch d7d4ee9
Add trivial string analysis
maximilianruesch a2c09bf
Move the method string flow analysis and its state into the flow anal…
maximilianruesch 1d41aaa
Move the interpretation state into the interpretation package
maximilianruesch 7c3b47c
Rename test fixture package to match fpcf package name
maximilianruesch ea80b66
Remove intermediate string constancy information
maximilianruesch 7517af8
Remove unused string constancy type
maximilianruesch 586821a
Convert string constancy level from enum to case objects
maximilianruesch f506918
Remove unused string tree repetition
maximilianruesch 506f096
Fix recursion depth limit barrier
maximilianruesch 76d5210
Revert unwanted changes in class usage analysis
maximilianruesch abc228d
Unify handling of soundness mode
maximilianruesch b509566
Refactor max depth to depth threshold
maximilianruesch 455df95
Remove some instability by hardening method parameter handling for fi…
maximilianruesch 395f738
Add improvement comment for joining environments
maximilianruesch 4ff5439
Fix inefficiency for computing new upper bounds for field read trees
maximilianruesch 5452078
Allow string constants to be resolved outside of method string flow
maximilianruesch 3e43f08
Simplify string analysis state definition
maximilianruesch 04d9271
Remove unused code
maximilianruesch 2489ed6
Simplify supported types and move into their only usage
maximilianruesch 63e6a0e
Fix formatting
maximilianruesch d431a92
Compute string analysis within callgraph in the tests
maximilianruesch 1b1f0ba
Add invalid string constancy level
maximilianruesch 9e991f9
Fix return values of many string analyis parts
maximilianruesch 6351151
Fix crash when no callers dependee was computed before but receives a…
maximilianruesch 4ce8957
Simplify to string on constancy property
maximilianruesch c407442
Greatly refactor reflective call analysis tool
maximilianruesch 0a1e057
Simplify high soundness handling down to boolean type alias
maximilianruesch 90339a6
Add tests for missing configurations
maximilianruesch fceb1f5
Add tests for missing configurations
maximilianruesch ce6bc7f
Document all string analysis tests
maximilianruesch 63da916
Rename hierarchy related string analysis test fixtures
maximilianruesch bd24501
Rename test properties packages
maximilianruesch a5584c1
Add some documentation to test annotations
maximilianruesch 00ac794
Add documentation to string analysis related properties
maximilianruesch 018369b
Improve string constancy level tests
maximilianruesch 4c54426
Remove high soundness type alias
maximilianruesch 10615d4
Rename string constancy level meet function
maximilianruesch 8d8713b
Rename config object
maximilianruesch db2daf0
Improve equality check for supported types
maximilianruesch 07d9c3f
Improve documentation for all string analysis modules
maximilianruesch 1e9b2e9
Merge branch 'develop' into feature/StringAnalysis
maximilianruesch File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think this can even use
eq
instead of==