Metric Results

[ summary ] [ packages ] [ cycles ] [ explanations ]

The following document contains the results of a JDepend metric analysis. The various metrics are defined at the bottom of this document.

Summary

[ summary ] [ packages ] [ cycles ] [ explanations ]

Package TC CC AC Ca Ce A I D V
org.wikimedia.search.extra 1 0 1 0 1 100.0% 100.0% 100.0% 1
org.wikimedia.search.extra.analysis.filters 9 7 2 0 10 22.0% 100.0% 22.0% 1
org.wikimedia.search.extra.fuzzylike 4 3 1 0 3 25.0% 100.0% 25.0% 1
org.wikimedia.search.extra.latency 7 5 2 1 8 29.0% 89.0% 17.0% 1
org.wikimedia.search.extra.levenshtein 3 2 1 0 9 33.0% 100.0% 33.0% 1
org.wikimedia.search.extra.regex 17 15 2 0 17 12.0% 100.0% 12.0% 1
org.wikimedia.search.extra.regex.expression 11 6 5 2 4 45.0% 67.0% 12.0% 1
org.wikimedia.search.extra.regex.ngram 7 6 1 1 8 14.0% 89.0% 3.0% 1
org.wikimedia.search.extra.router 11 7 4 0 9 36.0% 100.0% 36.0% 1
org.wikimedia.search.extra.simswitcher 1 1 0 0 5 0.0% 100.0% 0.0% 1
org.wikimedia.search.extra.superdetectnoop 20 15 5 0 2 25.0% 100.0% 25.0% 1
org.wikimedia.search.extra.termfreq 5 5 0 0 7 0.0% 100.0% 0.0% 1
org.wikimedia.search.extra.util 5 2 3 2 5 60.000004% 71.0% 31.0% 1

Packages

[ summary ] [ packages ] [ cycles ] [ explanations ]

org.wikimedia.search.extra

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 1 100.0% 100.0% 100.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.wikimedia.search.extra.package-info
None None java.lang

org.wikimedia.search.extra.analysis.filters

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 10 22.0% 100.0% 22.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.wikimedia.search.extra.analysis.filters.PreserveOriginalFilter$OriginalTermAttribute
org.wikimedia.search.extra.analysis.filters.package-info
org.wikimedia.search.extra.analysis.filters.PreserveOriginalFilter
org.wikimedia.search.extra.analysis.filters.PreserveOriginalFilter$OriginalTermAttributeImpl
org.wikimedia.search.extra.analysis.filters.PreserveOriginalFilter$Recorder
org.wikimedia.search.extra.analysis.filters.PreserveOriginalFilterFactory
org.wikimedia.search.extra.analysis.filters.PreserveOriginalFilterFactory$RecorderFactory
org.wikimedia.search.extra.analysis.filters.TermFreqTokenFilter
org.wikimedia.search.extra.analysis.filters.TermFreqTokenFilterFactory
None java.io
java.lang
org.apache.lucene.analysis
org.apache.lucene.analysis.tokenattributes
org.apache.lucene.analysis.util
org.apache.lucene.util
org.elasticsearch.common.settings
org.elasticsearch.env
org.elasticsearch.index
org.elasticsearch.index.analysis

org.wikimedia.search.extra.fuzzylike

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 3 25.0% 100.0% 25.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.wikimedia.search.extra.fuzzylike.package-info
org.wikimedia.search.extra.fuzzylike.FuzzyLikeThisQuery$FieldVals
org.wikimedia.search.extra.fuzzylike.FuzzyLikeThisQuery$ScoreTerm
org.wikimedia.search.extra.fuzzylike.FuzzyLikeThisQuery$ScoreTermQueue
None java.lang
org.apache.lucene.index
org.apache.lucene.util

org.wikimedia.search.extra.latency

Afferent Couplings Efferent Couplings Abstractness Instability Distance
1 8 29.0% 89.0% 17.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.wikimedia.search.extra.latency.SearchLatencyProbe
org.wikimedia.search.extra.latency.package-info
org.wikimedia.search.extra.latency.LatencyStatsAction$LatencyStatsNodeResponse
org.wikimedia.search.extra.latency.LatencyStatsAction$LatencyStatsNodesRequest
org.wikimedia.search.extra.latency.SearchLatencyListener$RollingHistogram
org.wikimedia.search.extra.latency.SearchLatencyProbe$LatencyStat
org.wikimedia.search.extra.latency.TransportLatencyStatsAction$LatencyStatsNodeRequest
org.wikimedia.search.extra.router
java.io
java.lang
java.util
org.HdrHistogram
org.elasticsearch.action.support.nodes
org.elasticsearch.cluster.node
org.elasticsearch.common.io.stream
org.elasticsearch.common.unit

org.wikimedia.search.extra.levenshtein

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 9 33.0% 100.0% 33.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.wikimedia.search.extra.levenshtein.package-info
org.wikimedia.search.extra.levenshtein.LevenshteinDistanceScore
org.wikimedia.search.extra.levenshtein.LevenshteinDistanceScore$1
None java.lang
java.util
org.apache.lucene.index
org.apache.lucene.search
org.apache.lucene.search.spell
org.elasticsearch
org.elasticsearch.common.lucene.search.function
org.elasticsearch.index.mapper
org.elasticsearch.search.lookup

org.wikimedia.search.extra.regex

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 17 12.0% 100.0% 12.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.wikimedia.search.extra.regex.SourceRegexQuery$Rechecker
org.wikimedia.search.extra.regex.package-info
org.wikimedia.search.extra.regex.AcceleratedSourceRegexQuery
org.wikimedia.search.extra.regex.AcceleratedSourceRegexQuery$1
org.wikimedia.search.extra.regex.ContainsCharacterRunAutomaton
org.wikimedia.search.extra.regex.ContainsCharacterRunAutomaton$GreekLowerCasing
org.wikimedia.search.extra.regex.ContainsCharacterRunAutomaton$LowerCasing
org.wikimedia.search.extra.regex.ExpressionToQueryTransformer
org.wikimedia.search.extra.regex.InvalidRegexException
org.wikimedia.search.extra.regex.SourceRegexQuery
org.wikimedia.search.extra.regex.SourceRegexQuery$NonBacktrackingOnTheFlyCaseConvertingRechecker
org.wikimedia.search.extra.regex.SourceRegexQueryBuilder$1
org.wikimedia.search.extra.regex.SourceRegexQueryBuilder$Settings
org.wikimedia.search.extra.regex.UnableToAccelerateRegexException
org.wikimedia.search.extra.regex.UnacceleratedSourceRegexQuery
org.wikimedia.search.extra.regex.UnacceleratedSourceRegexQuery$1
org.wikimedia.search.extra.regex.UnacceleratedSourceRegexQuery$RegexTwoPhaseIterator
None com.google.common.collect
java.io
java.lang
java.util
org.apache.lucene.analysis
org.apache.lucene.index
org.apache.lucene.search
org.apache.lucene.util.automaton
org.elasticsearch
org.elasticsearch.common
org.elasticsearch.common.io.stream
org.elasticsearch.common.lucene.search
org.elasticsearch.common.util
org.elasticsearch.common.xcontent
org.wikimedia.search.extra.regex.expression
org.wikimedia.search.extra.regex.ngram
org.wikimedia.search.extra.util

org.wikimedia.search.extra.regex.expression

Afferent Couplings Efferent Couplings Abstractness Instability Distance
2 4 45.0% 67.0% 12.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.wikimedia.search.extra.regex.expression.AbstractCompositeExpression
org.wikimedia.search.extra.regex.expression.Expression
org.wikimedia.search.extra.regex.expression.Expression$Transformer
org.wikimedia.search.extra.regex.expression.ExpressionSource
org.wikimedia.search.extra.regex.expression.package-info
org.wikimedia.search.extra.regex.expression.And
org.wikimedia.search.extra.regex.expression.ExpressionRewriter
org.wikimedia.search.extra.regex.expression.False
org.wikimedia.search.extra.regex.expression.Leaf
org.wikimedia.search.extra.regex.expression.Or
org.wikimedia.search.extra.regex.expression.True
org.wikimedia.search.extra.regex
org.wikimedia.search.extra.regex.ngram
com.google.common.base
com.google.common.collect
java.lang
java.util

org.wikimedia.search.extra.regex.ngram

Afferent Couplings Efferent Couplings Abstractness Instability Distance
1 8 14.0% 89.0% 3.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.wikimedia.search.extra.regex.ngram.package-info
org.wikimedia.search.extra.regex.ngram.AutomatonTooComplexException
org.wikimedia.search.extra.regex.ngram.NGramAutomaton
org.wikimedia.search.extra.regex.ngram.NGramAutomaton$1
org.wikimedia.search.extra.regex.ngram.NGramAutomaton$NGramState
org.wikimedia.search.extra.regex.ngram.NGramAutomaton$NGramTransition
org.wikimedia.search.extra.regex.ngram.NGramExtractor
org.wikimedia.search.extra.regex
com.google.common.collect
java.io
java.lang
java.util
org.apache.lucene.analysis
org.apache.lucene.analysis.tokenattributes
org.apache.lucene.util.automaton
org.wikimedia.search.extra.regex.expression

org.wikimedia.search.extra.router

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 9 36.0% 100.0% 36.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.wikimedia.search.extra.router.AbstractRouterQueryBuilder$AbstractConditionParserState
org.wikimedia.search.extra.router.AbstractRouterQueryBuilder$BiLongPredicate
org.wikimedia.search.extra.router.DegradedRouterQueryBuilder$LoadStatSupplier
org.wikimedia.search.extra.router.package-info
org.wikimedia.search.extra.router.AbstractRouterQueryBuilder$Condition
org.wikimedia.search.extra.router.AbstractRouterQueryBuilder$ConditionParserState
org.wikimedia.search.extra.router.DegradedRouterQueryBuilder$1
org.wikimedia.search.extra.router.DegradedRouterQueryBuilder$DegradedCondition
org.wikimedia.search.extra.router.DegradedRouterQueryBuilder$DegradedConditionParserState
org.wikimedia.search.extra.router.DegradedRouterQueryBuilder$DegradedConditionType$1
org.wikimedia.search.extra.router.SystemLoad
None java.io
java.lang
java.util
org.elasticsearch.common
org.elasticsearch.common.io.stream
org.elasticsearch.common.xcontent
org.elasticsearch.index.query
org.elasticsearch.monitor.os
org.wikimedia.search.extra.latency

org.wikimedia.search.extra.simswitcher

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 5 0.0% 100.0% 0.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None org.wikimedia.search.extra.simswitcher.SimSwitcherQuery
None java.io
java.lang
java.util
org.apache.lucene.search
org.apache.lucene.search.similarities

org.wikimedia.search.extra.superdetectnoop

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 2 25.0% 100.0% 25.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.wikimedia.search.extra.superdetectnoop.ChangeHandler
org.wikimedia.search.extra.superdetectnoop.ChangeHandler$NonnullChangeHandler
org.wikimedia.search.extra.superdetectnoop.ChangeHandler$Recognizer
org.wikimedia.search.extra.superdetectnoop.ChangeHandler$Result
org.wikimedia.search.extra.superdetectnoop.package-info
org.wikimedia.search.extra.superdetectnoop.ChangeHandler$Changed
org.wikimedia.search.extra.superdetectnoop.ChangeHandler$CloseEnough
org.wikimedia.search.extra.superdetectnoop.ChangeHandler$Equal
org.wikimedia.search.extra.superdetectnoop.ChangeHandler$Equal$Recognizer
org.wikimedia.search.extra.superdetectnoop.ChangeHandler$NoopDocument
org.wikimedia.search.extra.superdetectnoop.ChangeHandler$NullSafe
org.wikimedia.search.extra.superdetectnoop.ChangeHandler$TypeSafe
org.wikimedia.search.extra.superdetectnoop.SetHandler$Recognizer
org.wikimedia.search.extra.superdetectnoop.SuperDetectNoopScript$UpdateStatus
org.wikimedia.search.extra.superdetectnoop.VersionedDocumentHandler
org.wikimedia.search.extra.superdetectnoop.VersionedDocumentHandler$Recognizer
org.wikimedia.search.extra.superdetectnoop.WithinAbsoluteHandler
org.wikimedia.search.extra.superdetectnoop.WithinAbsoluteHandler$Recognizer
org.wikimedia.search.extra.superdetectnoop.WithinPercentageHandler
org.wikimedia.search.extra.superdetectnoop.WithinPercentageHandler$Recognizer
None java.lang
java.util

org.wikimedia.search.extra.termfreq

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 7 0.0% 100.0% 0.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None org.wikimedia.search.extra.termfreq.TermFreqFilterQuery
org.wikimedia.search.extra.termfreq.TermFreqFilterQuery$1
org.wikimedia.search.extra.termfreq.TermFreqFilterQuery$TermFreqFilterWeight
org.wikimedia.search.extra.termfreq.TermFreqFilterQuery$TermFreqFilterWeight$1
org.wikimedia.search.extra.termfreq.TermFreqFilterQuery$TermFreqFilterWeight$2
None java.io
java.lang
java.util
java.util.function
org.apache.lucene.index
org.apache.lucene.search
org.wikimedia.search.extra.util

org.wikimedia.search.extra.util

Afferent Couplings Efferent Couplings Abstractness Instability Distance
2 5 60.000004% 71.0% 31.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.wikimedia.search.extra.util.FieldValues
org.wikimedia.search.extra.util.FieldValues$Loader
org.wikimedia.search.extra.util.package-info
org.wikimedia.search.extra.util.Suppliers
org.wikimedia.search.extra.util.Suppliers$MutableSupplier
org.wikimedia.search.extra.regex
org.wikimedia.search.extra.termfreq
java.io
java.lang
java.util
java.util.function
org.apache.lucene.index

Cycles

[ summary ] [ packages ] [ cycles ] [ explanations ]

There are no cyclic dependencies.

Explanation

[ summary ] [ packages ] [ cycles ] [ explanations ]

The following explanations are for quick reference and are lifted directly from the original JDepend documentation.

Term Description
Number of Classes The number of concrete and abstract classes (and interfaces) in the package is an indicator of the extensibility of the package.
Afferent Couplings The number of other packages that depend upon classes within the package is an indicator of the package's responsibility.
Efferent Couplings The number of other packages that the classes in the package depend upon is an indicator of the package's independence.
Abstractness The ratio of the number of abstract classes (and interfaces) in the analyzed package to the total number of classes in the analyzed package. The range for this metric is 0 to 1, with A=0 indicating a completely concrete package and A=1 indicating a completely abstract package.
Instability The ratio of efferent coupling (Ce) to total coupling (Ce / (Ce + Ca)). This metric is an indicator of the package's resilience to change. The range for this metric is 0 to 1, with I=0 indicating a completely stable package and I=1 indicating a completely instable package.
Distance The perpendicular distance of a package from the idealized line A + I = 1. This metric is an indicator of the package's balance between abstractness and stability. A package squarely on the main sequence is optimally balanced with respect to its abstractness and stability. Ideal packages are either completely abstract and stable (x=0, y=1) or completely concrete and instable (x=1, y=0). The range for this metric is 0 to 1, with D=0 indicating a package that is coincident with the main sequence and D=1 indicating a package that is as far from the main sequence as possible.
Cycles Packages participating in a package dependency cycle are in a deadly embrace with respect to reusability and their release cycle. Package dependency cycles can be easily identified by reviewing the textual reports of dependency cycles. Once these dependency cycles have been identified with JDepend, they can be broken by employing various object-oriented techniques.