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.skife.jdbi.rewriter.colon 1 1 0 1 2 0.0% 67.0% 33.0% 1
org.skife.jdbi.rewriter.printf 1 1 0 0 2 0.0% 100.0% 0.0% 1
org.skife.jdbi.v2 98 83 15 9 18 15.000001% 67.0% 18.0% 1
org.skife.jdbi.v2.exceptions 10 8 2 3 2 20.0% 40.0% 40.0% 1
org.skife.jdbi.v2.logging 6 5 1 1 5 17.0% 83.0% 0.0% 1
org.skife.jdbi.v2.spring 4 4 0 0 9 0.0% 100.0% 0.0% 1
org.skife.jdbi.v2.tweak 14 1 13 7 3 93.0% 30.000002% 23.0% 1
org.skife.jdbi.v2.tweak.transactions 3 3 0 1 7 0.0% 88.0% 12.0% 1
org.skife.jdbi.v2.unstable.eod 13 6 7 0 7 54.000004% 100.0% 54.000004% 1
org.skife.jdbi.v2.unstable.oracle 1 1 0 0 7 0.0% 100.0% 0.0% 1
org.skife.jdbi.v2.unstable.stringtemplate 4 4 0 0 7 0.0% 100.0% 0.0% 1
org.skife.jdbi.v2.util 8 7 1 0 4 12.0% 100.0% 12.0% 1

Packages

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

org.skife.jdbi.rewriter.colon

Afferent Couplings Efferent Couplings Abstractness Instability Distance
1 2 0.0% 67.0% 33.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None org.skife.jdbi.rewriter.colon.ColonStatementLexer
org.skife.jdbi.v2
java.lang
org.antlr.runtime

org.skife.jdbi.rewriter.printf

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 2 0.0% 100.0% 0.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None org.skife.jdbi.rewriter.printf.FormatterStatementLexer
None java.lang
org.antlr.runtime

org.skife.jdbi.v2

Afferent Couplings Efferent Couplings Abstractness Instability Distance
9 18 15.000001% 67.0% 18.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.skife.jdbi.v2.BaseResultSetMapper
org.skife.jdbi.v2.CallableStatementMapper
org.skife.jdbi.v2.Folder
org.skife.jdbi.v2.Folder2
org.skife.jdbi.v2.Handle
org.skife.jdbi.v2.IDBI
org.skife.jdbi.v2.LazyArguments
org.skife.jdbi.v2.QueryPostMungeCleanup
org.skife.jdbi.v2.QueryPreperator
org.skife.jdbi.v2.QueryResultMunger
org.skife.jdbi.v2.ResultIterator
org.skife.jdbi.v2.SQLStatement
org.skife.jdbi.v2.TimingCollector
org.skife.jdbi.v2.TransactionCallback
org.skife.jdbi.v2.TransactionStatus
org.skife.jdbi.v2.BasicHandle
org.skife.jdbi.v2.BasicHandle$1
org.skife.jdbi.v2.Batch
org.skife.jdbi.v2.BeanMapper
org.skife.jdbi.v2.BeanPropertyArguments
org.skife.jdbi.v2.BigDecimalArgument
org.skife.jdbi.v2.Binding
org.skife.jdbi.v2.BlobArgument
org.skife.jdbi.v2.BooleanArgument
org.skife.jdbi.v2.BooleanIntegerArgument
org.skife.jdbi.v2.ByteArgument
org.skife.jdbi.v2.ByteArrayArgument
org.skife.jdbi.v2.CachingStatementBuilder
org.skife.jdbi.v2.CachingStatementBuilderFactory
org.skife.jdbi.v2.Call
org.skife.jdbi.v2.Call$1
org.skife.jdbi.v2.Call$OutParamArgument
org.skife.jdbi.v2.CharacterArgument
org.skife.jdbi.v2.CharacterStreamArgument
org.skife.jdbi.v2.ClasspathStatementLocator
org.skife.jdbi.v2.ClobArgument
org.skife.jdbi.v2.ColonPrefixNamedParamStatementRewriter
org.skife.jdbi.v2.ColonPrefixNamedParamStatementRewriter$1
org.skife.jdbi.v2.ColonPrefixNamedParamStatementRewriter$MyRewrittenStatement
org.skife.jdbi.v2.ColonPrefixNamedParamStatementRewriter$ParsedStatement
org.skife.jdbi.v2.DBI
org.skife.jdbi.v2.DBI$1
org.skife.jdbi.v2.DBI$2
org.skife.jdbi.v2.DBI$3
org.skife.jdbi.v2.DBI$4
org.skife.jdbi.v2.DBI$5
org.skife.jdbi.v2.DataSourceConnectionFactory
org.skife.jdbi.v2.DefaultMapper
org.skife.jdbi.v2.DefaultMapper$1
org.skife.jdbi.v2.DefaultMapper$DefaultResultMap
org.skife.jdbi.v2.DefaultStatementBuilder
org.skife.jdbi.v2.DefaultStatementBuilderFactory
org.skife.jdbi.v2.DoubleArgument
org.skife.jdbi.v2.FloatArgument
org.skife.jdbi.v2.InputStreamArgument
org.skife.jdbi.v2.IntegerArgument
org.skife.jdbi.v2.JavaDateArgument
org.skife.jdbi.v2.LongArgument
org.skife.jdbi.v2.MapArguments
org.skife.jdbi.v2.NoOpStatementRewriter
org.skife.jdbi.v2.NoOpStatementRewriter$NoOpRewrittenStatement
org.skife.jdbi.v2.NullArgument
org.skife.jdbi.v2.ObjectArgument
org.skife.jdbi.v2.OutParameters
org.skife.jdbi.v2.Pair
org.skife.jdbi.v2.ParsedStatement
org.skife.jdbi.v2.PreparedBatch
org.skife.jdbi.v2.PreparedBatchPart
org.skife.jdbi.v2.Query
org.skife.jdbi.v2.Query$1
org.skife.jdbi.v2.Query$10
org.skife.jdbi.v2.Query$11
org.skife.jdbi.v2.Query$12
org.skife.jdbi.v2.Query$2
org.skife.jdbi.v2.Query$3
org.skife.jdbi.v2.Query$4
org.skife.jdbi.v2.Query$5
org.skife.jdbi.v2.Query$6
org.skife.jdbi.v2.Query$7
org.skife.jdbi.v2.Query$8
org.skife.jdbi.v2.Query$9
org.skife.jdbi.v2.QueryPostMungeCleanup$1
org.skife.jdbi.v2.QueryPostMungeCleanup$2
org.skife.jdbi.v2.QueryPreperator$1
org.skife.jdbi.v2.QueryPreperator$2
org.skife.jdbi.v2.ResultSetResultIterator
org.skife.jdbi.v2.Script
org.skife.jdbi.v2.ShortArgument
org.skife.jdbi.v2.SqlDateArgument
org.skife.jdbi.v2.SqlTypeArgument
org.skife.jdbi.v2.StatementContext
org.skife.jdbi.v2.StringArgument
org.skife.jdbi.v2.TimeArgument
org.skife.jdbi.v2.TimestampArgument
org.skife.jdbi.v2.TimingCollector$NopTimingCollector
org.skife.jdbi.v2.URLArgument
org.skife.jdbi.v2.Update
org.skife.jdbi.v2.Update$1
org.skife.jdbi.v2.exceptions
org.skife.jdbi.v2.logging
org.skife.jdbi.v2.spring
org.skife.jdbi.v2.tweak
org.skife.jdbi.v2.tweak.transactions
org.skife.jdbi.v2.unstable.eod
org.skife.jdbi.v2.unstable.oracle
org.skife.jdbi.v2.unstable.stringtemplate
org.skife.jdbi.v2.util
java.beans
java.io
java.lang
java.lang.reflect
java.math
java.net
java.sql
java.util
java.util.concurrent
java.util.concurrent.atomic
java.util.regex
javax.sql
org.antlr.runtime
org.skife.jdbi.rewriter.colon
org.skife.jdbi.v2.exceptions
org.skife.jdbi.v2.logging
org.skife.jdbi.v2.tweak
org.skife.jdbi.v2.tweak.transactions

org.skife.jdbi.v2.exceptions

Afferent Couplings Efferent Couplings Abstractness Instability Distance
3 2 20.0% 40.0% 40.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.skife.jdbi.v2.exceptions.DBIException
org.skife.jdbi.v2.exceptions.StatementException
org.skife.jdbi.v2.exceptions.CallbackFailedException
org.skife.jdbi.v2.exceptions.ResultSetException
org.skife.jdbi.v2.exceptions.TransactionException
org.skife.jdbi.v2.exceptions.TransactionFailedException
org.skife.jdbi.v2.exceptions.UnableToCloseResourceException
org.skife.jdbi.v2.exceptions.UnableToCreateStatementException
org.skife.jdbi.v2.exceptions.UnableToExecuteStatementException
org.skife.jdbi.v2.exceptions.UnableToObtainConnectionException
org.skife.jdbi.v2
org.skife.jdbi.v2.tweak.transactions
org.skife.jdbi.v2.unstable.oracle
java.lang
org.skife.jdbi.v2

org.skife.jdbi.v2.logging

Afferent Couplings Efferent Couplings Abstractness Instability Distance
1 5 17.0% 83.0% 0.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.skife.jdbi.v2.logging.FormattedLog
org.skife.jdbi.v2.logging.FormattedLog$1
org.skife.jdbi.v2.logging.Log4JLog
org.skife.jdbi.v2.logging.NoOpLog
org.skife.jdbi.v2.logging.NoOpLog$1
org.skife.jdbi.v2.logging.PrintStreamLog
org.skife.jdbi.v2
java.io
java.lang
org.apache.log4j
org.skife.jdbi.v2
org.skife.jdbi.v2.tweak

org.skife.jdbi.v2.spring

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 9 0.0% 100.0% 0.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None org.skife.jdbi.v2.spring.DBIFactoryBean
org.skife.jdbi.v2.spring.DBIUtil
org.skife.jdbi.v2.spring.DBIUtil$Adapter
org.skife.jdbi.v2.spring.SpringDataSourceConnectionFactory
None java.lang
java.sql
java.util
javax.sql
org.skife.jdbi.v2
org.skife.jdbi.v2.tweak
org.springframework.beans.factory
org.springframework.jdbc.datasource
org.springframework.transaction.support

org.skife.jdbi.v2.tweak

Afferent Couplings Efferent Couplings Abstractness Instability Distance
7 3 93.0% 30.000002% 23.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.skife.jdbi.v2.tweak.Argument
org.skife.jdbi.v2.tweak.ConnectionFactory
org.skife.jdbi.v2.tweak.HandleCallback
org.skife.jdbi.v2.tweak.ResultSetMapper
org.skife.jdbi.v2.tweak.RewrittenStatement
org.skife.jdbi.v2.tweak.SQLLog
org.skife.jdbi.v2.tweak.SQLLog$BatchLogger
org.skife.jdbi.v2.tweak.StatementBuilder
org.skife.jdbi.v2.tweak.StatementBuilderFactory
org.skife.jdbi.v2.tweak.StatementCustomizer
org.skife.jdbi.v2.tweak.StatementLocator
org.skife.jdbi.v2.tweak.StatementRewriter
org.skife.jdbi.v2.tweak.TransactionHandler
org.skife.jdbi.v2.tweak.BaseStatementCustomizer
org.skife.jdbi.v2
org.skife.jdbi.v2.logging
org.skife.jdbi.v2.spring
org.skife.jdbi.v2.tweak.transactions
org.skife.jdbi.v2.unstable.oracle
org.skife.jdbi.v2.unstable.stringtemplate
org.skife.jdbi.v2.util
java.lang
java.sql
org.skife.jdbi.v2

org.skife.jdbi.v2.tweak.transactions

Afferent Couplings Efferent Couplings Abstractness Instability Distance
1 7 0.0% 88.0% 12.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None org.skife.jdbi.v2.tweak.transactions.CMTTransactionHandler
org.skife.jdbi.v2.tweak.transactions.LocalTransactionHandler
org.skife.jdbi.v2.tweak.transactions.LocalTransactionHandler$LocalStuff
org.skife.jdbi.v2
java.lang
java.sql
java.util
java.util.concurrent
org.skife.jdbi.v2
org.skife.jdbi.v2.exceptions
org.skife.jdbi.v2.tweak

org.skife.jdbi.v2.unstable.eod

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 7 54.000004% 100.0% 54.000004%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.skife.jdbi.v2.unstable.eod.BindBy
org.skife.jdbi.v2.unstable.eod.DataAccessHandler$Foo
org.skife.jdbi.v2.unstable.eod.DataAccessor
org.skife.jdbi.v2.unstable.eod.Delete
org.skife.jdbi.v2.unstable.eod.Insert
org.skife.jdbi.v2.unstable.eod.Select
org.skife.jdbi.v2.unstable.eod.Update
org.skife.jdbi.v2.unstable.eod.BindType
org.skife.jdbi.v2.unstable.eod.DataAccessHandler
org.skife.jdbi.v2.unstable.eod.DataAccessHandler$1
org.skife.jdbi.v2.unstable.eod.DataAccessHandler$2
org.skife.jdbi.v2.unstable.eod.DataAccessHandler$3
org.skife.jdbi.v2.unstable.eod.QueryObjectFactory
None java.lang
java.lang.annotation
java.lang.reflect
java.sql
java.util
javax.sql
org.skife.jdbi.v2

org.skife.jdbi.v2.unstable.oracle

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.skife.jdbi.v2.unstable.oracle.OracleReturning
None java.lang
java.lang.reflect
java.sql
java.util
org.skife.jdbi.v2
org.skife.jdbi.v2.exceptions
org.skife.jdbi.v2.tweak

org.skife.jdbi.v2.unstable.stringtemplate

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.skife.jdbi.v2.unstable.stringtemplate.ClasspathGroupLoader
org.skife.jdbi.v2.unstable.stringtemplate.ClasspathGroupLoader$1
org.skife.jdbi.v2.unstable.stringtemplate.ClasspathGroupLoader$ExplodingStringTemplateErrorListener
org.skife.jdbi.v2.unstable.stringtemplate.StringTemplateStatementLocator
None java.io
java.lang
java.util
java.util.concurrent
org.antlr.stringtemplate
org.skife.jdbi.v2
org.skife.jdbi.v2.tweak

org.skife.jdbi.v2.util

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 4 12.0% 100.0% 12.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.skife.jdbi.v2.util.TypedMapper
org.skife.jdbi.v2.util.BooleanMapper
org.skife.jdbi.v2.util.IntegerMapper
org.skife.jdbi.v2.util.LongMapper
org.skife.jdbi.v2.util.StringMapper
org.skife.jdbi.v2.util.TimestampMapper
org.skife.jdbi.v2.util.TypedMapper$IndexMapper
org.skife.jdbi.v2.util.TypedMapper$StringMapper
None java.lang
java.sql
org.skife.jdbi.v2
org.skife.jdbi.v2.tweak

Cycles

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

Package Package Dependencies
org.skife.jdbi.v2 org.skife.jdbi.v2.tweak
org.skife.jdbi.v2
org.skife.jdbi.v2.exceptions org.skife.jdbi.v2
org.skife.jdbi.v2.tweak
org.skife.jdbi.v2
org.skife.jdbi.v2.logging org.skife.jdbi.v2.tweak
org.skife.jdbi.v2
org.skife.jdbi.v2.tweak
org.skife.jdbi.v2.spring org.skife.jdbi.v2
org.skife.jdbi.v2.tweak
org.skife.jdbi.v2
org.skife.jdbi.v2.tweak org.skife.jdbi.v2
org.skife.jdbi.v2.tweak
org.skife.jdbi.v2.tweak.transactions org.skife.jdbi.v2
org.skife.jdbi.v2.tweak
org.skife.jdbi.v2
org.skife.jdbi.v2.unstable.eod org.skife.jdbi.v2
org.skife.jdbi.v2.tweak
org.skife.jdbi.v2
org.skife.jdbi.v2.unstable.oracle org.skife.jdbi.v2
org.skife.jdbi.v2.tweak
org.skife.jdbi.v2
org.skife.jdbi.v2.unstable.stringtemplate org.skife.jdbi.v2
org.skife.jdbi.v2.tweak
org.skife.jdbi.v2
org.skife.jdbi.v2.util org.skife.jdbi.v2
org.skife.jdbi.v2.tweak
org.skife.jdbi.v2

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.