<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE project SYSTEM "Configuration.dtd">
<!--
Configurable properties on the main element:
============================================
name
the project name appears in the reports
numberOfCyclesFeedbackOnConsole (default = "1")
Every time the configured number of cycles is reached you get an
extra warning in your shell
numberOfCycleAnalysisProgressFeedbackOnConsole (default = "1")
Every time the remaining number of nodes was accordingly reduced you
get an extra info in your shell
checkLayerDependencies (default = "true")
checkSubsystemDependencies (default = "true")
"true" = all dependencies are checked against the allowed dependencies
(depends-upon node)
"false" = no dependency check
checkPackageDependencies (default = "true")
"true" = all package dependencies are checked against the allowed
dependencies (only packages are checked that have a package
description)
"false" = no dependency check
cumulateLayerDependencies (default = "true")
cumulateSubsystemDependencies (default = "true")
cumulatePackageDependencies (default = "true")
cumulateCompilationUnitDependencies (default = "true")
cumulateTypeDependencies (default = "true")
"true" = cumulate dependencies
"false" = no cumulation
maxLayerCycles (default = "0")
maxSubsystemCycles (default = "0")
maxPackageCycles (default = "0")
maxCompilationUnitCycles (default = "0")
maxTypeCycles (default = "0")
Configure the cycle analysis behavior to avoid an endlessly running
process. As an alternativ you can start the dependometer with the command
'java -jar dependomter.jar -file <your configuration>' and terminate the
analyis when ever you want with 'ctrl-c' in the shell. This is possible
past the point where in the shell the message 'Terminate running analysis
with 'ctrl-c'!' appears. Past this point you have also a valid html output.
Only the cycle analysis output gets updated. With a corresponding refresh
in your browser you can see the updated information.
-2 = no analysis
-1 = cycle existence check only
>=0 = cycle participitation analysis, stops if 'n' cycles are reached. Note that 0 will collect no cycles since Dependometer Java 1.2.5, there is no settings for 'all cycles' anymore (was 0 before).
fileEncoding (default = use default encoding)
charset of source code files, e.g. UTF-8
-->
<project
name="dependometer"
cumulateLayerDependencies="false"
cumulateSubsystemDependencies="false"
cumulatePackageDependencies="false"
cumulateCompilationUnitDependencies="true"
cumulateTypeDependencies="false">
<input dir="build/cls"/>
<input dir="src"/>
<input dir="test-cases"/>
<input dir="test-dependencies"/>
<include-package name="de.valtech.ag.*"/>
<include-package name="de.valtech.dependometer.*"/>
<exclude-package name=".*testdependencies.*"/>
<exclude-compilation-unit name=".*Test.*"/>
<!--
Optional node for vertical slice analysis
checkDependencies (default = "true")
the 'checkSubsystemDependencies' attribute must also be set to "true")
"true" = all subsystem dependencies are 'cumulated' for the corresponding
vertical slices the violations are shown
"false" = no visualization of 'cumulated' violations
maxCycles (default = "0")
as above
exclude-subsystem
specify which subsystems are not used for the vertical slice analysis (i.e. exclude the technical ones, normally
technically motivated vertical division of all layers is rare)
-->
<!--
<vertical-slices>
<exclude-subsystem name="user-interface::.*"/>
<exclude-subsystem name="application-general::.*"/>
</vertical-slices>
-->
<listener
class="de.valtech.dependometer.ui.console.output.HtmlWriter"
args="./analyze/dependometer"/>
<listener
class="de.valtech.dependometer.ui.console.output.CsvWriter"
args="./analyze/summary.csv"/>
<listener
class="de.valtech.dependometer.ui.console.output.DetailedCsvWriter"
args="./analyze/summary-detailed.csv"/>
<!--
configure the detail level via an additional argument: layer, subsystem,
package, compilation-unit, type (default = compilation-unit)
-->
<listener
class="de.valtech.dependometer.ui.console.output.ViolationReportCsvWriter"
args="./analyze/violation-report.csv type"/>
<!--
configure the detail level via an additional argument: layer, subsystem,
package, compilation-unit, type (default = package)
-->
<listener
class="de.valtech.dependometer.ui.console.output.CycleParticipationReportCsvWriter"
args="./analyze/cycle-participation-report.csv type"/>
<listener
class="de.valtech.dependometer.ui.console.output.TypeDependencyCsvWriter"
args="./analyze/typedependencies.csv"/>
<assertion pattern="assert"/>
<ignore fromType=".*CycleTest.*" toType=".*CycleTest.*"/>
<skip prefix="java.lang.[a-zA-Z]*"/>
<skip prefix="java.io.*"/>
<skip prefix="java.text.*"/>
<skip prefix="java.util.*"/>
-->
-->
<lower-threshold name="Project.NumberOfProjectInternalLayers" value="1"/>
<lower-threshold name="Project.NumberOfDefinedLayerDependencies" value="1"/>
<lower-threshold name="Project.NumberOfProjectInternalSubsystems" value="1"/>
<lower-threshold name="Project.NumberOfDefinedSubsystemDependencies" value="1"/>
<lower-threshold name="Project.PercentageOfLayersWithRcNotLessThanOne" value="100"/>
<lower-threshold name="Project.PercentageOfSubsystemsWithRcNotLessThanOne" value="100"/>
<lower-threshold name="Project.PercentageOfPackagesWithRcNotLessThanOne" value="70"/>
<lower-threshold name="Project.NumberOfDefinedPackageDependencies" value="0"/>
<lower-threshold name="Project.AverageNumberOfAssertionsPerProjectInternalClass" value="5"/>
<lower-threshold name="Project.NumberOfProjectInternalTypes" value="1"/>
<upper-threshold name="Project.NumberOfProjectExternalSubsystems" value="5"/>
<upper-threshold name="Project.NumberOfProjectExternalLayers" value="1"/>
<upper-threshold name="Project.NumberOfNotImplementedSubsystems" value="0"/>
<upper-threshold name="Project.ACD" value="13.65"/>
<upper-threshold name="Project.LayerCyclesExist" value="0"/>
<upper-threshold name="Project.SubsystemCyclesExist" value="0"/>
<upper-threshold name="Project.PackageCyclesExist" value="0"/>
<upper-threshold name="Project.MaxDepthOfPackageHierarchy" value="7"/>
<upper-threshold name="Project.NumberOfProjectExternalPackages" value="7"/>
<upper-threshold name="Project.NumberOfNotAssignedPackages" value="0"/>
<upper-threshold name="Project.NumberOfForbiddenEfferentPackageDependencies" value="0"/>
<upper-threshold name="Project.CompilationUnitCyclesExist" value="0"/>
<upper-threshold name="Project.TypeCyclesExist" value="0"/>
<upper-threshold name="Project.MaxDepthOfInheritance" value="5"/>
<layer name="user-interface">
<description>Contains the entry point to the application and renders the analysis output</description>
<subsystem name="console">
<description>Provides the console based user interface</description>
<include-package name="de.valtech.dependometer.ui.console.*"/>
<depends-upon name="application::core"/>
<depends-upon name="application::controller"/>
<depends-upon name="application-general::command-line-parser"/>
<depends-upon name="application-general::utilities"/>
<depends-upon name="external::reflection"/>
<depends-upon name="external::logging"/>
</subsystem>
<depends-upon name="application"/>
<depends-upon name="application-general"/>
<depends-upon name="external"/>
</layer>
<layer name="application">
<description>Dependometer analysis functionality with standard configuration and type definition providers</description>
<subsystem name="controller">
<description>
Interpret the analysis feedback from specific dependency elements and dispatch events
</description>
<include-package name="de.valtech.dependometer.app.controller.*"/>
<exclude-package name=".*specialclient.*"/>
<depends-upon name="application::core"/>
<depends-upon name="application-general::event-framework"/>
<depends-upon name="application-general::utilities"/>
<depends-upon name="external::logging"/>
</subsystem>
<subsystem name="core">
<description>
Core dependometer functionality with definition of elements like layer, subsystem, ...
</description>
<include-package name="de.valtech.dependometer.app.core.dependencyanalysis"/>
<include-package name="de.valtech.dependometer.app.core.elements"/>
<include-package name="de.valtech.dependometer.app.core.metrics"/>
<include-package name="de.valtech.dependometer.app.core.provider"/>
<include-package name="de.valtech.dependometer.app.core.queryinfo"/>
<depends-upon name="application-general::utilities"/>
<depends-upon name="external::test-support"/>
<depends-upon name="external::xml-processing"/>
<depends-upon name="external::logging"/>
</subsystem>
<subsystem name="configuration-provider">
<description>Standard configuration provider - reads input from an xml configuration file</description>
<include-package name="de.valtech.dependometer.app.configprovider.*"/>
<depends-upon name="application::core"/>
<depends-upon name="application-general::utilities"/>
<depends-upon name="external::xml-processing"/>
<depends-upon name="external::logging"/>
</subsystem>
<subsystem name="typedefinition-provider">
<description>Standard type definition provider - reads type definitions from java class and source files</description>
<include-package name="de.valtech.dependometer.app.typedefprovider.*"/>
<depends-upon name="application::core"/>
<depends-upon name="application-general::utilities"/>
<depends-upon name="external::logging"/>
<depends-upon name="external::bytecode-analysis"/>
</subsystem>
<depends-upon name="application-general"/>
<depends-upon name="external"/>
</layer>
<layer name="application-general">
<description>Contains a broad range of utility types that do not have dependencies to types from other layers</description>
<subsystem name="event-framework">
<description>Framework for event definition and dispatching</description>
<include-package name="de.valtech.ag.evf.*"/>
<depends-upon name="external::javadoc"/>
<depends-upon name="external::logging"/>
</subsystem>
<subsystem name="command-line-parser">
<description>Framework that provides functionality for parsing command line arguments</description>
<include-package name="de.valtech.ag.cla"/>
<depends-upon name="external::logging"/>
</subsystem>
<subsystem name="utilities">
<description>Low level utility types</description>
<include-package name="de.valtech.ag.util"/>
</subsystem>
<depends-upon name="external"/>
</layer>
<layer name="external">
<description>APIs that do not belong to the project</description>
<subsystem name="reflection">
<include-package name="java.lang.reflect.*"/>
</subsystem>
<subsystem name="test-support">
<include-package name="junit.*"/>
</subsystem>
<subsystem name="xml-processing">
<include-package name="javax.xml.parsers.*"/>
<include-package name="org.xml.sax.*"/>
</subsystem>
<subsystem name="javadoc">
<include-package name="com.sun.javadoc.*"/>
</subsystem>
<subsystem name="logging">
<include-package name="org.apache.log4j.*"/>
</subsystem>
<subsystem name="bytecode-analysis">
<include-package name="org.objectweb.asm.*"/>
</subsystem>
</layer>
</project>