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
de.schlichtherle.truezip.entry 12 6 6 2 7 50.0% 78.0% 28.0% 1
de.schlichtherle.truezip.fs 217 182 35 2 17 16.0% 89.0% 6.0% 1
de.schlichtherle.truezip.fs.sl 8 7 1 0 6 12.0% 100.0% 12.0% 1
de.schlichtherle.truezip.fs.spi 4 0 4 1 5 100.0% 83.0% 83.0% 1
de.schlichtherle.truezip.io 35 27 8 3 10 23.0% 77.0% 0.0% 1
de.schlichtherle.truezip.rof 12 7 5 2 5 42.0% 71.0% 13.0% 1
de.schlichtherle.truezip.socket 87 60 27 3 9 31.0% 75.0% 6.0% 1
de.schlichtherle.truezip.socket.sl 4 3 1 0 7 25.0% 100.0% 25.0% 1
de.schlichtherle.truezip.socket.spi 3 0 3 1 2 100.0% 67.0% 67.0% 1
de.schlichtherle.truezip.util 47 35 12 7 12 26.0% 63.0% 11.0% 1

Packages

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

de.schlichtherle.truezip.entry

Afferent Couplings Efferent Couplings Abstractness Instability Distance
2 7 50.0% 78.0% 28.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
de.schlichtherle.truezip.entry.DecoratingEntry
de.schlichtherle.truezip.entry.DecoratingEntryContainer
de.schlichtherle.truezip.entry.Entry
de.schlichtherle.truezip.entry.EntryContainer
de.schlichtherle.truezip.entry.MutableEntry
de.schlichtherle.truezip.entry.package-info
de.schlichtherle.truezip.entry.Entry$Access
de.schlichtherle.truezip.entry.Entry$Size
de.schlichtherle.truezip.entry.Entry$Type
de.schlichtherle.truezip.entry.EntryName
de.schlichtherle.truezip.entry.EntryNameBeanInfo
de.schlichtherle.truezip.entry.EntryNameBeanInfo$1
de.schlichtherle.truezip.fs
de.schlichtherle.truezip.socket
de.schlichtherle.truezip.util
java.awt
java.beans
java.io
java.lang
java.net
java.util

de.schlichtherle.truezip.fs

Afferent Couplings Efferent Couplings Abstractness Instability Distance
2 17 16.0% 89.0% 6.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
de.schlichtherle.truezip.fs.FsAbstractCompositeDriver
de.schlichtherle.truezip.fs.FsAbstractController
de.schlichtherle.truezip.fs.FsArchiveDriver
de.schlichtherle.truezip.fs.FsArchiveEntry
de.schlichtherle.truezip.fs.FsArchiveFileSystem$TouchListener
de.schlichtherle.truezip.fs.FsArchiveFileSystemOperation
de.schlichtherle.truezip.fs.FsBasicArchiveController
de.schlichtherle.truezip.fs.FsCacheController$SocketFactory
de.schlichtherle.truezip.fs.FsCharsetArchiveDriver
de.schlichtherle.truezip.fs.FsCompositeDriver
de.schlichtherle.truezip.fs.FsController
de.schlichtherle.truezip.fs.FsDecoratingController
de.schlichtherle.truezip.fs.FsDecoratingManager
de.schlichtherle.truezip.fs.FsDecoratingModel
de.schlichtherle.truezip.fs.FsDriver
de.schlichtherle.truezip.fs.FsDriverProvider
de.schlichtherle.truezip.fs.FsEntry
de.schlichtherle.truezip.fs.FsFalsePositiveArchiveController$Operation
de.schlichtherle.truezip.fs.FsFalsePositiveArchiveController$State
de.schlichtherle.truezip.fs.FsFileSystemArchiveController
de.schlichtherle.truezip.fs.FsFileSystemArchiveController$MountState
de.schlichtherle.truezip.fs.FsFinalizeController$SocketFactory
de.schlichtherle.truezip.fs.FsLockController$Operation
de.schlichtherle.truezip.fs.FsLockController$SocketFactory
de.schlichtherle.truezip.fs.FsLockController$ThreadLocalAccountFactory
de.schlichtherle.truezip.fs.FsLockModelController
de.schlichtherle.truezip.fs.FsLockModelDecoratingController
de.schlichtherle.truezip.fs.FsManager
de.schlichtherle.truezip.fs.FsManagerProvider
de.schlichtherle.truezip.fs.FsModel
de.schlichtherle.truezip.fs.FsResourceController$SocketFactory
de.schlichtherle.truezip.fs.FsSyncController$SocketFactory
de.schlichtherle.truezip.fs.FsUriModifier
de.schlichtherle.truezip.fs.FsUriModifier$PostFix
de.schlichtherle.truezip.fs.package-info
de.schlichtherle.truezip.fs.FsArchiveEntries
de.schlichtherle.truezip.fs.FsArchiveFileSystem
de.schlichtherle.truezip.fs.FsArchiveFileSystem$EntryTable
de.schlichtherle.truezip.fs.FsArchiveFileSystem$PathLink
de.schlichtherle.truezip.fs.FsArchiveFileSystem$SegmentLink
de.schlichtherle.truezip.fs.FsArchiveFileSystem$Splitter
de.schlichtherle.truezip.fs.FsArchiveFileSystemException
de.schlichtherle.truezip.fs.FsBasicArchiveController$1Input
de.schlichtherle.truezip.fs.FsBasicArchiveController$1Output
de.schlichtherle.truezip.fs.FsBasicArchiveController$ProxyEntry
de.schlichtherle.truezip.fs.FsCacheController
de.schlichtherle.truezip.fs.FsCacheController$1
de.schlichtherle.truezip.fs.FsCacheController$1Input
de.schlichtherle.truezip.fs.FsCacheController$1Output
de.schlichtherle.truezip.fs.FsCacheController$EntryCache
de.schlichtherle.truezip.fs.FsCacheController$EntryCache$Input
de.schlichtherle.truezip.fs.FsCacheController$EntryCache$Input$Stream
de.schlichtherle.truezip.fs.FsCacheController$EntryCache$Nio2Output
de.schlichtherle.truezip.fs.FsCacheController$EntryCache$Nio2Output$Channel
de.schlichtherle.truezip.fs.FsCacheController$EntryCache$Output
de.schlichtherle.truezip.fs.FsCacheController$EntryCache$Output$Stream
de.schlichtherle.truezip.fs.FsCacheController$SocketFactory$1
de.schlichtherle.truezip.fs.FsCacheController$SocketFactory$2
de.schlichtherle.truezip.fs.FsContextController
de.schlichtherle.truezip.fs.FsContextController$Input
de.schlichtherle.truezip.fs.FsContextController$Output
de.schlichtherle.truezip.fs.FsCovariantEntry
de.schlichtherle.truezip.fs.FsDefaultManager
de.schlichtherle.truezip.fs.FsDefaultManager$ManagedModel
de.schlichtherle.truezip.fs.FsDefaultManager$ReverseControllerComparator
de.schlichtherle.truezip.fs.FsEntryName
de.schlichtherle.truezip.fs.FsEntryNameBeanInfo
de.schlichtherle.truezip.fs.FsEntryNameBeanInfo$1
de.schlichtherle.truezip.fs.FsEntryNotFoundException
de.schlichtherle.truezip.fs.FsFalsePositiveArchiveController
de.schlichtherle.truezip.fs.FsFalsePositiveArchiveController$1
de.schlichtherle.truezip.fs.FsFalsePositiveArchiveController$1Input
de.schlichtherle.truezip.fs.FsFalsePositiveArchiveController$1Input$GetLocalTarget
de.schlichtherle.truezip.fs.FsFalsePositiveArchiveController$1Input$NewInputStream
de.schlichtherle.truezip.fs.FsFalsePositiveArchiveController$1Input$NewReadOnlyFile
de.schlichtherle.truezip.fs.FsFalsePositiveArchiveController$1Input$NewSeekableByteChannel
de.schlichtherle.truezip.fs.FsFalsePositiveArchiveController$1Mknod
de.schlichtherle.truezip.fs.FsFalsePositiveArchiveController$1Output
de.schlichtherle.truezip.fs.FsFalsePositiveArchiveController$1Output$GetLocalTarget
de.schlichtherle.truezip.fs.FsFalsePositiveArchiveController$1Output$NewOutputStream
de.schlichtherle.truezip.fs.FsFalsePositiveArchiveController$1Output$NewSeekableByteChannel
de.schlichtherle.truezip.fs.FsFalsePositiveArchiveController$1SetTime
de.schlichtherle.truezip.fs.FsFalsePositiveArchiveController$1Unlink
de.schlichtherle.truezip.fs.FsFalsePositiveArchiveController$2SetTime
de.schlichtherle.truezip.fs.FsFalsePositiveArchiveController$GetEntry
de.schlichtherle.truezip.fs.FsFalsePositiveArchiveController$IsExecutable
de.schlichtherle.truezip.fs.FsFalsePositiveArchiveController$IsReadOnly
de.schlichtherle.truezip.fs.FsFalsePositiveArchiveController$IsReadable
de.schlichtherle.truezip.fs.FsFalsePositiveArchiveController$IsWritable
de.schlichtherle.truezip.fs.FsFalsePositiveArchiveController$SetReadOnly
de.schlichtherle.truezip.fs.FsFalsePositiveArchiveController$TryChild
de.schlichtherle.truezip.fs.FsFalsePositiveArchiveController$UseParent
de.schlichtherle.truezip.fs.FsFalsePositiveArchiveException
de.schlichtherle.truezip.fs.FsFileSystemArchiveController$1
de.schlichtherle.truezip.fs.FsFileSystemArchiveController$MountedFileSystem
de.schlichtherle.truezip.fs.FsFileSystemArchiveController$ResetFileSystem
de.schlichtherle.truezip.fs.FsFilteringManager
de.schlichtherle.truezip.fs.FsFilteringManager$FilteredControllerIterator
de.schlichtherle.truezip.fs.FsFinalizeController
de.schlichtherle.truezip.fs.FsFinalizeController$1
de.schlichtherle.truezip.fs.FsFinalizeController$FinalizeInputStream
de.schlichtherle.truezip.fs.FsFinalizeController$FinalizeOutputStream
de.schlichtherle.truezip.fs.FsFinalizeController$FinalizeReadOnlyFile
de.schlichtherle.truezip.fs.FsFinalizeController$FinalizeSeekableByteChannel
de.schlichtherle.truezip.fs.FsFinalizeController$Input
de.schlichtherle.truezip.fs.FsFinalizeController$Nio2Input
de.schlichtherle.truezip.fs.FsFinalizeController$Nio2Output
de.schlichtherle.truezip.fs.FsFinalizeController$Output
de.schlichtherle.truezip.fs.FsFinalizeController$SocketFactory$1
de.schlichtherle.truezip.fs.FsFinalizeController$SocketFactory$2
de.schlichtherle.truezip.fs.FsInputOption
de.schlichtherle.truezip.fs.FsInputOptions
de.schlichtherle.truezip.fs.FsLockController
de.schlichtherle.truezip.fs.FsLockController$1
de.schlichtherle.truezip.fs.FsLockController$1Close
de.schlichtherle.truezip.fs.FsLockController$1GetEntry
de.schlichtherle.truezip.fs.FsLockController$1IsExecutable
de.schlichtherle.truezip.fs.FsLockController$1IsReadOnly
de.schlichtherle.truezip.fs.FsLockController$1IsReadable
de.schlichtherle.truezip.fs.FsLockController$1IsWritable
de.schlichtherle.truezip.fs.FsLockController$1Mknod
de.schlichtherle.truezip.fs.FsLockController$1SetReadOnly
de.schlichtherle.truezip.fs.FsLockController$1SetTime
de.schlichtherle.truezip.fs.FsLockController$1Sync
de.schlichtherle.truezip.fs.FsLockController$1Unlink
de.schlichtherle.truezip.fs.FsLockController$2SetTime
de.schlichtherle.truezip.fs.FsLockController$Account
de.schlichtherle.truezip.fs.FsLockController$Input
de.schlichtherle.truezip.fs.FsLockController$Input$1GetLocalTarget
de.schlichtherle.truezip.fs.FsLockController$Input$1NewInputStream
de.schlichtherle.truezip.fs.FsLockController$Input$1NewReadOnlyFile
de.schlichtherle.truezip.fs.FsLockController$LockInputStream
de.schlichtherle.truezip.fs.FsLockController$LockOutputStream
de.schlichtherle.truezip.fs.FsLockController$LockReadOnlyFile
de.schlichtherle.truezip.fs.FsLockController$LockSeekableByteChannel
de.schlichtherle.truezip.fs.FsLockController$Nio2Input
de.schlichtherle.truezip.fs.FsLockController$Nio2Input$1NewSeekableByteChannel
de.schlichtherle.truezip.fs.FsLockController$Nio2Output
de.schlichtherle.truezip.fs.FsLockController$Nio2Output$1NewSeekableByteChannel
de.schlichtherle.truezip.fs.FsLockController$Output
de.schlichtherle.truezip.fs.FsLockController$Output$1GetLocalTarget
de.schlichtherle.truezip.fs.FsLockController$Output$1NewOutputStream
de.schlichtherle.truezip.fs.FsLockController$SocketFactory$1
de.schlichtherle.truezip.fs.FsLockController$SocketFactory$2
de.schlichtherle.truezip.fs.FsLockController$ThreadLocalAccountFactory$1
de.schlichtherle.truezip.fs.FsLockController$ThreadLocalAccountFactory$1$1
de.schlichtherle.truezip.fs.FsLockController$ThreadLocalAccountFactory$2
de.schlichtherle.truezip.fs.FsLockController$ThreadLocalAccountFactory$2$1
de.schlichtherle.truezip.fs.FsLockModel
de.schlichtherle.truezip.fs.FsMountPoint
de.schlichtherle.truezip.fs.FsMountPointBeanInfo
de.schlichtherle.truezip.fs.FsMountPointBeanInfo$1
de.schlichtherle.truezip.fs.FsNeedsLockRetryException
de.schlichtherle.truezip.fs.FsNeedsSyncException
de.schlichtherle.truezip.fs.FsNeedsWriteLockException
de.schlichtherle.truezip.fs.FsOperationContext
de.schlichtherle.truezip.fs.FsOutputOption
de.schlichtherle.truezip.fs.FsOutputOptions
de.schlichtherle.truezip.fs.FsPath
de.schlichtherle.truezip.fs.FsPathBeanInfo
de.schlichtherle.truezip.fs.FsPathBeanInfo$1
de.schlichtherle.truezip.fs.FsPersistentFalsePositiveArchiveException
de.schlichtherle.truezip.fs.FsReadOnlyArchiveFileSystem
de.schlichtherle.truezip.fs.FsReadOnlyArchiveFileSystemException
de.schlichtherle.truezip.fs.FsResourceAccountant
de.schlichtherle.truezip.fs.FsResourceAccountant$1
de.schlichtherle.truezip.fs.FsResourceAccountant$Account
de.schlichtherle.truezip.fs.FsResourceAccountant$Resources
de.schlichtherle.truezip.fs.FsResourceController
de.schlichtherle.truezip.fs.FsResourceController$1
de.schlichtherle.truezip.fs.FsResourceController$1IOExceptionHandler
de.schlichtherle.truezip.fs.FsResourceController$Input
de.schlichtherle.truezip.fs.FsResourceController$Nio2Input
de.schlichtherle.truezip.fs.FsResourceController$Nio2Output
de.schlichtherle.truezip.fs.FsResourceController$Output
de.schlichtherle.truezip.fs.FsResourceController$ResourceInputStream
de.schlichtherle.truezip.fs.FsResourceController$ResourceOutputStream
de.schlichtherle.truezip.fs.FsResourceController$ResourceReadOnlyFile
de.schlichtherle.truezip.fs.FsResourceController$ResourceSeekableByteChannel
de.schlichtherle.truezip.fs.FsResourceController$SocketFactory$1
de.schlichtherle.truezip.fs.FsResourceController$SocketFactory$2
de.schlichtherle.truezip.fs.FsResourceOpenException
de.schlichtherle.truezip.fs.FsScheme
de.schlichtherle.truezip.fs.FsSchemeBeanInfo
de.schlichtherle.truezip.fs.FsSchemeBeanInfo$1
de.schlichtherle.truezip.fs.FsSimpleCompositeDriver
de.schlichtherle.truezip.fs.FsSyncController
de.schlichtherle.truezip.fs.FsSyncController$1
de.schlichtherle.truezip.fs.FsSyncController$Input
de.schlichtherle.truezip.fs.FsSyncController$Nio2Input
de.schlichtherle.truezip.fs.FsSyncController$Nio2Output
de.schlichtherle.truezip.fs.FsSyncController$Output
de.schlichtherle.truezip.fs.FsSyncController$SocketFactory$1
de.schlichtherle.truezip.fs.FsSyncController$SocketFactory$2
de.schlichtherle.truezip.fs.FsSyncController$SyncInputStream
de.schlichtherle.truezip.fs.FsSyncController$SyncOutputStream
de.schlichtherle.truezip.fs.FsSyncController$SyncReadOnlyFile
de.schlichtherle.truezip.fs.FsSyncController$SyncSeekableByteChannel
de.schlichtherle.truezip.fs.FsSyncException
de.schlichtherle.truezip.fs.FsSyncExceptionBuilder
de.schlichtherle.truezip.fs.FsSyncOption
de.schlichtherle.truezip.fs.FsSyncOptions
de.schlichtherle.truezip.fs.FsSyncShutdownHook
de.schlichtherle.truezip.fs.FsSyncShutdownHook$Hook
de.schlichtherle.truezip.fs.FsSyncWarningException
de.schlichtherle.truezip.fs.FsTargetArchiveController
de.schlichtherle.truezip.fs.FsTargetArchiveController$1
de.schlichtherle.truezip.fs.FsTargetArchiveController$1Input
de.schlichtherle.truezip.fs.FsTargetArchiveController$1Output
de.schlichtherle.truezip.fs.FsTargetArchiveController$DummyInputService
de.schlichtherle.truezip.fs.FsTargetArchiveController$InputArchive
de.schlichtherle.truezip.fs.FsTargetArchiveController$OutputArchive
de.schlichtherle.truezip.fs.FsUriModifier$1
de.schlichtherle.truezip.fs.FsUriModifier$2
de.schlichtherle.truezip.fs.FsUriModifier$PostFix$1
de.schlichtherle.truezip.fs.FsUriModifier$PostFix$2
de.schlichtherle.truezip.fs.FsUriModifier$PostFix$3
de.schlichtherle.truezip.fs.sl
de.schlichtherle.truezip.fs.spi
de.schlichtherle.truezip.entry
de.schlichtherle.truezip.io
de.schlichtherle.truezip.rof
de.schlichtherle.truezip.socket
de.schlichtherle.truezip.util
java.awt
java.beans
java.io
java.lang
java.net
java.nio.channels
java.nio.charset
java.util
java.util.concurrent
java.util.concurrent.locks
java.util.logging
javax.swing

de.schlichtherle.truezip.fs.sl

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 6 12.0% 100.0% 12.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
de.schlichtherle.truezip.fs.sl.package-info
de.schlichtherle.truezip.fs.sl.FsDriverLocator
de.schlichtherle.truezip.fs.sl.FsDriverLocator$Boot
de.schlichtherle.truezip.fs.sl.FsManagerLocator
de.schlichtherle.truezip.fs.sl.FsManagerLocator$1
de.schlichtherle.truezip.fs.sl.FsManagerLocator$Boot
de.schlichtherle.truezip.fs.sl.FsManagerLocator$Boot$1
de.schlichtherle.truezip.fs.sl.FsManagerLocator$DefaultManagerService
None de.schlichtherle.truezip.fs
de.schlichtherle.truezip.fs.spi
de.schlichtherle.truezip.util
java.lang
java.util
java.util.logging

de.schlichtherle.truezip.fs.spi

Afferent Couplings Efferent Couplings Abstractness Instability Distance
1 5 100.0% 83.0% 83.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
de.schlichtherle.truezip.fs.spi.FsDriverService
de.schlichtherle.truezip.fs.spi.FsManagerDecorator
de.schlichtherle.truezip.fs.spi.FsManagerService
de.schlichtherle.truezip.fs.spi.package-info
None de.schlichtherle.truezip.fs.sl
de.schlichtherle.truezip.fs
de.schlichtherle.truezip.util
java.lang
java.net
java.util

de.schlichtherle.truezip.io

Afferent Couplings Efferent Couplings Abstractness Instability Distance
3 10 23.0% 77.0% 0.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
de.schlichtherle.truezip.io.DecoratingInputStream
de.schlichtherle.truezip.io.DecoratingOutputStream
de.schlichtherle.truezip.io.DecoratingSeekableByteChannel
de.schlichtherle.truezip.io.DisconnectingInputStream
de.schlichtherle.truezip.io.DisconnectingOutputStream
de.schlichtherle.truezip.io.DisconnectingSeekableByteChannel
de.schlichtherle.truezip.io.IOExceptionSeekableByteChannel
de.schlichtherle.truezip.io.package-info
de.schlichtherle.truezip.io.ClosedException
de.schlichtherle.truezip.io.FileBusyException
de.schlichtherle.truezip.io.IOExceptionOutputStream
de.schlichtherle.truezip.io.InputBusyException
de.schlichtherle.truezip.io.InputClosedException
de.schlichtherle.truezip.io.InputException
de.schlichtherle.truezip.io.LEDataOutputStream
de.schlichtherle.truezip.io.LockInputStream
de.schlichtherle.truezip.io.LockOutputStream
de.schlichtherle.truezip.io.OutputBusyException
de.schlichtherle.truezip.io.OutputClosedException
de.schlichtherle.truezip.io.Paths
de.schlichtherle.truezip.io.Paths$Normalizer
de.schlichtherle.truezip.io.Paths$Splitter
de.schlichtherle.truezip.io.SeekableByteBufferChannel
de.schlichtherle.truezip.io.SequentialIOException
de.schlichtherle.truezip.io.SequentialIOException$1
de.schlichtherle.truezip.io.SequentialIOException$2
de.schlichtherle.truezip.io.SequentialIOExceptionBuilder
de.schlichtherle.truezip.io.Streams
de.schlichtherle.truezip.io.Streams$1
de.schlichtherle.truezip.io.Streams$1ReaderTask
de.schlichtherle.truezip.io.Streams$Buffer
de.schlichtherle.truezip.io.Streams$ReaderThread
de.schlichtherle.truezip.io.Streams$ReaderThreadFactory
de.schlichtherle.truezip.io.SynchronizedInputStream
de.schlichtherle.truezip.io.SynchronizedOutputStream
de.schlichtherle.truezip.fs
de.schlichtherle.truezip.rof
de.schlichtherle.truezip.socket
de.schlichtherle.truezip.util
java.io
java.lang
java.lang.ref
java.lang.reflect
java.nio
java.nio.channels
java.util
java.util.concurrent
java.util.concurrent.locks

de.schlichtherle.truezip.rof

Afferent Couplings Efferent Couplings Abstractness Instability Distance
2 5 42.0% 71.0% 13.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
de.schlichtherle.truezip.rof.AbstractReadOnlyFile
de.schlichtherle.truezip.rof.DecoratingReadOnlyFile
de.schlichtherle.truezip.rof.DisconnectingReadOnlyFile
de.schlichtherle.truezip.rof.ReadOnlyFile
de.schlichtherle.truezip.rof.package-info
de.schlichtherle.truezip.rof.BufferedReadOnlyFile
de.schlichtherle.truezip.rof.ByteArrayReadOnlyFile
de.schlichtherle.truezip.rof.DefaultReadOnlyFile
de.schlichtherle.truezip.rof.IntervalReadOnlyFile
de.schlichtherle.truezip.rof.LockReadOnlyFile
de.schlichtherle.truezip.rof.ReadOnlyFileInputStream
de.schlichtherle.truezip.rof.SynchronizedReadOnlyFile
de.schlichtherle.truezip.fs
de.schlichtherle.truezip.socket
de.schlichtherle.truezip.io
java.io
java.lang
java.util.concurrent.locks
java.util.logging

de.schlichtherle.truezip.socket

Afferent Couplings Efferent Couplings Abstractness Instability Distance
3 9 31.0% 75.0% 6.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
de.schlichtherle.truezip.socket.ClutchInputSocket
de.schlichtherle.truezip.socket.ClutchOutputSocket
de.schlichtherle.truezip.socket.DecoratingInputShop
de.schlichtherle.truezip.socket.DecoratingInputSocket
de.schlichtherle.truezip.socket.DecoratingOutputShop
de.schlichtherle.truezip.socket.DecoratingOutputSocket
de.schlichtherle.truezip.socket.DelegatingInputSocket
de.schlichtherle.truezip.socket.DelegatingOutputSocket
de.schlichtherle.truezip.socket.DisconnectingInputShop$SocketFactory
de.schlichtherle.truezip.socket.DisconnectingOutputShop$SocketFactory
de.schlichtherle.truezip.socket.IOCache$OutputBufferPool
de.schlichtherle.truezip.socket.IOCache$SocketFactory
de.schlichtherle.truezip.socket.IOCache$Strategy
de.schlichtherle.truezip.socket.IOEntry
de.schlichtherle.truezip.socket.IOPool
de.schlichtherle.truezip.socket.IOPool$Entry
de.schlichtherle.truezip.socket.IOPoolProvider
de.schlichtherle.truezip.socket.IOSocket
de.schlichtherle.truezip.socket.InputEntry
de.schlichtherle.truezip.socket.InputService
de.schlichtherle.truezip.socket.InputShop
de.schlichtherle.truezip.socket.InputSocket
de.schlichtherle.truezip.socket.OutputEntry
de.schlichtherle.truezip.socket.OutputService
de.schlichtherle.truezip.socket.OutputShop
de.schlichtherle.truezip.socket.OutputSocket
de.schlichtherle.truezip.socket.package-info
de.schlichtherle.truezip.socket.DisconnectingInputShop
de.schlichtherle.truezip.socket.DisconnectingInputShop$1
de.schlichtherle.truezip.socket.DisconnectingInputShop$DisconnectingInputStreamImpl
de.schlichtherle.truezip.socket.DisconnectingInputShop$DisconnectingReadOnlyFileImpl
de.schlichtherle.truezip.socket.DisconnectingInputShop$DisconnectingSeekableByteChannelImpl
de.schlichtherle.truezip.socket.DisconnectingInputShop$Input
de.schlichtherle.truezip.socket.DisconnectingInputShop$Nio2Input
de.schlichtherle.truezip.socket.DisconnectingInputShop$SocketFactory$1
de.schlichtherle.truezip.socket.DisconnectingInputShop$SocketFactory$2
de.schlichtherle.truezip.socket.DisconnectingOutputShop
de.schlichtherle.truezip.socket.DisconnectingOutputShop$1
de.schlichtherle.truezip.socket.DisconnectingOutputShop$DisconnectingOutputStreamImpl
de.schlichtherle.truezip.socket.DisconnectingOutputShop$DisconnectingSeekableByteChannel
de.schlichtherle.truezip.socket.DisconnectingOutputShop$Nio2Output
de.schlichtherle.truezip.socket.DisconnectingOutputShop$Output
de.schlichtherle.truezip.socket.DisconnectingOutputShop$SocketFactory$1
de.schlichtherle.truezip.socket.DisconnectingOutputShop$SocketFactory$2
de.schlichtherle.truezip.socket.IOCache
de.schlichtherle.truezip.socket.IOCache$1
de.schlichtherle.truezip.socket.IOCache$Buffer
de.schlichtherle.truezip.socket.IOCache$Buffer$Input
de.schlichtherle.truezip.socket.IOCache$Buffer$Input$1File
de.schlichtherle.truezip.socket.IOCache$Buffer$Input$1Stream
de.schlichtherle.truezip.socket.IOCache$Buffer$Nio2Input
de.schlichtherle.truezip.socket.IOCache$Buffer$Nio2Input$1Channel
de.schlichtherle.truezip.socket.IOCache$Buffer$Nio2Output
de.schlichtherle.truezip.socket.IOCache$Buffer$Nio2Output$1Channel
de.schlichtherle.truezip.socket.IOCache$Buffer$Output
de.schlichtherle.truezip.socket.IOCache$Buffer$Output$1Stream
de.schlichtherle.truezip.socket.IOCache$Input
de.schlichtherle.truezip.socket.IOCache$InputBufferPool
de.schlichtherle.truezip.socket.IOCache$Output
de.schlichtherle.truezip.socket.IOCache$ProxyEntry
de.schlichtherle.truezip.socket.IOCache$SocketFactory$1
de.schlichtherle.truezip.socket.IOCache$SocketFactory$2
de.schlichtherle.truezip.socket.IOCache$Strategy$1
de.schlichtherle.truezip.socket.IOCache$Strategy$2
de.schlichtherle.truezip.socket.IOCache$Strategy$3
de.schlichtherle.truezip.socket.IOCache$WriteBackOutputBufferPool
de.schlichtherle.truezip.socket.IOCache$WriteThroughOutputBufferPool
de.schlichtherle.truezip.socket.LazyInputSocket
de.schlichtherle.truezip.socket.LazyInputSocket$ProxyInputStream
de.schlichtherle.truezip.socket.LazyInputSocket$ProxyReadOnlyFile
de.schlichtherle.truezip.socket.LazyOutputSocket
de.schlichtherle.truezip.socket.LazyOutputSocket$ProxyOutputStream
de.schlichtherle.truezip.socket.LockInputShop
de.schlichtherle.truezip.socket.LockInputShop$1Input
de.schlichtherle.truezip.socket.LockOutputShop
de.schlichtherle.truezip.socket.LockOutputShop$1Output
de.schlichtherle.truezip.socket.MultiplexedOutputShop
de.schlichtherle.truezip.socket.MultiplexedOutputShop$1
de.schlichtherle.truezip.socket.MultiplexedOutputShop$1Output
de.schlichtherle.truezip.socket.MultiplexedOutputShop$BufferedEntriesIterator
de.schlichtherle.truezip.socket.MultiplexedOutputShop$BufferedEntryOutputStream
de.schlichtherle.truezip.socket.MultiplexedOutputShop$BufferedEntryOutputStream$1InputProxy
de.schlichtherle.truezip.socket.MultiplexedOutputShop$EntryOutputStream
de.schlichtherle.truezip.socket.SynchronizedInputShop
de.schlichtherle.truezip.socket.SynchronizedInputShop$1Input
de.schlichtherle.truezip.socket.SynchronizedOutputShop
de.schlichtherle.truezip.socket.SynchronizedOutputShop$1Output
de.schlichtherle.truezip.fs
de.schlichtherle.truezip.socket.sl
de.schlichtherle.truezip.socket.spi
de.schlichtherle.truezip.entry
de.schlichtherle.truezip.io
de.schlichtherle.truezip.rof
de.schlichtherle.truezip.util
java.io
java.lang
java.nio.channels
java.util
java.util.concurrent.locks

de.schlichtherle.truezip.socket.sl

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 7 25.0% 100.0% 25.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
de.schlichtherle.truezip.socket.sl.package-info
de.schlichtherle.truezip.socket.sl.IOPoolLocator
de.schlichtherle.truezip.socket.sl.IOPoolLocator$Boot
de.schlichtherle.truezip.socket.sl.IOPoolLocator$Boot$1
None de.schlichtherle.truezip.socket
de.schlichtherle.truezip.socket.spi
de.schlichtherle.truezip.util
java.lang
java.text
java.util
java.util.logging

de.schlichtherle.truezip.socket.spi

Afferent Couplings Efferent Couplings Abstractness Instability Distance
1 2 100.0% 67.0% 67.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
de.schlichtherle.truezip.socket.spi.IOPoolDecorator
de.schlichtherle.truezip.socket.spi.IOPoolService
de.schlichtherle.truezip.socket.spi.package-info
None de.schlichtherle.truezip.socket.sl
de.schlichtherle.truezip.socket
java.lang

de.schlichtherle.truezip.util

Afferent Couplings Efferent Couplings Abstractness Instability Distance
7 12 26.0% 63.0% 11.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
de.schlichtherle.truezip.util.AbstractExceptionBuilder
de.schlichtherle.truezip.util.CanonicalStringSet$Canonicalizer
de.schlichtherle.truezip.util.ControlFlowException
de.schlichtherle.truezip.util.ExceptionBuilder
de.schlichtherle.truezip.util.ExceptionHandler
de.schlichtherle.truezip.util.FilteringIterator
de.schlichtherle.truezip.util.Link
de.schlichtherle.truezip.util.Link$Type
de.schlichtherle.truezip.util.Pool
de.schlichtherle.truezip.util.Pool$Releasable
de.schlichtherle.truezip.util.Resource
de.schlichtherle.truezip.util.package-info
de.schlichtherle.truezip.util.ArrayHelper
de.schlichtherle.truezip.util.BitField
de.schlichtherle.truezip.util.BitFieldBeanInfo
de.schlichtherle.truezip.util.BitFieldBeanInfo$1
de.schlichtherle.truezip.util.CanonicalStringSet
de.schlichtherle.truezip.util.CanonicalStringSet$1
de.schlichtherle.truezip.util.CanonicalStringSet$CanonicalStringIterator
de.schlichtherle.truezip.util.HashMaps
de.schlichtherle.truezip.util.InheritableThreadLocalStack
de.schlichtherle.truezip.util.InheritableThreadLocalStack$Node
de.schlichtherle.truezip.util.JSE7
de.schlichtherle.truezip.util.JointEnumeration
de.schlichtherle.truezip.util.JointIterator
de.schlichtherle.truezip.util.Link$1
de.schlichtherle.truezip.util.Link$Type$1
de.schlichtherle.truezip.util.Link$Type$2
de.schlichtherle.truezip.util.Link$Type$3
de.schlichtherle.truezip.util.Link$Type$4
de.schlichtherle.truezip.util.Link$Type$Phantom
de.schlichtherle.truezip.util.Link$Type$Soft
de.schlichtherle.truezip.util.Link$Type$Strong
de.schlichtherle.truezip.util.Link$Type$Weak
de.schlichtherle.truezip.util.Links
de.schlichtherle.truezip.util.QuotedUriSyntaxException
de.schlichtherle.truezip.util.ServiceLocator
de.schlichtherle.truezip.util.SuffixSet
de.schlichtherle.truezip.util.SuffixSet$1
de.schlichtherle.truezip.util.SuffixSet$SuffixMapper
de.schlichtherle.truezip.util.ThreadGroups
de.schlichtherle.truezip.util.Threads
de.schlichtherle.truezip.util.Throwables
de.schlichtherle.truezip.util.UriBuilder
de.schlichtherle.truezip.util.UriDecoder
de.schlichtherle.truezip.util.UriEncoder
de.schlichtherle.truezip.util.UriEncoder$Encoding
de.schlichtherle.truezip.entry
de.schlichtherle.truezip.fs
de.schlichtherle.truezip.fs.sl
de.schlichtherle.truezip.fs.spi
de.schlichtherle.truezip.io
de.schlichtherle.truezip.socket
de.schlichtherle.truezip.socket.sl
java.awt
java.beans
java.io
java.lang
java.lang.ref
java.lang.reflect
java.net
java.nio
java.nio.charset
java.util
java.util.logging
java.util.regex

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.