Skip to content

Commit 784aba2

Browse files
authored
Merge pull request #309 from opalj/fix/string-analysis-dependencies
Add missing dependencies for String Analysis
2 parents a0a524c + 5c0ef43 commit 784aba2

File tree

11 files changed

+33
-18
lines changed

11 files changed

+33
-18
lines changed

OPAL/tac/src/main/resources/reference.conf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ org.opalj {
118118
},
119119
"MethodStringFlowAnalysis" {
120120
description = "Computes results of data flow analysis for string variables in the context of a method.",
121-
lazyFactory = "org.opalj.tac.fpcf.analyses.string.flowanalysis.MethodStringFlowAnalysis"
121+
lazyFactory = "org.opalj.tac.fpcf.analyses.string.flowanalysis.LazyMethodStringFlowAnalysis"
122122
},
123123
"L0StringFlowAnalysis" {
124124
description = "Computes string flow functions on level L0 for individual statements in the context of a method to be used in data flow analysis.",

OPAL/tac/src/main/scala/org/opalj/tac/fpcf/analyses/string/StringAnalysisScheduler.scala

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,12 @@ import org.opalj.br.fpcf.ContextProviderKey
1111
import org.opalj.br.fpcf.FPCFAnalysis
1212
import org.opalj.br.fpcf.FPCFAnalysisScheduler
1313
import org.opalj.br.fpcf.FPCFLazyAnalysisScheduler
14+
import org.opalj.br.fpcf.properties.cg.Callers
1415
import org.opalj.br.fpcf.properties.string.StringConstancyProperty
1516
import org.opalj.fpcf.Entity
1617
import org.opalj.fpcf.PropertyBounds
1718
import org.opalj.fpcf.PropertyStore
19+
import org.opalj.tac.fpcf.properties.TACAI
1820
import org.opalj.tac.fpcf.properties.string.MethodStringFlow
1921

2022
/**
@@ -27,7 +29,8 @@ sealed trait StringAnalysisScheduler extends FPCFAnalysisScheduler {
2729

2830
final def derivedProperty: PropertyBounds = PropertyBounds.lub(StringConstancyProperty)
2931

30-
override def uses: Set[PropertyBounds] = Set(PropertyBounds.ub(MethodStringFlow))
32+
override def uses: Set[PropertyBounds] =
33+
PropertyBounds.ubs(MethodStringFlow, Callers, TACAI, StringConstancyProperty)
3134

3235
override final type InitializationData =
3336
(ContextFreeStringAnalysis, ContextStringAnalysis, MethodParameterContextStringAnalysis)

OPAL/tac/src/main/scala/org/opalj/tac/fpcf/analyses/string/interpretation/InterpretationHandler.scala

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import org.opalj.br.fpcf.FPCFAnalysis
1111
import org.opalj.fpcf.FinalEP
1212
import org.opalj.fpcf.InterimResult
1313
import org.opalj.fpcf.ProperPropertyComputationResult
14+
import org.opalj.fpcf.PropertyBounds
1415
import org.opalj.fpcf.SomeEPS
1516
import org.opalj.tac.fpcf.properties.TACAI
1617
import org.opalj.tac.fpcf.properties.string.StringFlowFunctionProperty
@@ -76,5 +77,7 @@ abstract class InterpretationHandler extends FPCFAnalysis with StringAnalysisCon
7677

7778
object InterpretationHandler {
7879

80+
def uses: Set[PropertyBounds] = PropertyBounds.ubs(TACAI)
81+
7982
def getEntity(implicit state: InterpretationState): MethodPC = MethodPC(state.pc, state.dm)
8083
}

OPAL/tac/src/main/scala/org/opalj/tac/fpcf/analyses/string/l0/L0StringAnalysis.scala

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ package l0
88

99
import org.opalj.br.analyses.SomeProject
1010
import org.opalj.br.fpcf.FPCFLazyAnalysisScheduler
11+
import org.opalj.fpcf.PropertyBounds
1112
import org.opalj.fpcf.PropertyStore
1213
import org.opalj.tac.fpcf.analyses.string.flowanalysis.LazyMethodStringFlowAnalysis
1314
import org.opalj.tac.fpcf.analyses.string.interpretation.LazyStringFlowAnalysis
@@ -27,5 +28,7 @@ object LazyL0StringFlowAnalysis extends LazyStringFlowAnalysis {
2728
LazyL0StringFlowAnalysis
2829
)
2930

31+
override final def uses: Set[PropertyBounds] = super.uses ++ L0InterpretationHandler.uses
32+
3033
override def init(p: SomeProject, ps: PropertyStore): InitializationData = L0InterpretationHandler(p)
3134
}

OPAL/tac/src/main/scala/org/opalj/tac/fpcf/analyses/string/l0/interpretation/L0InterpretationHandler.scala

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ package interpretation
99

1010
import org.opalj.br.analyses.SomeProject
1111
import org.opalj.fpcf.ProperPropertyComputationResult
12+
import org.opalj.fpcf.PropertyBounds
1213
import org.opalj.tac.fpcf.analyses.string.interpretation.InterpretationHandler
1314
import org.opalj.tac.fpcf.analyses.string.interpretation.InterpretationState
1415
import org.opalj.tac.fpcf.properties.string.StringFlowFunctionProperty
@@ -50,5 +51,7 @@ class L0InterpretationHandler(implicit override val project: SomeProject) extend
5051

5152
object L0InterpretationHandler {
5253

54+
def uses: Set[PropertyBounds] = InterpretationHandler.uses
55+
5356
def apply(project: SomeProject): L0InterpretationHandler = new L0InterpretationHandler()(project)
5457
}

OPAL/tac/src/main/scala/org/opalj/tac/fpcf/analyses/string/l1/L1StringAnalysis.scala

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ package l1
88

99
import org.opalj.br.analyses.SomeProject
1010
import org.opalj.br.fpcf.FPCFLazyAnalysisScheduler
11+
import org.opalj.fpcf.PropertyBounds
1112
import org.opalj.fpcf.PropertyStore
1213
import org.opalj.tac.fpcf.analyses.string.flowanalysis.LazyMethodStringFlowAnalysis
1314
import org.opalj.tac.fpcf.analyses.string.interpretation.LazyStringFlowAnalysis
@@ -26,5 +27,7 @@ object LazyL1StringFlowAnalysis extends LazyStringFlowAnalysis {
2627
LazyL1StringFlowAnalysis
2728
)
2829

30+
override final def uses: Set[PropertyBounds] = super.uses ++ L1InterpretationHandler.uses
31+
2932
override def init(p: SomeProject, ps: PropertyStore): InitializationData = L1InterpretationHandler(p)
3033
}

OPAL/tac/src/main/scala/org/opalj/tac/fpcf/analyses/string/l1/interpretation/L1InterpretationHandler.scala

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,10 @@ package l1
88
package interpretation
99

1010
import org.opalj.br.analyses.SomeProject
11+
import org.opalj.br.fpcf.properties.SystemProperties
12+
import org.opalj.br.fpcf.properties.string.StringConstancyProperty
1113
import org.opalj.fpcf.ProperPropertyComputationResult
14+
import org.opalj.fpcf.PropertyBounds
1215
import org.opalj.tac.fpcf.analyses.string.interpretation.InterpretationState
1316
import org.opalj.tac.fpcf.analyses.string.l0.interpretation.L0InterpretationHandler
1417
import org.opalj.tac.fpcf.properties.string.StringFlowFunctionProperty
@@ -53,5 +56,8 @@ class L1InterpretationHandler(implicit override val project: SomeProject) extend
5356

5457
object L1InterpretationHandler {
5558

59+
def uses: Set[PropertyBounds] = L0InterpretationHandler.uses ++
60+
PropertyBounds.ubs(StringConstancyProperty, SystemProperties)
61+
5662
def apply(project: SomeProject): L1InterpretationHandler = new L1InterpretationHandler()(project)
5763
}

OPAL/tac/src/main/scala/org/opalj/tac/fpcf/analyses/string/l2/L2StringAnalysis.scala

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,6 @@ package l2
99
import org.opalj.br.analyses.ProjectInformationKeys
1010
import org.opalj.br.analyses.SomeProject
1111
import org.opalj.br.fpcf.FPCFLazyAnalysisScheduler
12-
import org.opalj.br.fpcf.properties.SystemProperties
13-
import org.opalj.br.fpcf.properties.cg.Callees
14-
import org.opalj.br.fpcf.properties.fieldaccess.FieldWriteAccessInformation
1512
import org.opalj.fpcf.PropertyBounds
1613
import org.opalj.fpcf.PropertyStore
1714
import org.opalj.tac.fpcf.analyses.string.flowanalysis.LazyMethodStringFlowAnalysis
@@ -31,11 +28,7 @@ object LazyL2StringFlowAnalysis extends LazyStringFlowAnalysis {
3128
LazyL2StringFlowAnalysis
3229
)
3330

34-
override final def uses: Set[PropertyBounds] = super.uses ++ PropertyBounds.ubs(
35-
Callees,
36-
FieldWriteAccessInformation,
37-
SystemProperties
38-
)
31+
override final def uses: Set[PropertyBounds] = super.uses ++ L2InterpretationHandler.uses
3932

4033
override final def init(p: SomeProject, ps: PropertyStore): InitializationData = L2InterpretationHandler(p)
4134

OPAL/tac/src/main/scala/org/opalj/tac/fpcf/analyses/string/l2/interpretation/L2InterpretationHandler.scala

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,9 @@ import org.opalj.br.analyses.ProjectInformationKeys
1111
import org.opalj.br.analyses.SomeProject
1212
import org.opalj.br.fpcf.ContextProviderKey
1313
import org.opalj.br.fpcf.analyses.ContextProvider
14+
import org.opalj.br.fpcf.properties.cg.Callees
1415
import org.opalj.fpcf.ProperPropertyComputationResult
16+
import org.opalj.fpcf.PropertyBounds
1517
import org.opalj.tac.fpcf.analyses.string.interpretation.InterpretationState
1618
import org.opalj.tac.fpcf.analyses.string.l1.interpretation.L1InterpretationHandler
1719
import org.opalj.tac.fpcf.properties.string.StringFlowFunctionProperty
@@ -53,5 +55,7 @@ object L2InterpretationHandler {
5355

5456
def requiredProjectInformation: ProjectInformationKeys = Seq(ContextProviderKey)
5557

58+
def uses: Set[PropertyBounds] = L1InterpretationHandler.uses ++ PropertyBounds.ubs(Callees)
59+
5660
def apply(project: SomeProject): L2InterpretationHandler = new L2InterpretationHandler()(project)
5761
}

OPAL/tac/src/main/scala/org/opalj/tac/fpcf/analyses/string/l3/L3StringAnalysis.scala

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,6 @@ package l3
99
import org.opalj.br.analyses.ProjectInformationKeys
1010
import org.opalj.br.analyses.SomeProject
1111
import org.opalj.br.fpcf.FPCFLazyAnalysisScheduler
12-
import org.opalj.br.fpcf.properties.SystemProperties
13-
import org.opalj.br.fpcf.properties.cg.Callees
14-
import org.opalj.br.fpcf.properties.fieldaccess.FieldWriteAccessInformation
1512
import org.opalj.fpcf.PropertyBounds
1613
import org.opalj.fpcf.PropertyStore
1714
import org.opalj.tac.fpcf.analyses.string.flowanalysis.LazyMethodStringFlowAnalysis
@@ -31,11 +28,7 @@ object LazyL3StringFlowAnalysis extends LazyStringFlowAnalysis {
3128
LazyL3StringFlowAnalysis
3229
)
3330

34-
override final def uses: Set[PropertyBounds] = super.uses ++ PropertyBounds.ubs(
35-
Callees,
36-
FieldWriteAccessInformation,
37-
SystemProperties
38-
)
31+
override final def uses: Set[PropertyBounds] = super.uses ++ L3InterpretationHandler.uses
3932

4033
override final def init(p: SomeProject, ps: PropertyStore): InitializationData = L3InterpretationHandler(p)
4134

0 commit comments

Comments
 (0)