Skip to content

Commit 7f7a168

Browse files
committed
Stop using soot in NonNullSpeculator so it can be used by fuzzer
1 parent 1d1864d commit 7f7a168

File tree

5 files changed

+15
-13
lines changed

5 files changed

+15
-13
lines changed

utbot-framework-api/src/main/kotlin/org/utbot/framework/TrustedPackages.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,9 @@ private val isPackageTrusted: MutableMap<String, Boolean> = mutableMapOf()
1010
/**
1111
* Determines whether [this] class is from trusted libraries as defined in [TrustedLibraries].
1212
*/
13-
fun SootClass.isFromTrustedLibrary(): Boolean {
13+
fun SootClass.isFromTrustedLibrary(): Boolean = isTrustedPackage(packageName)
14+
15+
fun isTrustedPackage(packageName: String): Boolean {
1416
isPackageTrusted[packageName]?.let {
1517
return it
1618
}

utbot-framework/src/main/kotlin/org/utbot/engine/Traverser.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2342,7 +2342,7 @@ class Traverser(
23422342
createdField: SymbolicValue,
23432343
) {
23442344
if (nonNullSpeculator.speculativelyCannotProduceNullPointerException(
2345-
field = field,
2345+
field = field.fieldId,
23462346
isMocked = (createdField as? ObjectValue)?.asWrapperOrNull is UtMockWrapper,
23472347
classUnderTest = methodUnderTest.classId,
23482348
)

utbot-framework/src/main/kotlin/org/utbot/framework/context/NonNullSpeculator.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package org.utbot.framework.context
22

33
import org.utbot.framework.plugin.api.ClassId
4-
import soot.SootField
4+
import org.utbot.framework.plugin.api.FieldId
55

66
interface NonNullSpeculator {
77
/**
@@ -13,7 +13,7 @@ interface NonNullSpeculator {
1313
* @see docs/SpeculativeFieldNonNullability.md for more information.
1414
*/
1515
fun speculativelyCannotProduceNullPointerException(
16-
field: SootField,
16+
field: FieldId,
1717
isMocked: Boolean,
1818
classUnderTest: ClassId,
1919
): Boolean

utbot-framework/src/main/kotlin/org/utbot/framework/context/simple/SimpleNonNullSpeculator.kt

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,19 @@ package org.utbot.framework.context.simple
22

33
import org.utbot.framework.UtSettings
44
import org.utbot.framework.context.NonNullSpeculator
5-
import org.utbot.framework.isFromTrustedLibrary
5+
import org.utbot.framework.isTrustedPackage
66
import org.utbot.framework.plugin.api.ClassId
7-
import soot.SootField
7+
import org.utbot.framework.plugin.api.FieldId
8+
import org.utbot.framework.plugin.api.util.isFinal
9+
import org.utbot.framework.plugin.api.util.isPublic
810

911
class SimpleNonNullSpeculator : NonNullSpeculator {
1012
override fun speculativelyCannotProduceNullPointerException(
11-
field: SootField,
13+
field: FieldId,
1214
isMocked: Boolean,
1315
classUnderTest: ClassId,
1416
): Boolean =
1517
!UtSettings.maximizeCoverageUsingReflection &&
16-
field.declaringClass.isFromTrustedLibrary() &&
18+
isTrustedPackage(field.declaringClass.packageName) &&
1719
(field.isFinal || !field.isPublic)
1820
}

utbot-framework/src/main/kotlin/org/utbot/framework/context/spring/SpringNonNullSpeculator.kt

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@ import org.utbot.framework.context.NonNullSpeculator
55
import org.utbot.framework.plugin.api.ClassId
66
import org.utbot.framework.plugin.api.FieldId
77
import org.utbot.framework.plugin.api.util.allDeclaredFieldIds
8-
import org.utbot.framework.plugin.api.util.fieldId
9-
import soot.SootField
108

119
class SpringNonNullSpeculator(
1210
private val delegateNonNullSpeculator: NonNullSpeculator,
@@ -25,19 +23,19 @@ class SpringNonNullSpeculator(
2523
)
2624

2725
override fun speculativelyCannotProduceNullPointerException(
28-
field: SootField,
26+
field: FieldId,
2927
isMocked: Boolean,
3028
classUnderTest: ClassId
3129
): Boolean {
3230
if (delegateNonNullSpeculator.speculativelyCannotProduceNullPointerException(field, isMocked, classUnderTest))
3331
return true
3432

35-
if (field.fieldId !in classUnderTest.allDeclaredFieldIds)
33+
if (field !in classUnderTest.allDeclaredFieldIds)
3634
return false
3735

3836
val speculativelyCannotProduceNPE = isMocked
3937

40-
val speculation = Speculation(field.fieldId, isMocked, classUnderTest, speculativelyCannotProduceNPE)
38+
val speculation = Speculation(field, isMocked, classUnderTest, speculativelyCannotProduceNPE)
4139
if (loggedSpeculations.add(speculation))
4240
logger.info { "New speculation: $speculation" }
4341

0 commit comments

Comments
 (0)