c

org.opalj.hermes.queries

MicroPatterns

class MicroPatterns extends FeatureQuery

Counts which kinds of micro patterns are actually available.

Linear Supertypes
FeatureQuery, AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. MicroPatterns
  2. FeatureQuery
  3. AnyRef
  4. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Instance Constructors

  1. new MicroPatterns()(implicit hermes: HermesConfig)

Type Members

  1. class AnalysisDomain[S] extends CorrelationalDomain with DefaultHandlingOfMethodResults with IgnoreSynchronization with ThrowAllPotentialExceptionsConfiguration with DefaultTypeLevelFloatValues with DefaultTypeLevelDoubleValues with TypeLevelFieldAccessInstructions with TypeLevelInvokeInstructions with TypeLevelDynamicLoads with DefaultReferenceValuesBinding with DefaultIntegerRangeValues with DefaultLongValues with ConcretePrimitiveValuesConversions with LongValuesShiftOperators with TheProject with TheMethod with RecordDefUse

Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  4. def apply[S](projectConfiguration: ProjectConfiguration, project: Project[S], rawClassFiles: Traversable[(ClassFile, S)]): TraversableOnce[Feature[S]]

    The function which analyzes the project and extracts the feature information.

    The function which analyzes the project and extracts the feature information.

    project

    A representation of the project. To speed up queries, intermediate information that may also be required by other queries can/should be stored in the project using the org.opalj.fpcf.PropertyStore or using a org.opalj.br.analyses.ProjectInformationKey.

    rawClassFiles

    A direct 1:1 representation of the class files. This makes it possible to write queries that need to get an understanding of an unprocessed class file; e.g. that need to analyze the constant pool in detail.

    Definition Classes
    MicroPatternsFeatureQuery
    Note

    Every query should regularly check that its thread is not interrupted using isInterrupted.

  5. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  6. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... ) @native() @IntrinsicCandidate()
  7. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  8. def equals(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  9. val featureIDs: List[String]

    The unique ids of the extracted features.

    The unique ids of the extracted features.

    Definition Classes
    MicroPatternsFeatureQuery
  10. final def getClass(): Class[_]
    Definition Classes
    AnyRef → Any
    Annotations
    @native() @IntrinsicCandidate()
  11. def hasExplicitSuperType(cl: ClassFile): Boolean
  12. def hashCode(): Int
    Definition Classes
    AnyRef → Any
    Annotations
    @native() @IntrinsicCandidate()
  13. val htmlDescription: Either[String, URL]

    Returns an HTML description of this feature query that is targeted at end users; by default it calls mdDescription to try to find a markdown document that describes this feature and then uses TxtMark to convert the document.

    Returns an HTML description of this feature query that is targeted at end users; by default it calls mdDescription to try to find a markdown document that describes this feature and then uses TxtMark to convert the document. If a document is returned the web engine's user style sheet is set to org.opalj.hermes.FeatureQueries.MDCSS; in case of an URL no stylesheet is set.

    returns

    An HTML document/a link to an HTML document that describes this query.

    Definition Classes
    FeatureQuery
  14. val id: String

    A short descriptive name; by default the simple name of this class.

    A short descriptive name; by default the simple name of this class.

    Definition Classes
    FeatureQuery
  15. def isAugmentedType(cl: ClassFile): Boolean
  16. def isBox(cl: ClassFile, fa: FieldAccessInformation): Boolean
  17. def isCanopy(cl: ClassFile, fa: FieldAccessInformation): Boolean
  18. def isCobolLike(cl: ClassFile): Boolean
  19. def isCommonState(cl: ClassFile): Boolean
  20. def isCompoundBox(cl: ClassFile, fa: FieldAccessInformation): Boolean
  21. def isDataManager[S](cl: ClassFile)(implicit theProject: Project[S]): Boolean
  22. def isDesignator(cl: ClassFile)(implicit project: SomeProject): Boolean

    [From the paper] Thus, a Designator micro pattern is an interface which does not declare any methods, does not define any static fields or methods, and does not inherit such members from any of its superinterfaces.

    [From the paper] Thus, a Designator micro pattern is an interface which does not declare any methods, does not define any static fields or methods, and does not inherit such members from any of its superinterfaces.

    A class can also be Designator if its definition, as well as the definitions of all of its ancestors (other than Object), are empty.

    A class can also be Designator if its definition, as well as the definitions of all of its ancestors (other than Object), are empty.

  23. def isExtender[S](cl: ClassFile)(implicit theProject: Project[S]): Boolean
  24. def isFunctionObject(cl: ClassFile): Boolean
  25. def isFunctionPointer(cl: ClassFile): Boolean
  26. def isGetter[S](method: Method)(implicit theProject: Project[S]): Boolean
  27. def isImmutable(cl: ClassFile, fa: FieldAccessInformation): Boolean
  28. def isImplementor[S](cl: ClassFile, theProject: Project[S]): Boolean
  29. def isInitMethod(method: Method): Boolean
  30. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  31. final def isInterrupted(): Boolean

    Queries should regularly check if they are interrupted using this method.

    Queries should regularly check if they are interrupted using this method.

    Definition Classes
    FeatureQuery
  32. def isJoiner(cl: ClassFile): Boolean

    [From the paper:] An empty interface which extends more than one interface is called a Joiner, since in effect, it joins together the sets of members of its parents.

    [From the paper:] An empty interface which extends more than one interface is called a Joiner, since in effect, it joins together the sets of members of its parents.

    An empty class which implements one or more interfaces is also a Joiner. Here, empty means that the we can have constructors and (optionally) a serialVersionUID field.

  33. def isObjectMethod(method: Method): Boolean
  34. def isOutline(cl: ClassFile): Boolean
  35. def isOverrider[S](cl: ClassFile, theProject: Project[S]): Boolean
  36. def isPool(cl: ClassFile): Boolean

    [From the paper:] The most degenerate classes are those which have neither state nor behavior.

    [From the paper:] The most degenerate classes are those which have neither state nor behavior. Such a class is distinguished by the requirement that it declares no instance fields. Moreover, all of its declared static fields must be final. Another requirement is that the class has no methods (other than those inherited from Object, or automatically generated constructors).

  37. def isPseudoClass(cl: ClassFile): Boolean
  38. def isPureType(cl: ClassFile): Boolean
  39. def isRecord(cl: ClassFile): Boolean
  40. def isRestrictedCreation(cl: ClassFile): Boolean
  41. def isSampler(cl: ClassFile): Boolean
  42. def isSetter[S](method: Method)(implicit theProject: Project[S]): Boolean
  43. def isSink(cl: ClassFile): Boolean
  44. def isStateMachine(cl: ClassFile): Boolean
  45. def isStateless(cl: ClassFile): Boolean
  46. def isTaxonomy(cl: ClassFile): Boolean

    [From the paper:] An empty interface which extends a single interface is called a Taxonomy, since it is included, in the subtyping sense, in its parent, but otherwise identical to it.

    [From the paper:] An empty interface which extends a single interface is called a Taxonomy, since it is included, in the subtyping sense, in its parent, but otherwise identical to it.

    There are also classes which are Taxonomy. Such a class must similarly be empty, i.e., add no fields nor methods to its parent. Since constructors are not inherited, an empty class may contain constructors. A Taxonomy class may not implement any interfaces.

  47. def isTrait(cl: ClassFile): Boolean
  48. def mdDescription: String

    Returns an explanation of the feature (group) using Markdown as its formatting language.

    Returns an explanation of the feature (group) using Markdown as its formatting language.

    By default the name of the class is used to lookup the resource "className.markdown" which is expected to be found along the extractor.

    Attributes
    protected
    Definition Classes
    FeatureQuery
  49. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  50. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @IntrinsicCandidate()
  51. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @IntrinsicCandidate()
  52. final def synchronized[T0](arg0: ⇒ T0): T0
    Definition Classes
    AnyRef
  53. def toString(): String
    Definition Classes
    AnyRef → Any
  54. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  55. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... ) @native()
  56. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )

Deprecated Value Members

  1. def finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] ) @Deprecated
    Deprecated

Inherited from FeatureQuery

Inherited from AnyRef

Inherited from Any

Ungrouped