Skip to content

Commit

Permalink
add tests with anonymous classes
Browse files Browse the repository at this point in the history
  • Loading branch information
JuditKnoll committed Feb 10, 2025
1 parent 37d57e5 commit ad09f70
Show file tree
Hide file tree
Showing 3 changed files with 75 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,26 @@ void testUnsafeFieldUsages4() {
assertBugInMethodAtLine("AT_UNSAFE_RESOURCE_ACCESS_IN_THREAD", "UnsafeFieldUsage4", "createVehicle", 12);
}

@Test
void testUnsafeFieldUsages5() {
performAnalysis("commonResources/UnsafeFieldUsage5.class",
"commonResources/UnsafeFieldUsage5$1.class",
"commonResources/Vehicle.class",
"commonResources/Vehicle$Builder.class");
assertBugTypeCount("AT_UNSAFE_RESOURCE_ACCESS_IN_THREAD", 2);
// TODO check exact bugs
}

@Test
void testUnsafeFieldUsages6() {
performAnalysis("commonResources/UnsafeFieldUsage6.class",
"commonResources/UnsafeFieldUsage6$1.class",
"commonResources/Vehicle.class",
"commonResources/Vehicle$Builder.class");
assertBugTypeCount("AT_UNSAFE_RESOURCE_ACCESS_IN_THREAD", 3);
// TODO check exact bugs
}

@Test
void testSynchronizedUnsafeFieldUsage() {
performAnalysis("commonResources/SynchronizedUnsafeFieldUsage.class",
Expand Down
26 changes: 26 additions & 0 deletions spotbugsTestCases/src/java/commonResources/UnsafeFieldUsage5.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package commonResources;

public class UnsafeFieldUsage5 {

private final Vehicle vehicle = new Vehicle();

public UnsafeFieldUsage5() {
Thread t1 = new Thread(new Runnable() {
@Override
public void run() {
vehicle.setModel("Toyota");
}
});
t1.start();

Thread t2 = new Thread(this::createVehicle);
t2.start();
}

private void createVehicle() {
vehicle.setModel("Honda");
vehicle.setYear(2020);
vehicle.setColor("Red");
vehicle.setPrice(20000);
}
}
29 changes: 29 additions & 0 deletions spotbugsTestCases/src/java/commonResources/UnsafeFieldUsage6.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package commonResources;

public class UnsafeFieldUsage6 {

private final Vehicle vehicle = new Vehicle();

public UnsafeFieldUsage6() {

Thread t1 = new Thread(new Runnable() {
@Override
public void run() {
vehicle.setModel("Toyota");
}
});
t1.start();

Thread t2 = new Thread(
() -> vehicle.setModel("Honda")
);
t2.start();

Thread t3 = new Thread(this::createVehicle);
t3.start();
}

private void createVehicle() {
vehicle.setModel("Honda");
}
}

0 comments on commit ad09f70

Please sign in to comment.