Fork me on GitHub

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
net.anyflow.lannister 10 9 1 8 22 10.0% 73.0% 17.0% 1
net.anyflow.lannister.client 6 5 1 0 18 17.0% 100.0% 17.0% 1
net.anyflow.lannister.cluster 18 16 2 5 15 11.0% 75.0% 14.0% 1
net.anyflow.lannister.http 18 14 4 4 27 22.0% 87.0% 9.0% 1
net.anyflow.lannister.httphandler 1 1 0 0 3 0.0% 100.0% 0.0% 1
net.anyflow.lannister.httphandler.admin 1 1 0 0 3 0.0% 100.0% 0.0% 1
net.anyflow.lannister.httphandler.api 3 3 0 0 12 0.0% 100.0% 0.0% 1
net.anyflow.lannister.message 9 8 1 6 16 11.0% 73.0% 16.0% 1
net.anyflow.lannister.packetreceiver 14 14 0 2 12 0.0% 86.0% 14.0% 1
net.anyflow.lannister.plugin 8 8 0 6 2 0.0% 25.0% 75.0% 1
net.anyflow.lannister.serialization 4 4 0 3 12 0.0% 80.0% 20.0% 1
net.anyflow.lannister.server 5 5 0 1 19 0.0% 95.0% 5.0% 1
net.anyflow.lannister.session 3 3 0 3 12 0.0% 80.0% 20.0% 1
net.anyflow.lannister.topic 6 6 0 3 12 0.0% 80.0% 20.0% 1

Packages

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

net.anyflow.lannister

Afferent Couplings Efferent Couplings Abstractness Instability Distance
8 22 10.0% 73.0% 17.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
net.anyflow.lannister.Statistics$SysValue
net.anyflow.lannister.AbnormalDisconnectEventArgs
net.anyflow.lannister.Application
net.anyflow.lannister.Application$1
net.anyflow.lannister.Literals
net.anyflow.lannister.NettyUtil
net.anyflow.lannister.Settings
net.anyflow.lannister.Statistics$1
net.anyflow.lannister.Statistics$Criterion
net.anyflow.lannister.Statistics$RawSysValue
net.anyflow.lannister.client
net.anyflow.lannister.cluster
net.anyflow.lannister.http
net.anyflow.lannister.httphandler.api
net.anyflow.lannister.message
net.anyflow.lannister.serialization
net.anyflow.lannister.server
net.anyflow.lannister.topic
com.fasterxml.jackson.databind
com.google.common.base
com.google.common.collect
io.netty.buffer
io.netty.channel
io.netty.channel.epoll
io.netty.channel.nio
io.netty.handler.ssl.util
io.netty.util.concurrent
java.io
java.lang
java.security.cert
java.text
java.util
java.util.concurrent
net.anyflow.lannister.cluster
net.anyflow.lannister.http
net.anyflow.lannister.plugin
net.anyflow.lannister.server
net.anyflow.lannister.topic
org.apache.log4j.xml
org.slf4j

net.anyflow.lannister.client

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 18 17.0% 100.0% 17.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
net.anyflow.lannister.client.MessageReceiver
net.anyflow.lannister.client.MqttClient
net.anyflow.lannister.client.MqttClient$1
net.anyflow.lannister.client.MqttPacketReceiver
net.anyflow.lannister.client.MqttPacketReceiver$1
net.anyflow.lannister.client.SharedObject
None io.netty.bootstrap
io.netty.channel
io.netty.channel.epoll
io.netty.channel.nio
io.netty.channel.socket
io.netty.channel.socket.nio
io.netty.handler.codec.mqtt
io.netty.handler.ssl
io.netty.handler.ssl.util
io.netty.util.concurrent
java.lang
java.net
javax.net.ssl
net.anyflow.lannister
net.anyflow.lannister.message
net.anyflow.lannister.packetreceiver
net.anyflow.lannister.plugin
org.slf4j

net.anyflow.lannister.cluster

Afferent Couplings Efferent Couplings Abstractness Instability Distance
5 15 11.0% 75.0% 14.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
net.anyflow.lannister.cluster.Map
net.anyflow.lannister.cluster.Set
net.anyflow.lannister.cluster.ClusterDataDisposer
net.anyflow.lannister.cluster.ClusterDataDisposer$1
net.anyflow.lannister.cluster.ClusterDataFactory
net.anyflow.lannister.cluster.ClusterDataFactory$1
net.anyflow.lannister.cluster.Hazelcast
net.anyflow.lannister.cluster.HazelcastMap
net.anyflow.lannister.cluster.HazelcastSet
net.anyflow.lannister.cluster.HazelcastSetValueMap
net.anyflow.lannister.cluster.Ignite
net.anyflow.lannister.cluster.Mode
net.anyflow.lannister.cluster.NativeMap
net.anyflow.lannister.cluster.NativeSet
net.anyflow.lannister.cluster.NativeSetValueMap
net.anyflow.lannister.cluster.SerializableIntegerSet
net.anyflow.lannister.cluster.SerializableStringSet
net.anyflow.lannister.cluster.SingleIdGenerator
net.anyflow.lannister
net.anyflow.lannister.httphandler.api
net.anyflow.lannister.message
net.anyflow.lannister.serialization
net.anyflow.lannister.session
com.fasterxml.jackson.databind
com.google.common.collect
com.hazelcast.config
com.hazelcast.core
com.hazelcast.nio
com.hazelcast.nio.serialization
java.io
java.lang
java.util
java.util.concurrent.locks
java.util.stream
net.anyflow.lannister
net.anyflow.lannister.serialization
org.apache.ignite
org.slf4j

net.anyflow.lannister.http

Afferent Couplings Efferent Couplings Abstractness Instability Distance
4 27 22.0% 87.0% 9.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
net.anyflow.lannister.http.HttpRequestHandler$Handles
net.anyflow.lannister.http.IHttpClient
net.anyflow.lannister.http.MessageReceiver
net.anyflow.lannister.http.WebsocketFrameHandler
net.anyflow.lannister.http.HtmlGenerator
net.anyflow.lannister.http.HttpClient
net.anyflow.lannister.http.HttpClient$1
net.anyflow.lannister.http.HttpClient$2
net.anyflow.lannister.http.HttpClientHandler
net.anyflow.lannister.http.HttpConstants
net.anyflow.lannister.http.HttpConstants$HeaderValues
net.anyflow.lannister.http.HttpRequest
net.anyflow.lannister.http.HttpRequestHandler$1
net.anyflow.lannister.http.HttpRequestHandler$MatchedCriterion
net.anyflow.lannister.http.HttpRequestHandler$ReturnWrapper
net.anyflow.lannister.http.HttpResponse
net.anyflow.lannister.http.WebServer
net.anyflow.lannister.http.WebServerChannelInitializer
net.anyflow.lannister
net.anyflow.lannister.httphandler
net.anyflow.lannister.httphandler.admin
net.anyflow.lannister.httphandler.api
com.google.common.base
com.google.common.collect
io.netty.bootstrap
io.netty.buffer
io.netty.channel
io.netty.channel.epoll
io.netty.channel.nio
io.netty.channel.socket
io.netty.channel.socket.nio
io.netty.handler.codec
io.netty.handler.codec.http
io.netty.handler.codec.http.cookie
io.netty.handler.codec.http.websocketx
io.netty.handler.logging
io.netty.handler.ssl
io.netty.handler.ssl.util
io.netty.util
io.netty.util.concurrent
java.io
java.lang
java.lang.annotation
java.net
java.util
javax.net.ssl
net.anyflow.lannister
org.slf4j
org.w3c.tidy

net.anyflow.lannister.httphandler

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 3 0.0% 100.0% 0.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None net.anyflow.lannister.httphandler.Index
None java.lang
net.anyflow.lannister.http
org.slf4j

net.anyflow.lannister.httphandler.admin

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 3 0.0% 100.0% 0.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None net.anyflow.lannister.httphandler.admin.Index
None java.lang
net.anyflow.lannister.http
org.slf4j

net.anyflow.lannister.httphandler.api

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 12 0.0% 100.0% 0.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None net.anyflow.lannister.httphandler.api.Clients
net.anyflow.lannister.httphandler.api.MessageReferenceCounts
net.anyflow.lannister.httphandler.api.Statistics
None com.fasterxml.jackson.core
com.fasterxml.jackson.databind
com.google.common.base
com.hazelcast.core
io.netty.handler.codec.http
java.lang
net.anyflow.lannister
net.anyflow.lannister.cluster
net.anyflow.lannister.http
net.anyflow.lannister.message
net.anyflow.lannister.session
org.slf4j

net.anyflow.lannister.message

Afferent Couplings Efferent Couplings Abstractness Instability Distance
6 16 11.0% 73.0% 16.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
net.anyflow.lannister.message.MessageStatus
net.anyflow.lannister.message.ConnectOptions
net.anyflow.lannister.message.InboundMessageStatus
net.anyflow.lannister.message.InboundMessageStatus$Status
net.anyflow.lannister.message.InboundMessageStatuses
net.anyflow.lannister.message.Message
net.anyflow.lannister.message.Messages
net.anyflow.lannister.message.OutboundMessageStatus
net.anyflow.lannister.message.OutboundMessageStatus$Status
net.anyflow.lannister.client
net.anyflow.lannister.httphandler.api
net.anyflow.lannister.packetreceiver
net.anyflow.lannister.serialization
net.anyflow.lannister.session
net.anyflow.lannister.topic
com.fasterxml.jackson.annotation
com.google.common.collect
com.hazelcast.nio
com.hazelcast.nio.serialization
io.netty.handler.codec.mqtt
io.netty.util
io.netty.util.internal
java.io
java.lang
java.util
java.util.concurrent.locks
net.anyflow.lannister
net.anyflow.lannister.cluster
net.anyflow.lannister.plugin
net.anyflow.lannister.serialization
org.slf4j

net.anyflow.lannister.packetreceiver

Afferent Couplings Efferent Couplings Abstractness Instability Distance
2 12 0.0% 86.0% 14.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None net.anyflow.lannister.packetreceiver.ConnectReceiver$1
net.anyflow.lannister.packetreceiver.ConnectReceiver$2
net.anyflow.lannister.packetreceiver.DisconnectReceiver
net.anyflow.lannister.packetreceiver.GenericReceiver$1
net.anyflow.lannister.packetreceiver.MqttMessageFactory
net.anyflow.lannister.packetreceiver.PingReqReceiver
net.anyflow.lannister.packetreceiver.PubAckReceiver$1
net.anyflow.lannister.packetreceiver.PubCompReceiver
net.anyflow.lannister.packetreceiver.PubRecReceiver$1
net.anyflow.lannister.packetreceiver.PublishReceiver$1
net.anyflow.lannister.packetreceiver.PublishReceiver$2
net.anyflow.lannister.packetreceiver.SubscribeReceiver$1
net.anyflow.lannister.packetreceiver.SubscribeReceiver$2
net.anyflow.lannister.packetreceiver.UnsubscribeReceiver$1
net.anyflow.lannister.client
net.anyflow.lannister.server
com.google.common.base
com.google.common.collect
io.netty.buffer
io.netty.channel
io.netty.handler.codec.mqtt
io.netty.util
java.lang
java.util
net.anyflow.lannister.message
net.anyflow.lannister.plugin
net.anyflow.lannister.session
org.slf4j

net.anyflow.lannister.plugin

Afferent Couplings Efferent Couplings Abstractness Instability Distance
6 2 0.0% 25.0% 75.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None net.anyflow.lannister.plugin.DefaultAuthenticator
net.anyflow.lannister.plugin.DefaultAuthorizer
net.anyflow.lannister.plugin.DefaultConnectEventListener
net.anyflow.lannister.plugin.DefaultDeliveredEventListener
net.anyflow.lannister.plugin.DefaultDisconnectEventListener
net.anyflow.lannister.plugin.DefaultPublishEventListener
net.anyflow.lannister.plugin.DefaultServiceChecker
net.anyflow.lannister.plugin.DefaultUnsubscribeEventListener
net.anyflow.lannister
net.anyflow.lannister.client
net.anyflow.lannister.message
net.anyflow.lannister.packetreceiver
net.anyflow.lannister.session
net.anyflow.lannister.topic
java.lang
org.slf4j

net.anyflow.lannister.serialization

Afferent Couplings Efferent Couplings Abstractness Instability Distance
3 12 0.0% 80.0% 20.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None net.anyflow.lannister.serialization.ChannelIdSerializer
net.anyflow.lannister.serialization.HazelcastSerializer
net.anyflow.lannister.serialization.SerializableFactory
net.anyflow.lannister.serialization.SysValueSerializer
net.anyflow.lannister.cluster
net.anyflow.lannister.message
net.anyflow.lannister.topic
com.fasterxml.jackson.core
com.fasterxml.jackson.databind
com.hazelcast.nio.serialization
io.netty.channel
java.io
java.lang
java.util.function
net.anyflow.lannister
net.anyflow.lannister.cluster
net.anyflow.lannister.message
net.anyflow.lannister.session
net.anyflow.lannister.topic

net.anyflow.lannister.server

Afferent Couplings Efferent Couplings Abstractness Instability Distance
1 19 0.0% 95.0% 5.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None net.anyflow.lannister.server.ByteCounterCodec
net.anyflow.lannister.server.MqttChannelInitializer
net.anyflow.lannister.server.MqttServer
net.anyflow.lannister.server.MqttWebSocketCodec
net.anyflow.lannister.server.ScheduledExecutor
net.anyflow.lannister
io.netty.bootstrap
io.netty.buffer
io.netty.channel
io.netty.channel.epoll
io.netty.channel.socket
io.netty.channel.socket.nio
io.netty.handler.codec
io.netty.handler.codec.http
io.netty.handler.codec.http.websocketx
io.netty.handler.codec.mqtt
io.netty.handler.logging
io.netty.handler.ssl
io.netty.util.concurrent
java.lang
java.util
java.util.concurrent
net.anyflow.lannister
net.anyflow.lannister.packetreceiver
org.slf4j

net.anyflow.lannister.session

Afferent Couplings Efferent Couplings Abstractness Instability Distance
3 12 0.0% 80.0% 20.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None net.anyflow.lannister.session.MessageSender$1
net.anyflow.lannister.session.Session$1
net.anyflow.lannister.session.Sessions
net.anyflow.lannister.httphandler.api
net.anyflow.lannister.packetreceiver
net.anyflow.lannister.serialization
com.google.common.base
com.google.common.collect
com.hazelcast.core
io.netty.channel
io.netty.handler.codec.mqtt
java.lang
java.util
net.anyflow.lannister.cluster
net.anyflow.lannister.message
net.anyflow.lannister.plugin
net.anyflow.lannister.topic
org.slf4j

net.anyflow.lannister.topic

Afferent Couplings Efferent Couplings Abstractness Instability Distance
3 12 0.0% 80.0% 20.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None net.anyflow.lannister.topic.Notification
net.anyflow.lannister.topic.TopicMatcher
net.anyflow.lannister.topic.TopicSubscriber
net.anyflow.lannister.topic.TopicSubscription
net.anyflow.lannister.topic.Topics$1
net.anyflow.lannister.topic.Topics$ClientType
net.anyflow.lannister
net.anyflow.lannister.serialization
net.anyflow.lannister.session
com.google.common.base
com.hazelcast.nio
com.hazelcast.nio.serialization
io.netty.handler.codec.mqtt
java.io
java.lang
java.util
net.anyflow.lannister
net.anyflow.lannister.message
net.anyflow.lannister.plugin
net.anyflow.lannister.serialization
org.slf4j

Cycles

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

Package Package Dependencies
net.anyflow.lannister net.anyflow.lannister.http
net.anyflow.lannister
net.anyflow.lannister.client net.anyflow.lannister.packetreceiver
net.anyflow.lannister.session
net.anyflow.lannister.message
net.anyflow.lannister.serialization
net.anyflow.lannister.message
net.anyflow.lannister.cluster net.anyflow.lannister
net.anyflow.lannister.http
net.anyflow.lannister
net.anyflow.lannister.http net.anyflow.lannister
net.anyflow.lannister.http
net.anyflow.lannister.httphandler net.anyflow.lannister.http
net.anyflow.lannister
net.anyflow.lannister.http
net.anyflow.lannister.httphandler.admin net.anyflow.lannister.http
net.anyflow.lannister
net.anyflow.lannister.http
net.anyflow.lannister.httphandler.api net.anyflow.lannister.http
net.anyflow.lannister
net.anyflow.lannister.http
net.anyflow.lannister.message net.anyflow.lannister.serialization
net.anyflow.lannister.message
net.anyflow.lannister.packetreceiver net.anyflow.lannister.session
net.anyflow.lannister.message
net.anyflow.lannister.serialization
net.anyflow.lannister.message
net.anyflow.lannister.serialization net.anyflow.lannister.message
net.anyflow.lannister.serialization
net.anyflow.lannister.server net.anyflow.lannister
net.anyflow.lannister.http
net.anyflow.lannister
net.anyflow.lannister.session net.anyflow.lannister.message
net.anyflow.lannister.serialization
net.anyflow.lannister.message
net.anyflow.lannister.topic net.anyflow.lannister.message
net.anyflow.lannister.serialization
net.anyflow.lannister.message

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.