update: testing and result finding quest

This commit is contained in:
Mann Patel
2025-12-17 21:10:51 -07:00
parent 4c7002c263
commit 27bc69e837
11 changed files with 249 additions and 7 deletions

149
README.md
View File

@@ -1,16 +1,151 @@
### Things
1. Forward Slice => All statements that could be affected if you change a given statement.Think of it like ripple effects in water:
## Termanology
1. Forward Slice => All statements that could be affected if you change a given statement.
### Run
```bash
chmod +x run.sh
# Show all dependencies for a file
./run.sh examples/Example1.java
# Analyze impact of line 3
./run.sh examples/Example1.java 3
```
# 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
```

8
tests/test1.java Normal file
View File

@@ -0,0 +1,8 @@
public class test1 {
public static void main(String[] args) {
int x = 5; // Line 3
int y = x + 2; // Line 4
int z = y * 3; // Line 5
System.out.println(z); // Line 6
}
}

12
tests/test10.java Normal file
View File

@@ -0,0 +1,12 @@
public class test10{
public static void main(String[] args) {
int a = 2; // Line 3
int b = 3; // Line 4
int c = 4; // Line 5
int result = (a + b) * c; // Line 6
int x = result / 2; // Line 7
if (x > 5) { // Line 8
System.out.println(x); // Line 9
}
}
}

11
tests/test2.java Normal file
View File

@@ -0,0 +1,11 @@
public class test2{
public static void main(String[] args) {
int x = 10; // Line 3
int y = 0; // Line 4
if (x > 5) { // Line 5
y = x * 2; // Line 6
}
int z = y + 1; // Line 8
System.out.println(z); // Line 9
}
}

10
tests/test3.java Normal file
View File

@@ -0,0 +1,10 @@
public class test3 {
public static void main(String[] args) {
int sum = 0; // Line 3
int i; // Line 4
for (i = 0; i < 5; i++) { // Line 5
sum = sum + i; // Line 6
}
System.out.println(sum); // Line 8
}
}

13
tests/test4.java Normal file
View File

@@ -0,0 +1,13 @@
public class test4{
public static void main(String[] args) {
int x = 10; // Line 3
int y = 0; // Line 4
if (x > 5) { // Line 5
y = x + 10; // Line 6
} else {
y = x - 10; // Line 8
}
int z = y * 2; // Line 10
System.out.println(z); // Line 11
}
}

9
tests/test5.java Normal file
View File

@@ -0,0 +1,9 @@
public class test5 {
public static void main(String[] args) {
int a = 5; // Line 3
int b = a + 2; // Line 4
int c = a * 3; // Line 5
int d = b + c; // Line 6
System.out.println(d); // Line 7
}
}

13
tests/test6.java Normal file
View File

@@ -0,0 +1,13 @@
public class test6{
public static void main(String[] args) {
int x = 10; // Line 3
int y = 0; // Line 4
if (x > 5) { // Line 5
if (x > 8) { // Line 6
y = x * 2; // Line 7
}
}
int z = y + 1; // Line 10
System.out.println(z); // Line 11
}
}

11
tests/test7.java Normal file
View File

@@ -0,0 +1,11 @@
public class test7 {
public static void main(String[] args) {
int count = 0; // Line 3
int sum = 0; // Line 4
while (count < 5) { // Line 5
sum = sum + count; // Line 6
count = count + 1; // Line 7
}
System.out.println(sum); // Line 9
}
}

10
tests/test8.java Normal file
View File

@@ -0,0 +1,10 @@
public class test8 {
public static void main(String[] args) {
int x = 5; // Line 3
int y = x + 1; // Line 4
x = 10; // Line 5
int z = x * 2; // Line 6
System.out.println(y); // Line 7
System.out.println(z); // Line 8
}
}

10
tests/test9.java Normal file
View File

@@ -0,0 +1,10 @@
public class test9{
public static void main(String[] args) {
int x = 5; // Line 3
int y = 10; // Line 4
int z = x + 1; // Line 5
int w = y + 2; // Line 6
System.out.println(z); // Line 7
System.out.println(w); // Line 8
}
}