2025-12-17 21:10:51 -07:00
|
|
|
## Termanology
|
|
|
|
|
1. Forward Slice => All statements that could be affected if you change a given statement.
|
2025-12-18 15:16:47 -07:00
|
|
|
2. AIS = Actualy Impacted Set (Manully calcualte the expected outcome)
|
|
|
|
|
3. EIS = Estimated Impacted Set (The set extracted from the outcome of the program)
|
|
|
|
|
|
2025-12-04 18:41:14 -07:00
|
|
|
|
|
|
|
|
### Run
|
|
|
|
|
```bash
|
2025-12-04 22:17:52 -07:00
|
|
|
chmod +x run.sh
|
2025-12-04 18:41:14 -07:00
|
|
|
# Show all dependencies for a file
|
|
|
|
|
./run.sh examples/Example1.java
|
|
|
|
|
# Analyze impact of line 3
|
|
|
|
|
./run.sh examples/Example1.java 3
|
|
|
|
|
```
|
2025-12-17 21:10:51 -07:00
|
|
|
|
|
|
|
|
# Testing
|
|
|
|
|
## Test1 simple data flow
|
|
|
|
|
### Line 3 (int x = 5;)
|
|
|
|
|
AIS = {3, 4, 5, 6}
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
TODO:
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### Line 4 (int y = x + 2;)
|
|
|
|
|
AIS = {4,5,6}
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
=== Impact Analysis for Line 4 ===
|
|
|
|
|
|
|
|
|
|
Statement(s) at line 4:
|
|
|
|
|
2: int y = x + 2 ;
|
|
|
|
|
|
|
|
|
|
=== IMPACTED LINES ===
|
|
|
|
|
Line 4
|
|
|
|
|
Line 5
|
|
|
|
|
Line 6
|
|
|
|
|
|
|
|
|
|
Total: 3 lines impacted
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
***
|
|
|
|
|
|
|
|
|
|
## Test2 Control Dependency
|
|
|
|
|
### Change at Line 5 (if (x > 5))
|
|
|
|
|
AIS = {5, 6, 8, 9}
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
=== Impact Analysis for Line 5 ===
|
|
|
|
|
|
|
|
|
|
Statement(s) at line 5:
|
|
|
|
|
3: if ( x > 5 )
|
|
|
|
|
|
|
|
|
|
=== IMPACTED LINES ===
|
|
|
|
|
Line 5
|
|
|
|
|
Line 8
|
|
|
|
|
Line 9
|
|
|
|
|
|
|
|
|
|
Total: 3 lines impacted
|
|
|
|
|
```
|
|
|
|
|
TP: {5, 8, 9} |TP| = 3
|
|
|
|
|
FP: {} |FP| = 0
|
|
|
|
|
FN: {6} |FN| = 1
|
|
|
|
|
Precision: 3 / (3 + 0) = 3/3 = 1.00 (100%)
|
|
|
|
|
Recall: 3 / (3 + 1) = 3/4 = 0.75 (75%)
|
|
|
|
|
Analysis:
|
|
|
|
|
- Perfect precision (no false alarms)
|
|
|
|
|
- Missed line 6 (the assignment inside the if-block)
|
|
|
|
|
- UNDER-APPROXIMATION
|
|
|
|
|
|
|
|
|
|
### Change at Line 3 (int x = 10;)
|
|
|
|
|
AIS = {3, 5, 6, 8, 9}
|
|
|
|
|
|
|
|
|
|
***
|
|
|
|
|
|
|
|
|
|
## Test3 Simple Loop
|
|
|
|
|
### Change at Line 3 (int sum = 0;)
|
|
|
|
|
AIS = {3, 6, 8}
|
|
|
|
|
|
|
|
|
|
### Change at Line 5 (for loop heading)
|
|
|
|
|
AIS = {5, 6, 8}
|
|
|
|
|
|
|
|
|
|
***
|
|
|
|
|
|
|
|
|
|
## Test4 If-Else Branch
|
|
|
|
|
### Change at Line 5 (if (x > 5))
|
|
|
|
|
AIS = {5, 6, 8, 10, 11}
|
|
|
|
|
|
|
|
|
|
### Change at Line 6 (y = x + 10;)
|
|
|
|
|
AIS = {6, 10, 11}
|
|
|
|
|
|
|
|
|
|
***
|
|
|
|
|
|
|
|
|
|
## Test5 Multiple Uses va
|
|
|
|
|
### Change at Line 3 (int a = 5;)
|
|
|
|
|
AIS = {3, 4, 5, 6, 7}
|
|
|
|
|
|
|
|
|
|
### Change at Line 4 (int b = a + 2;)
|
|
|
|
|
AIS = {4, 6, 7}
|
|
|
|
|
|
|
|
|
|
***
|
|
|
|
|
|
|
|
|
|
## Test6 Nested Control
|
|
|
|
|
### Change at Line 5 (if (x > 5))
|
|
|
|
|
AIS = {5, 6, 7, 10, 11}
|
|
|
|
|
|
|
|
|
|
### Change at Line 6 (if (x > 8))
|
|
|
|
|
AIS = {6, 7, 10, 11}
|
|
|
|
|
|
|
|
|
|
***
|
|
|
|
|
|
|
|
|
|
## Test7 While Loop
|
|
|
|
|
### Change at Line 5 (while (count < 5))
|
|
|
|
|
AIS = {5, 6, 7, 9}
|
|
|
|
|
|
|
|
|
|
### Change at Line 3 (int count = 0;)
|
|
|
|
|
AIS = {3, 5, 6, 7, 9}
|
|
|
|
|
|
|
|
|
|
***
|
|
|
|
|
|
|
|
|
|
## Test8 Reassignment
|
|
|
|
|
### Change at Line 3 (int x = 5;)
|
|
|
|
|
AIS = {3, 4, 7}
|
|
|
|
|
|
|
|
|
|
### Change at Line 5 (x = 10;)
|
|
|
|
|
AIS = {5, 6, 8}
|
|
|
|
|
|
|
|
|
|
***
|
|
|
|
|
|
|
|
|
|
## Test9 No Impact
|
|
|
|
|
### Change at Line 4 (int y = 10;)
|
|
|
|
|
AIS = {4, 6, 8}
|
|
|
|
|
|
|
|
|
|
### Change at Line 3 (int x = 5;)
|
|
|
|
|
AIS = {3, 5, 7}
|
|
|
|
|
|
|
|
|
|
***
|
|
|
|
|
|
|
|
|
|
## Test10 Complex Expression
|
|
|
|
|
### Change at Line 3 (int a = 2;)
|
|
|
|
|
AIS = {3, 6, 7, 8, 9}
|
|
|
|
|
|
|
|
|
|
### Change at Line 8 (if (x > 5))
|
|
|
|
|
AIS = {8, 9}
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
=== IMPACTED LINES ===
|
|
|
|
|
Line 6
|
|
|
|
|
Line 8
|
|
|
|
|
```
|