Skip to content

Commit

Permalink
Merge pull request #249 from 19Vik19/fix/missing-uses
Browse files Browse the repository at this point in the history
Fixed some missing uses
  • Loading branch information
errt authored Jan 21, 2025
2 parents e6915a9 + 0298f1e commit 01e6b87
Show file tree
Hide file tree
Showing 21 changed files with 78 additions and 31 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -137,8 +137,11 @@ object BackwardClassForNameTaintAnalysisScheduler

override def property: IFDSPropertyMetaInformation[JavaStatement, TaintFact] = Taint

override def uses: Set[PropertyBounds] =
Set(PropertyBounds.finalP(TACAI), PropertyBounds.finalP(Callers))
override def uses: Set[PropertyBounds] = PropertyBounds.finalPs(TACAI, Callers)

override def uses(p: SomeProject, ps: PropertyStore): Set[PropertyBounds] = {
p.get(TypeIteratorKey).usedPropertyKinds
}

override def requiredProjectInformation: ProjectInformationKeys =
Seq(DeclaredMethodsKey, TypeIteratorKey, PropertyStoreKey, RTACallGraphKey)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,11 @@ object ForwardClassForNameTaintAnalysisScheduler extends IFDSAnalysisScheduler[T
override def requiredProjectInformation: ProjectInformationKeys =
Seq(DeclaredMethodsKey, TypeIteratorKey, PropertyStoreKey, RTACallGraphKey)

override def uses: Set[PropertyBounds] = Set(PropertyBounds.finalP(TACAI), PropertyBounds.finalP(Callers))
override def uses: Set[PropertyBounds] = PropertyBounds.finalPs(TACAI, Callers)

override def uses(p: SomeProject, ps: PropertyStore): Set[PropertyBounds] = {
p.get(TypeIteratorKey).usedPropertyKinds
}
}

class ForwardClassForNameAnalysisRunnerIFDS extends IFDSEvaluationRunner {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,10 @@ object BackwardTaintAnalysisFixtureScheduler extends IFDSAnalysisScheduler[Taint

override def property: IFDSPropertyMetaInformation[JavaStatement, TaintFact] = Taint

override val uses: Set[PropertyBounds] = Set(PropertyBounds.ub(Taint))

override def requiredProjectInformation: ProjectInformationKeys = Seq(TypeIteratorKey, DeclaredMethodsKey, PropertyStoreKey)

override val uses: Set[PropertyBounds] = PropertyBounds.ubs(Taint)

override def uses(p: SomeProject, ps: PropertyStore): Set[PropertyBounds] =
p.get(TypeIteratorKey).usedPropertyKinds
}
Original file line number Diff line number Diff line change
Expand Up @@ -89,8 +89,15 @@ class ForwardTaintProblemFixture(p: SomeProject) extends AbstractJavaForwardTain
}

object ForwardTaintAnalysisFixtureScheduler extends IFDSAnalysisScheduler[TaintFact, Method, JavaStatement] {

override def init(p: SomeProject, ps: PropertyStore) = new ForwardTaintAnalysisFixture()(p)

override def property: IFDSPropertyMetaInformation[JavaStatement, TaintFact] = Taint
override val uses: Set[PropertyBounds] = Set(PropertyBounds.ub(Taint))

override def requiredProjectInformation: ProjectInformationKeys = Seq(TypeIteratorKey, DeclaredMethodsKey, PropertyStoreKey)

override val uses: Set[PropertyBounds] = PropertyBounds.ubs(Taint)

override def uses(p: SomeProject, ps: PropertyStore): Set[PropertyBounds] =
p.get(TypeIteratorKey).usedPropertyKinds
}
Original file line number Diff line number Diff line change
Expand Up @@ -339,8 +339,12 @@ trait FieldImmutabilityAnalysisScheduler extends FPCFAnalysisScheduler {
PropertyBounds.lub(FieldImmutability)
)

override def uses(p: SomeProject, ps: PropertyStore): Set[PropertyBounds] =
p.get(TypeIteratorKey).usedPropertyKinds

override def requiredProjectInformation: ProjectInformationKeys =
Seq(TypeIteratorKey, DeclaredFieldsKey, TypeExtensibilityKey)

final def derivedProperty: PropertyBounds = PropertyBounds.lub(FieldImmutability)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -138,10 +138,10 @@ object SystemPropertiesAnalysisScheduler extends BasicFPCFTriggeredAnalysisSched
override def requiredProjectInformation: ProjectInformationKeys =
Seq(DeclaredMethodsKey, TypeIteratorKey)

override def uses: Set[PropertyBounds] = Set(
PropertyBounds.ub(Callers),
PropertyBounds.ub(TACAI)
)
override def uses: Set[PropertyBounds] = PropertyBounds.ubs(TACAI, Callers)

override def uses(p: SomeProject, ps: PropertyStore): Set[PropertyBounds] =
p.get(TypeIteratorKey).usedPropertyKinds

override def triggeredBy: PropertyKey[Callers] = Callers.key

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -305,7 +305,10 @@ object DoPrivilegedAnalysisScheduler extends BasicFPCFEagerAnalysisScheduler {
override def requiredProjectInformation: ProjectInformationKeys =
Seq(DeclaredMethodsKey, VirtualFormalParametersKey, DefinitionSitesKey, TypeIteratorKey)

override def uses: Set[PropertyBounds] = Set.empty
override def uses: Set[PropertyBounds] = PropertyBounds.ubs(Callers, Callees)

override def uses(p: SomeProject, ps: PropertyStore): Set[PropertyBounds] =
p.get(TypeIteratorKey).usedPropertyKinds

override def derivesCollaboratively: Set[PropertyBounds] = PropertyBounds.ubs(Callers, Callees)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -162,6 +162,9 @@ object TamiFlexCallGraphAnalysisScheduler extends BasicFPCFEagerAnalysisSchedule
TACAI
)

override def uses(p: SomeProject, ps: PropertyStore): Set[PropertyBounds] =
p.get(TypeIteratorKey).usedPropertyKinds

override def derivesCollaboratively: Set[PropertyBounds] = PropertyBounds.ubs(
Callers,
Callees
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,10 @@ class ArrayInstantiationsAnalysisScheduler(
}

override def uses: Set[PropertyBounds] = PropertyBounds.ubs(TACAI)

override def uses(p: SomeProject, ps: PropertyStore): Set[PropertyBounds] =
p.get(TypeIteratorKey).usedPropertyKinds

override def derivesEagerly: Set[PropertyBounds] = Set.empty
override def derivesCollaboratively: Set[PropertyBounds] = PropertyBounds.ubs(InstantiatedTypes)
override def triggeredBy: PropertyKind = Callers.key
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -599,6 +599,9 @@ final class TypePropagationAnalysisScheduler(
MethodFieldWriteAccessInformation
)

override def uses(p: SomeProject, ps: PropertyStore): Set[PropertyBounds] =
p.get(TypeIteratorKey).usedPropertyKinds

override def derivesEagerly: Set[PropertyBounds] = Set.empty

override def derivesCollaboratively: Set[PropertyBounds] = PropertyBounds.ubs(InstantiatedTypes)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ import org.opalj.br.analyses.SomeProject
import org.opalj.br.fpcf.BasicFPCFEagerAnalysisScheduler
import org.opalj.br.fpcf.FPCFAnalysis
import org.opalj.br.fpcf.properties.Context
import org.opalj.br.fpcf.properties.cg.Callers
import org.opalj.br.fpcf.properties.cg.ForNameClasses
import org.opalj.br.fpcf.properties.fieldaccess.AccessParameter
import org.opalj.br.fpcf.properties.fieldaccess.AccessReceiver
Expand Down Expand Up @@ -1198,6 +1199,8 @@ object ReflectionRelatedFieldAccessesAnalysisScheduler extends BasicFPCFEagerAna

override def uses: Set[PropertyBounds] = PropertyBounds.ubs(
ForNameClasses,
Callers,
TACAI,
FieldReadAccessInformation,
FieldWriteAccessInformation,
MethodFieldReadAccessInformation,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -799,14 +799,14 @@ trait AbstractPointsToAnalysis extends PointsToAnalysisBase with ReachableMethod
}
}

trait AbstractPointsToAnalysisScheduler extends FPCFTriggeredAnalysisScheduler {
trait AbstractPointsToAnalysisScheduler extends FPCFTriggeredAnalysisScheduler with PointsToBasedAnalysisScheduler {
def propertyKind: PropertyMetaInformation
def createAnalysis: SomeProject => AbstractPointsToAnalysis

override type InitializationData = Null

override def requiredProjectInformation: ProjectInformationKeys =
AbstractPointsToBasedAnalysis.requiredProjectInformation :+ DeclaredMethodsKey
super.requiredProjectInformation :+ DeclaredMethodsKey

override def uses: Set[PropertyBounds] = PropertyBounds.ubs(
Callers,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,17 @@ import org.opalj.br.ReferenceType
import org.opalj.br.analyses.DeclaredFields
import org.opalj.br.analyses.DeclaredFieldsKey
import org.opalj.br.analyses.ProjectInformationKeys
import org.opalj.br.analyses.SomeProject
import org.opalj.br.analyses.VirtualFormalParameters
import org.opalj.br.analyses.VirtualFormalParametersKey
import org.opalj.br.fpcf.FPCFAnalysis
import org.opalj.br.fpcf.FPCFAnalysisScheduler
import org.opalj.br.fpcf.properties.pointsto.PointsToSetLike
import org.opalj.fpcf.Entity
import org.opalj.fpcf.EOptionP
import org.opalj.fpcf.PropertyBounds
import org.opalj.fpcf.PropertyKey
import org.opalj.fpcf.PropertyStore
import org.opalj.tac.cg.TypeIteratorKey
import org.opalj.tac.common.DefinitionSites
import org.opalj.tac.common.DefinitionSitesKey
Expand Down Expand Up @@ -66,7 +70,10 @@ trait AbstractPointsToBasedAnalysis extends FPCFAnalysis with ContextualAnalysis
}
}

object AbstractPointsToBasedAnalysis {
val requiredProjectInformation: ProjectInformationKeys =
trait PointsToBasedAnalysisScheduler extends FPCFAnalysisScheduler {
def requiredProjectInformation: ProjectInformationKeys =
Seq(TypeIteratorKey, DefinitionSitesKey, VirtualFormalParametersKey, DeclaredFieldsKey)

override def uses(p: SomeProject, ps: PropertyStore): Set[PropertyBounds] =
super.uses(p, ps) ++ p.get(TypeIteratorKey).usedPropertyKinds
}
Original file line number Diff line number Diff line change
Expand Up @@ -85,15 +85,15 @@ abstract class ArraycopyPointsToAnalysis private[pointsto] (
}
}

trait ArraycopyPointsToAnalysisScheduler extends BasicFPCFEagerAnalysisScheduler {
trait ArraycopyPointsToAnalysisScheduler extends BasicFPCFEagerAnalysisScheduler with PointsToBasedAnalysisScheduler {

val propertyKind: PropertyMetaInformation
val createAnalysis: SomeProject => ArraycopyPointsToAnalysis

override type InitializationData = Null

override def requiredProjectInformation: ProjectInformationKeys =
AbstractPointsToBasedAnalysis.requiredProjectInformation :+ DeclaredMethodsKey
super.requiredProjectInformation :+ DeclaredMethodsKey

override def uses: Set[PropertyBounds] = PropertyBounds.ubs(Callers, propertyKind)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -303,14 +303,15 @@ abstract class ConfiguredMethodsPointsToAnalysis private[analyses] (
}
}

trait ConfiguredMethodsPointsToAnalysisScheduler extends FPCFTriggeredAnalysisScheduler {
trait ConfiguredMethodsPointsToAnalysisScheduler extends FPCFTriggeredAnalysisScheduler
with PointsToBasedAnalysisScheduler {
def propertyKind: PropertyMetaInformation
def createAnalysis: SomeProject => ConfiguredMethodsPointsToAnalysis

override type InitializationData = Null

override def requiredProjectInformation: ProjectInformationKeys =
AbstractPointsToBasedAnalysis.requiredProjectInformation :+ DeclaredMethodsKey
super.requiredProjectInformation :+ DeclaredMethodsKey

override def uses: Set[PropertyBounds] = PropertyBounds.ubs(
Callers,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -232,13 +232,13 @@ abstract class LibraryPointsToAnalysis(final val project: SomeProject)

}

trait LibraryPointsToAnalysisScheduler extends FPCFEagerAnalysisScheduler {
trait LibraryPointsToAnalysisScheduler extends FPCFEagerAnalysisScheduler with PointsToBasedAnalysisScheduler {

val propertyKind: PropertyMetaInformation
val createAnalysis: SomeProject => LibraryPointsToAnalysis

override def requiredProjectInformation: ProjectInformationKeys =
AbstractPointsToBasedAnalysis.requiredProjectInformation :++
super.requiredProjectInformation :++
Seq(DeclaredMethodsKey, ClosedPackagesKey, InitialEntryPointsKey, InitialInstantiatedTypesKey)

override type InitializationData = LibraryPointsToAnalysis
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -193,12 +193,12 @@ abstract class NewInstanceMethodAnalysis(
}
}

trait NewInstanceAnalysisScheduler extends BasicFPCFEagerAnalysisScheduler {
trait NewInstanceAnalysisScheduler extends BasicFPCFEagerAnalysisScheduler with PointsToBasedAnalysisScheduler {
def propertyKind: PropertyMetaInformation
def createAnalysis: SomeProject => NewInstanceAnalysis

override def requiredProjectInformation: ProjectInformationKeys =
AbstractPointsToBasedAnalysis.requiredProjectInformation :+ DeclaredMethodsKey
super.requiredProjectInformation :+ DeclaredMethodsKey

override def uses: Set[PropertyBounds] = PropertyBounds.ubs(Callees, propertyKind)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -284,9 +284,10 @@ class ReflectionMethodAllocationsAnalysis(
}
}

object ReflectionAllocationsAnalysisScheduler extends BasicFPCFEagerAnalysisScheduler {
object ReflectionAllocationsAnalysisScheduler extends BasicFPCFEagerAnalysisScheduler
with PointsToBasedAnalysisScheduler {
override def requiredProjectInformation: ProjectInformationKeys =
AbstractPointsToBasedAnalysis.requiredProjectInformation :+ DeclaredMethodsKey
super.requiredProjectInformation :+ DeclaredMethodsKey

override def uses: Set[PropertyBounds] = PropertyBounds.ubs(Callers, AllocationSitePointsToSet)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -143,12 +143,13 @@ abstract class SerializationAllocationsAnalysis(
}
}

trait SerializationAllocationsAnalysisScheduler extends BasicFPCFEagerAnalysisScheduler {
trait SerializationAllocationsAnalysisScheduler extends BasicFPCFEagerAnalysisScheduler
with PointsToBasedAnalysisScheduler {
def propertyKind: PropertyMetaInformation
def createAnalysis: SomeProject => SerializationAllocationsAnalysis

override def requiredProjectInformation: ProjectInformationKeys =
AbstractPointsToBasedAnalysis.requiredProjectInformation :+ DeclaredMethodsKey
super.requiredProjectInformation :+ DeclaredMethodsKey

override def uses: Set[PropertyBounds] = PropertyBounds.ubs(Callers, propertyKind)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -204,13 +204,13 @@ abstract class TamiFlexPointsToAnalysis private[analyses] (
}
}

trait TamiFlexPointsToAnalysisScheduler extends BasicFPCFEagerAnalysisScheduler {
trait TamiFlexPointsToAnalysisScheduler extends BasicFPCFEagerAnalysisScheduler with PointsToBasedAnalysisScheduler {

val propertyKind: PropertyMetaInformation
val createAnalysis: SomeProject => TamiFlexPointsToAnalysis

override def requiredProjectInformation: ProjectInformationKeys =
AbstractPointsToBasedAnalysis.requiredProjectInformation :++ Seq(DeclaredMethodsKey, TamiFlexKey)
super.requiredProjectInformation :++ Seq(DeclaredMethodsKey, TamiFlexKey)

override def uses: Set[PropertyBounds] = PropertyBounds.ubs(Callers, propertyKind)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -267,15 +267,15 @@ abstract class UnsafePutPointsToAnalysis(
}
}

trait UnsafePointsToAnalysisScheduler extends BasicFPCFEagerAnalysisScheduler {
trait UnsafePointsToAnalysisScheduler extends BasicFPCFEagerAnalysisScheduler with PointsToBasedAnalysisScheduler {

val propertyKind: PropertyMetaInformation
val createAnalysis: SomeProject => UnsafePointsToAnalysis

override type InitializationData = Null

override def requiredProjectInformation: ProjectInformationKeys =
AbstractPointsToBasedAnalysis.requiredProjectInformation :+ DeclaredMethodsKey
super.requiredProjectInformation :+ DeclaredMethodsKey

override def uses: Set[PropertyBounds] = PropertyBounds.ubs(Callers, propertyKind)

Expand Down

0 comments on commit 01e6b87

Please sign in to comment.