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
com.nilhcem.fakesmtp 2 2 0 0 11 0.0% 100.0% 0.0% 1
com.nilhcem.fakesmtp.core 3 3 0 6 11 0.0% 65.0% 35.0% 1
com.nilhcem.fakesmtp.core.exception 6 5 1 5 4 17.0% 44.0% 39.0% 1
com.nilhcem.fakesmtp.gui 9 9 0 2 17 0.0% 89.0% 11.0% 1
com.nilhcem.fakesmtp.gui.info 10 10 0 2 14 0.0% 88.0% 12.0% 1
com.nilhcem.fakesmtp.gui.tab 8 8 0 1 17 0.0% 94.0% 6.0% 1
com.nilhcem.fakesmtp.log 2 2 0 1 4 0.0% 80.0% 20.0% 1
com.nilhcem.fakesmtp.model 2 2 0 5 5 0.0% 50.0% 50.0% 1
com.nilhcem.fakesmtp.server 5 5 0 5 15 0.0% 75.0% 25.0% 1

Packages

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

com.nilhcem.fakesmtp

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 11 0.0% 100.0% 0.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None com.nilhcem.fakesmtp.FakeSMTP
com.nilhcem.fakesmtp.FakeSMTP$1
None com.apple.eawt
com.nilhcem.fakesmtp.core
com.nilhcem.fakesmtp.core.exception
com.nilhcem.fakesmtp.gui
com.nilhcem.fakesmtp.server
java.awt
java.lang
java.net
javax.swing
org.apache.commons.cli
org.slf4j

com.nilhcem.fakesmtp.core

Afferent Couplings Efferent Couplings Abstractness Instability Distance
6 11 0.0% 65.0% 35.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None com.nilhcem.fakesmtp.core.ArgsHandler
com.nilhcem.fakesmtp.core.Configuration
com.nilhcem.fakesmtp.core.I18n
com.nilhcem.fakesmtp
com.nilhcem.fakesmtp.gui
com.nilhcem.fakesmtp.gui.info
com.nilhcem.fakesmtp.gui.tab
com.nilhcem.fakesmtp.model
com.nilhcem.fakesmtp.server
ch.qos.logback.classic
com.nilhcem.fakesmtp.model
java.io
java.lang
java.net
java.security
java.util
org.apache.commons.cli
org.apache.commons.io
org.slf4j
org.subethamail.smtp.server

com.nilhcem.fakesmtp.core.exception

Afferent Couplings Efferent Couplings Abstractness Instability Distance
5 4 17.0% 44.0% 39.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
com.nilhcem.fakesmtp.core.exception.AbstractPortException
com.nilhcem.fakesmtp.core.exception.BindPortException
com.nilhcem.fakesmtp.core.exception.InvalidPortException
com.nilhcem.fakesmtp.core.exception.OutOfRangePortException
com.nilhcem.fakesmtp.core.exception.UncaughtExceptionHandler
com.nilhcem.fakesmtp.core.exception.UncaughtExceptionHandler$1
com.nilhcem.fakesmtp
com.nilhcem.fakesmtp.gui
com.nilhcem.fakesmtp.gui.info
com.nilhcem.fakesmtp.model
com.nilhcem.fakesmtp.server
java.awt
java.lang
javax.swing
org.slf4j

com.nilhcem.fakesmtp.gui

Afferent Couplings Efferent Couplings Abstractness Instability Distance
2 17 0.0% 89.0% 11.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None com.nilhcem.fakesmtp.gui.DirChooser
com.nilhcem.fakesmtp.gui.MainFrame
com.nilhcem.fakesmtp.gui.MainFrame$1
com.nilhcem.fakesmtp.gui.MainPanel
com.nilhcem.fakesmtp.gui.MenuBar
com.nilhcem.fakesmtp.gui.MenuBar$1
com.nilhcem.fakesmtp.gui.MenuBar$2
com.nilhcem.fakesmtp.gui.MenuBar$3
com.nilhcem.fakesmtp.gui.MenuBar$3$1
com.nilhcem.fakesmtp
com.nilhcem.fakesmtp.gui.info
com.nilhcem.fakesmtp.core
com.nilhcem.fakesmtp.core.exception
com.nilhcem.fakesmtp.gui.info
com.nilhcem.fakesmtp.gui.tab
com.nilhcem.fakesmtp.model
com.nilhcem.fakesmtp.server
java.awt
java.awt.event
java.io
java.lang
java.net
java.util
javax.swing
javax.swing.event
net.miginfocom.swing
org.slf4j
org.subethamail.smtp.server

com.nilhcem.fakesmtp.gui.info

Afferent Couplings Efferent Couplings Abstractness Instability Distance
2 14 0.0% 88.0% 12.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None com.nilhcem.fakesmtp.gui.info.ClearAllButton
com.nilhcem.fakesmtp.gui.info.ClearAllButton$1
com.nilhcem.fakesmtp.gui.info.NbReceivedLabel
com.nilhcem.fakesmtp.gui.info.PortTextField
com.nilhcem.fakesmtp.gui.info.PortTextField$1
com.nilhcem.fakesmtp.gui.info.PortTextField$2
com.nilhcem.fakesmtp.gui.info.SaveMsgField
com.nilhcem.fakesmtp.gui.info.SaveMsgField$1
com.nilhcem.fakesmtp.gui.info.StartServerButton
com.nilhcem.fakesmtp.gui.info.StartServerButton$1
com.nilhcem.fakesmtp.gui
com.nilhcem.fakesmtp.gui.tab
com.apple.eawt
com.nilhcem.fakesmtp.core
com.nilhcem.fakesmtp.core.exception
com.nilhcem.fakesmtp.gui
com.nilhcem.fakesmtp.model
com.nilhcem.fakesmtp.server
java.awt
java.awt.event
java.lang
java.util
javax.swing
javax.swing.event
javax.swing.text
org.slf4j

com.nilhcem.fakesmtp.gui.tab

Afferent Couplings Efferent Couplings Abstractness Instability Distance
1 17 0.0% 94.0% 6.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None com.nilhcem.fakesmtp.gui.tab.LastMailPane
com.nilhcem.fakesmtp.gui.tab.LogsPane
com.nilhcem.fakesmtp.gui.tab.MailsListPane
com.nilhcem.fakesmtp.gui.tab.MailsListPane$1
com.nilhcem.fakesmtp.gui.tab.MailsListPane$2
com.nilhcem.fakesmtp.gui.tab.MailsListPane$3
com.nilhcem.fakesmtp.gui.tab.MailsListPane$4
com.nilhcem.fakesmtp.gui.tab.MailsListPane$5
com.nilhcem.fakesmtp.gui
ch.qos.logback.core.spi
com.nilhcem.fakesmtp.core
com.nilhcem.fakesmtp.gui.info
com.nilhcem.fakesmtp.log
com.nilhcem.fakesmtp.model
com.nilhcem.fakesmtp.server
java.awt
java.awt.event
java.io
java.lang
java.text
java.util
javax.mail.internet
javax.swing
javax.swing.table
org.slf4j
org.subethamail.smtp.server

com.nilhcem.fakesmtp.log

Afferent Couplings Efferent Couplings Abstractness Instability Distance
1 4 0.0% 80.0% 20.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None com.nilhcem.fakesmtp.log.SMTPLogsAppender
com.nilhcem.fakesmtp.log.SMTPLogsObservable
com.nilhcem.fakesmtp.gui.tab
ch.qos.logback.classic.spi
ch.qos.logback.core
java.lang
java.util

com.nilhcem.fakesmtp.model

Afferent Couplings Efferent Couplings Abstractness Instability Distance
5 5 0.0% 50.0% 50.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None com.nilhcem.fakesmtp.model.EmailModel
com.nilhcem.fakesmtp.model.UIModel
com.nilhcem.fakesmtp.core
com.nilhcem.fakesmtp.gui
com.nilhcem.fakesmtp.gui.info
com.nilhcem.fakesmtp.gui.tab
com.nilhcem.fakesmtp.server
com.nilhcem.fakesmtp.core
com.nilhcem.fakesmtp.core.exception
com.nilhcem.fakesmtp.server
java.lang
java.util

com.nilhcem.fakesmtp.server

Afferent Couplings Efferent Couplings Abstractness Instability Distance
5 15 0.0% 75.0% 25.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None com.nilhcem.fakesmtp.server.MailListener
com.nilhcem.fakesmtp.server.MailSaver
com.nilhcem.fakesmtp.server.SMTPAuthHandler
com.nilhcem.fakesmtp.server.SMTPAuthHandlerFactory
com.nilhcem.fakesmtp.server.SMTPServerHandler
com.nilhcem.fakesmtp
com.nilhcem.fakesmtp.gui
com.nilhcem.fakesmtp.gui.info
com.nilhcem.fakesmtp.gui.tab
com.nilhcem.fakesmtp.model
com.nilhcem.fakesmtp.core
com.nilhcem.fakesmtp.core.exception
com.nilhcem.fakesmtp.model
java.io
java.lang
java.net
java.nio.charset
java.text
java.util
java.util.regex
org.apache.commons.io
org.slf4j
org.subethamail.smtp
org.subethamail.smtp.helper
org.subethamail.smtp.server

Cycles

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

Package Package Dependencies
com.nilhcem.fakesmtp com.nilhcem.fakesmtp.core
com.nilhcem.fakesmtp.model
com.nilhcem.fakesmtp.core
com.nilhcem.fakesmtp.core com.nilhcem.fakesmtp.model
com.nilhcem.fakesmtp.core
com.nilhcem.fakesmtp.gui com.nilhcem.fakesmtp.core
com.nilhcem.fakesmtp.model
com.nilhcem.fakesmtp.core
com.nilhcem.fakesmtp.gui.info com.nilhcem.fakesmtp.model
com.nilhcem.fakesmtp.core
com.nilhcem.fakesmtp.model
com.nilhcem.fakesmtp.gui.tab com.nilhcem.fakesmtp.model
com.nilhcem.fakesmtp.core
com.nilhcem.fakesmtp.model
com.nilhcem.fakesmtp.model com.nilhcem.fakesmtp.core
com.nilhcem.fakesmtp.model
com.nilhcem.fakesmtp.server com.nilhcem.fakesmtp.model
com.nilhcem.fakesmtp.core
com.nilhcem.fakesmtp.model

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.