Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • teetime/teetime
  • nts/teetime
  • mne/teetime
3 results
Show changes
Commits on Source (1102)
Showing
with 869 additions and 1305 deletions
<?xml version="1.0" encoding="UTF-8"?>
<fileset-config file-format-version="1.2.0" simple-config="true" sync-formatter="false">
<local-check-config name="TeeTime" location="conf/quality-config/cs-conf.xml" type="project" description="">
<local-check-config name="teetime-cs" location="conf/quality-config/cs-conf.xml" type="project" description="">
<additional-data name="protect-config-file" value="false"/>
</local-check-config>
<local-check-config name="maven-checkstyle-plugin default" location="file:/C:/Users/chw/Repositories/teetime/conf/quality-config/cs-conf.xml" type="remote" description="maven-checkstyle-plugin configuration default">
<property name="checkstyle.cache.file" value="${project_loc}/target/checkstyle-cachefile"/>
<property name="checkstyle.header.file" value="C:\Users\chw\Repositories\teetime\target\checkstyle-header-default.txt"/>
</local-check-config>
<fileset name="all" enabled="true" check-config-name="TeeTime" local="true">
<fileset name="all" enabled="true" check-config-name="teetime-cs" local="true">
<file-match-pattern match-pattern="." include-pattern="true"/>
</fileset>
<filter name="WriteProtectedFiles" enabled="true"/>
</fileset-config>
......@@ -12,17 +12,31 @@
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" output="target/test-classes" path="src/integration-test/java">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6">
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry including="**/*.java" kind="src" path="src/main/resources"/>
<classpathentry including="**/*.java" kind="src" path="src/test/resources"/>
<classpathentry kind="output" path="target/classes"/>
</classpath>
/bin
/target
# Mac OS
.DS_Store
.AppleDouble
.LSOverride
# TeeTime specific
src/test/resources/data/output.txt
teetime.log
src/main/resources/hugetext.txt
# Java
*.class
# Mobile Tools for Java (J2ME)
.mtj.tmp/
# Package Files #
*.war
*.ear
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
# Maven
target/
pom.xml.tag
pom.xml.releaseBackup
pom.xml.versionsBackup
pom.xml.next
release.properties
dependency-reduced-pom.xml
buildNumber.properties
.mvn/timing.properties
*.pydevproject
.metadata
.gradle
bin/
tmp/
*.tmp
*.bak
*.swp
*~.nib
local.properties
.settings/
.loadpath
/.checkstyle
[submodule "src/site/markdown/wiki"]
path = src/site/markdown/wiki
url = gitlab@build.se.informatik.uni-kiel.de:chw/teetime.wiki.git
......@@ -11,12 +11,17 @@
</arguments>
</buildCommand>
<buildCommand>
<name>edu.umd.cs.findbugs.plugin.eclipse.findbugsBuilder</name>
<name>net.sourceforge.pmd.eclipse.plugin.pmdBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>net.sourceforge.pmd.eclipse.plugin.pmdBuilder</name>
<name>net.sf.eclipsecs.core.CheckstyleBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>net.sourceforge.metrics.builder</name>
<arguments>
</arguments>
</buildCommand>
......@@ -27,9 +32,10 @@
</buildCommand>
</buildSpec>
<natures>
<nature>net.sf.eclipsecs.core.CheckstyleNature</nature>
<nature>org.eclipse.m2e.core.maven2Nature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>edu.umd.cs.findbugs.plugin.eclipse.findbugsNature</nature>
<nature>net.sourceforge.pmd.eclipse.plugin.pmdNature</nature>
<nature>net.sourceforge.metrics.nature</nature>
</natures>
</projectDescription>
#FindBugs User Preferences
#Mon May 04 12:38:24 CEST 2015
detector_threshold=3
#Thu Dec 14 15:34:10 CET 2017
cloud_id=edu.umd.cs.findbugs.cloud.doNothingCloud
detectorAppendingToAnObjectOutputStream=AppendingToAnObjectOutputStream|true
detectorAtomicityProblem=AtomicityProblem|true
detectorBadAppletConstructor=BadAppletConstructor|false
detectorBadResultSetAccess=BadResultSetAccess|true
detectorBadSyntaxForRegularExpression=BadSyntaxForRegularExpression|true
detectorBadUseOfReturnValue=BadUseOfReturnValue|true
detectorBadlyOverriddenAdapter=BadlyOverriddenAdapter|true
detectorBooleanReturnNull=BooleanReturnNull|true
detectorCallToUnsupportedMethod=CallToUnsupportedMethod|false
detectorCheckExpectedWarnings=CheckExpectedWarnings|false
detectorCheckImmutableAnnotation=CheckImmutableAnnotation|true
detectorCheckRelaxingNullnessAnnotation=CheckRelaxingNullnessAnnotation|true
detectorCheckTypeQualifiers=CheckTypeQualifiers|true
detectorCloneIdiom=CloneIdiom|true
detectorComparatorIdiom=ComparatorIdiom|true
detectorConfusedInheritance=ConfusedInheritance|true
detectorConfusionBetweenInheritedAndOuterMethod=ConfusionBetweenInheritedAndOuterMethod|true
detectorCovariantArrayAssignment=CovariantArrayAssignment|false
detectorCrossSiteScripting=CrossSiteScripting|true
detectorDefaultEncodingDetector=DefaultEncodingDetector|true
detectorDoInsideDoPrivileged=DoInsideDoPrivileged|true
detectorDontCatchIllegalMonitorStateException=DontCatchIllegalMonitorStateException|true
detectorDontIgnoreResultOfPutIfAbsent=DontIgnoreResultOfPutIfAbsent|true
detectorDontUseEnum=DontUseEnum|true
detectorDroppedException=DroppedException|true
detectorDumbMethodInvocations=DumbMethodInvocations|true
detectorDumbMethods=DumbMethods|true
detectorDuplicateBranches=DuplicateBranches|true
detectorEmptyZipFileEntry=EmptyZipFileEntry|false
detectorEqualsOperandShouldHaveClassCompatibleWithThis=EqualsOperandShouldHaveClassCompatibleWithThis|true
detectorExplicitSerialization=ExplicitSerialization|true
detectorFinalizerNullsFields=FinalizerNullsFields|true
detectorFindBadCast2=FindBadCast2|true
detectorFindBadForLoop=FindBadForLoop|true
detectorFindCircularDependencies=FindCircularDependencies|false
detectorFindComparatorProblems=FindComparatorProblems|true
detectorFindDeadLocalStores=FindDeadLocalStores|true
detectorFindDoubleCheck=FindDoubleCheck|true
detectorFindEmptySynchronizedBlock=FindEmptySynchronizedBlock|true
detectorFindFieldSelfAssignment=FindFieldSelfAssignment|true
detectorFindFinalizeInvocations=FindFinalizeInvocations|true
detectorFindFloatEquality=FindFloatEquality|true
detectorFindHEmismatch=FindHEmismatch|true
detectorFindInconsistentSync2=FindInconsistentSync2|true
detectorFindJSR166LockMonitorenter=FindJSR166LockMonitorenter|true
detectorFindLocalSelfAssignment2=FindLocalSelfAssignment2|true
detectorFindMaskedFields=FindMaskedFields|true
detectorFindMismatchedWaitOrNotify=FindMismatchedWaitOrNotify|true
detectorFindNakedNotify=FindNakedNotify|true
detectorFindNonShortCircuit=FindNonShortCircuit|true
detectorFindNullDeref=FindNullDeref|true
detectorFindNullDerefsInvolvingNonShortCircuitEvaluation=FindNullDerefsInvolvingNonShortCircuitEvaluation|true
detectorFindOpenStream=FindOpenStream|true
detectorFindPuzzlers=FindPuzzlers|true
detectorFindRefComparison=FindRefComparison|true
detectorFindReturnRef=FindReturnRef|true
detectorFindRoughConstants=FindRoughConstants|true
detectorFindRunInvocations=FindRunInvocations|true
detectorFindSelfComparison=FindSelfComparison|true
detectorFindSelfComparison2=FindSelfComparison2|true
detectorFindSleepWithLockHeld=FindSleepWithLockHeld|true
detectorFindSpinLoop=FindSpinLoop|true
detectorFindSqlInjection=FindSqlInjection|true
detectorFindTwoLockWait=FindTwoLockWait|true
detectorFindUncalledPrivateMethods=FindUncalledPrivateMethods|true
detectorFindUnconditionalWait=FindUnconditionalWait|true
detectorFindUninitializedGet=FindUninitializedGet|true
detectorFindUnrelatedTypesInGenericContainer=FindUnrelatedTypesInGenericContainer|true
detectorFindUnreleasedLock=FindUnreleasedLock|true
detectorFindUnsatisfiedObligation=FindUnsatisfiedObligation|true
detectorFindUnsyncGet=FindUnsyncGet|true
detectorFindUseOfNonSerializableValue=FindUseOfNonSerializableValue|true
detectorFindUselessControlFlow=FindUselessControlFlow|true
detectorFindUselessObjects=FindUselessObjects|true
detectorFormatStringChecker=FormatStringChecker|true
detectorHugeSharedStringConstants=HugeSharedStringConstants|true
detectorIDivResultCastToDouble=IDivResultCastToDouble|true
detectorIncompatMask=IncompatMask|true
detectorInconsistentAnnotations=InconsistentAnnotations|true
detectorInefficientIndexOf=InefficientIndexOf|false
detectorInefficientInitializationInsideLoop=InefficientInitializationInsideLoop|false
detectorInefficientMemberAccess=InefficientMemberAccess|false
detectorInefficientToArray=InefficientToArray|false
detectorInfiniteLoop=InfiniteLoop|true
detectorInfiniteRecursiveLoop=InfiniteRecursiveLoop|true
detectorInheritanceUnsafeGetResource=InheritanceUnsafeGetResource|true
detectorInitializationChain=InitializationChain|true
detectorInitializeNonnullFieldsInConstructor=InitializeNonnullFieldsInConstructor|true
detectorInstantiateStaticClass=InstantiateStaticClass|true
detectorIntCast2LongAsInstant=IntCast2LongAsInstant|true
detectorInvalidJUnitTest=InvalidJUnitTest|true
detectorIteratorIdioms=IteratorIdioms|true
detectorLazyInit=LazyInit|true
detectorLoadOfKnownNullValue=LoadOfKnownNullValue|true
detectorLostLoggerDueToWeakReference=LostLoggerDueToWeakReference|true
detectorMethodReturnCheck=MethodReturnCheck|true
detectorMultithreadedInstanceAccess=MultithreadedInstanceAccess|true
detectorMutableEnum=MutableEnum|true
detectorMutableLock=MutableLock|true
detectorMutableStaticFields=MutableStaticFields|true
detectorNaming=Naming|true
detectorNoteUnconditionalParamDerefs=NoteUnconditionalParamDerefs|true
detectorNumberConstructor=NumberConstructor|true
detectorOptionalReturnNull=OptionalReturnNull|true
detectorOverridingEqualsNotSymmetrical=OverridingEqualsNotSymmetrical|true
detectorPreferZeroLengthArrays=PreferZeroLengthArrays|true
detectorPublicSemaphores=PublicSemaphores|false
detectorQuestionableBooleanAssignment=QuestionableBooleanAssignment|true
detectorReadOfInstanceFieldInMethodInvokedByConstructorInSuperclass=ReadOfInstanceFieldInMethodInvokedByConstructorInSuperclass|true
detectorReadReturnShouldBeChecked=ReadReturnShouldBeChecked|true
detectorRedundantConditions=RedundantConditions|true
detectorRedundantInterfaces=RedundantInterfaces|true
detectorRepeatedConditionals=RepeatedConditionals|true
detectorRuntimeExceptionCapture=RuntimeExceptionCapture|true
detectorSerializableIdiom=SerializableIdiom|true
detectorStartInConstructor=StartInConstructor|true
detectorStaticCalendarDetector=StaticCalendarDetector|true
detectorStringConcatenation=StringConcatenation|true
detectorSuperfluousInstanceOf=SuperfluousInstanceOf|true
detectorSuspiciousThreadInterrupted=SuspiciousThreadInterrupted|true
detectorSwitchFallthrough=SwitchFallthrough|true
detectorSynchronizationOnSharedBuiltinConstant=SynchronizationOnSharedBuiltinConstant|true
detectorSynchronizeAndNullCheckField=SynchronizeAndNullCheckField|true
detectorSynchronizeOnClassLiteralNotGetClass=SynchronizeOnClassLiteralNotGetClass|true
detectorSynchronizingOnContentsOfFieldToProtectField=SynchronizingOnContentsOfFieldToProtectField|true
detectorURLProblems=URLProblems|true
detectorUncallableMethodOfAnonymousClass=UncallableMethodOfAnonymousClass|true
detectorUnnecessaryMath=UnnecessaryMath|true
detectorUnreadFields=UnreadFields|true
detectorUselessSubclassMethod=UselessSubclassMethod|false
detectorVarArgsProblems=VarArgsProblems|true
detectorVolatileUsage=VolatileUsage|true
detectorWaitInLoop=WaitInLoop|true
detectorWrongMapIterator=WrongMapIterator|true
detectorXMLFactoryBypass=XMLFactoryBypass|true
detector_threshold=2
effort=max
excludefilter0=.fbExcludeFilterFile|true
filter_settings=Low|BAD_PRACTICE,CORRECTNESS,EXPERIMENTAL,I18N,MALICIOUS_CODE,MT_CORRECTNESS,PERFORMANCE,SECURITY,STYLE|false|15
filter_settings=Medium|BAD_PRACTICE,CORRECTNESS,EXPERIMENTAL,I18N,MALICIOUS_CODE,MT_CORRECTNESS,PERFORMANCE,SECURITY,STYLE|false|15
filter_settings_neg=NOISE|
run_at_full_build=true
eclipse.preferences.version=1
encoding//src/integration-test/java=UTF-8
encoding//src/main/java=UTF-8
encoding//src/main/resources=UTF-8
encoding//src/test/java=UTF-8
......
......@@ -7,9 +7,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nul
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
org.eclipse.jdt.core.compiler.compliance=1.6
org.eclipse.jdt.core.compiler.compliance=1.8
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
......@@ -97,7 +97,7 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
org.eclipse.jdt.core.compiler.source=1.6
org.eclipse.jdt.core.compiler.source=1.8
org.eclipse.jdt.core.compiler.taskCaseSensitive=enabled
org.eclipse.jdt.core.compiler.taskPriorities=NORMAL,HIGH,NORMAL,LOW
org.eclipse.jdt.core.compiler.taskTags=TODO,FIXME,XXX,BETTER
......
......@@ -63,8 +63,8 @@ formatter_profile=_TeeTime - Formatter
formatter_settings_version=12
org.eclipse.jdt.ui.ignorelowercasenames=true
org.eclipse.jdt.ui.importorder=java;javax;junit;org;com;kieker;kieker.test;
org.eclipse.jdt.ui.ondemandthreshold=99
org.eclipse.jdt.ui.staticondemandthreshold=99
org.eclipse.jdt.ui.ondemandthreshold=5
org.eclipse.jdt.ui.staticondemandthreshold=1
sp_cleanup.add_default_serial_version_id=true
sp_cleanup.add_generated_serial_version_id=false
sp_cleanup.add_missing_annotations=true
......
language: java
branches:
except:
- gh-pages
\ No newline at end of file
<!DOCTYPE aspectj PUBLIC "-//AspectJ//DTD//EN" "http://www.aspectj.org/dtd/aspectj_1_5_0.dtd">
<aspectj>
<weaver options="-showWeaveInfo"> <!-- options="-verbose -showWeaveInfo -Xjoinpoints:synchronization" -->
<!--
Use the exclude/include directives to specify which classes are (not) to be considered for weaving.
Some examples are given below. Please refer to the AspectJ documentation to learn more on the
allowed patterns, including wildcards.
-->
<!--
Use * to consider all classes in all packages. In this case, you typically need some additional excludes.
-->
<include within="teetime.stage..*"/>
<!--
Include/exclude examples for specific libraries:
-->
<!--
Important: The logger library that is configured to be used by Kieker must always be excluded!
(Particularly important when using the include-all directive from above.)
-->
<exclude within="org.apache.commons.logging..*" />
<exclude within="org.slf4j..*" />
<exclude within="java.util.logging..*" />
<exclude within="org.apache.log4j..*" />
<!-- Instrument all kieker.tests: -->
<!-- <include within="kieker.tests..*" /> -->
<!-- Example instrumentation for the iBATIS JPetStore -->
<!-- <include within="com.ibatis.jpetstore..*"/> -->
<!-- <include within="org.apache.struts.action.ActionServlet" /> -->
<!-- Include this to enable javac compilation (instead of ajc) of the probes: -->
<!-- <include within="kieker.monitoring.probe.aspectj..*"/> -->
</weaver>
<aspects>
<!--
Aspects are configured in this section of the AspectJ configuration file.
Specific examples for Kieker monitoring aspects are given below.
Usually, only one aspect should be active at a time.
-->
<!-- 1. STATE-BASED MONITORING (OPERATION EXECUTIONS)
The following directives enable aspects for monitoring operation executions. These aspects intercept
an execution of a software operation resulting in a single Kieker monitoring record of type
OperationExecutionRecord.
Depending on the used directives, i. all, ii. only annotated (@OperationExecutionMonitoringProbe),
or ii. only specific methods are monitored. Note that the noGetterAndSetter aspects also exclude
is..() methods for boolean getters. The Servlet aspects additionally extract session information
from Servlet entry point methods (do* with HttpServletRequest and HttpServletResponse parameters.)
-->
<!-- <aspect name="kieker.monitoring.probe.aspectj.operationExecution.OperationExecutionAspectAnnotation"/> -->
<!-- <aspect name="kieker.monitoring.probe.aspectj.operationExecution.OperationExecutionAspectAnnotationServlet"/> -->
<!-- <aspect name="kieker.monitoring.probe.aspectj.operationExecution.OperationExecutionAspectFull"/> -->
<!-- <aspect name="kieker.monitoring.probe.aspectj.operationExecution.OperationExecutionAspectFullNoGetterAndSetter"/> -->
<!-- <aspect name="kieker.monitoring.probe.aspectj.operationExecution.OperationExecutionAspectFullServlet"/> -->
<!-- <aspect name="kieker.monitoring.probe.aspectj.operationExecution.OperationExecutionAspectFullNoGetterAndSetterServlet"/> -->
<!-- 2. EVENT-BASED MONITORING
The following directives enable aspects for monitoring control flow events, resulting in different
types of monitoring records to be found in the kieker.common.record.flow package.
Depending on the used directives, i. all, ii. only annotated, or iii. only specific methods are
monitored. Again, the noGetterAndSetter aspects also exclude is.. for boolean getters.
-->
<!-- Concurrency (beta stated): -->
<!-- <aspect name="kieker.monitoring.probe.aspectj.flow.concurrency.ThreadingAspect" /> -->
<!-- <aspect name="kieker.monitoring.probe.aspectj.flow.concurrency.SynchronizedAspect" /> -->
<!-- Constructors and constructor calls: -->
<!-- <aspect name="kieker.monitoring.probe.aspectj.flow.construction.FullInstrumentation" /> -->
<!-- <aspect name="kieker.monitoring.probe.aspectj.flow.construction.Annotation" /> -->
<!-- <aspect name="kieker.monitoring.probe.aspectj.flow.constructorExecution.FullInstrumentation" /> -->
<!-- <aspect name="kieker.monitoring.probe.aspectj.flow.constructorExecution.Annotation" /> -->
<!-- <aspect name="kieker.monitoring.probe.aspectj.flow.constructorExecutionObject.FullInstrumentation" /> -->
<!-- <aspect name="kieker.monitoring.probe.aspectj.flow.constructorExecutionObject.Annotation" /> -->
<!-- <aspect name="kieker.monitoring.probe.aspectj.flow.constructorExecutionObjectInterface.FullInstrumentation" /> -->
<!-- <aspect name="kieker.monitoring.probe.aspectj.flow.constructorExecutionObjectInterface.Annotation" /> -->
<!-- <aspect name="kieker.monitoring.probe.aspectj.flow.constructorCall.FullInstrumentation" /> -->
<!-- <aspect name="kieker.monitoring.probe.aspectj.flow.constructorCall.Annotation" /> -->
<!-- <aspect name="kieker.monitoring.probe.aspectj.flow.constructorCallObject.FullInstrumentation" /> -->
<!-- <aspect name="kieker.monitoring.probe.aspectj.flow.constructorCallObject.Annotation" /> -->
<!-- Method executions and method calls: -->
<!-- <aspect name="kieker.monitoring.probe.aspectj.flow.operationExecution.FullInstrumentation" /> -->
<!-- <aspect name="kieker.monitoring.probe.aspectj.flow.operationExecution.FullInstrumentationNoGetterAndSetter" /> -->
<!-- <aspect name="kieker.monitoring.probe.aspectj.flow.operationExecution.Annotation" /> -->
<!-- <aspect name="kieker.monitoring.probe.aspectj.flow.operationExecutionObject.FullInstrumentation" /> -->
<!-- <aspect name="kieker.monitoring.probe.aspectj.flow.operationExecutionObject.FullInstrumentationNoGetterAndSetter" /> -->
<!-- <aspect name="kieker.monitoring.probe.aspectj.flow.operationExecutionObject.Annotation" /> -->
<!-- <aspect name="kieker.monitoring.probe.aspectj.flow.operationExecutionObjectInterface.FullInstrumentation" /> -->
<!-- <aspect name="kieker.monitoring.probe.aspectj.flow.operationExecutionObjectInterface.FullInstrumentationNoGetterAndSetter" /> -->
<!-- <aspect name="kieker.monitoring.probe.aspectj.flow.operationExecutionObjectInterface.Annotation" /> -->
<!-- <aspect name="kieker.monitoring.probe.aspectj.flow.operationCall.FullInstrumentation" /> -->
<!-- <aspect name="kieker.monitoring.probe.aspectj.flow.operationCall.FullInstrumentationNoGetterAndSetter" /> -->
<!-- <aspect name="kieker.monitoring.probe.aspectj.flow.operationCall.Annotation" /> -->
<!-- <aspect name="kieker.monitoring.probe.aspectj.flow.operationCallObject.FullInstrumentation" /> -->
<!-- <aspect name="kieker.monitoring.probe.aspectj.flow.operationCallObject.FullInstrumentationNoGetterAndSetter" /> -->
<!-- <aspect name="kieker.monitoring.probe.aspectj.flow.operationCallObject.Annotation" /> -->
<!--
Definition of additional targeted aspects (example for a single additional getter).
Use these directives to create additional aspects without the need to actually implement them. -->
<!--<concrete-aspect name="kieker.monitoring.probe.aspectj.flow.operationExecution.TargetedAspect" extends="kieker.monitoring.probe.aspectj.flow.operationExecution.AbstractAspect">-->
<concrete-aspect name="MyTargetedAspect" extends="kieker.monitoring.probe.aspectj.beforeafter.onlycallee.AbstractAspect">
<!-- <pointcut name="monitoredOperation" expression="execution(* teetime.framework.Stage+.execute())" /> -->
<!-- <pointcut name="monitoredOperation" expression="call(* teetime.framework.OutputPort.send(..))" /> -->
<!--<pointcut name="a" expression="execution(* teetime.stage.string.Tokenizer.execute(..))" />-->
<pointcut name="a" expression="execution(* teetime.stage.io.ByteArrayFileWriter.execute(..))" />
<pointcut name="b" expression="execution(* teetime.stage.ZipByteArray.execute(..))" />
<pointcut name="c" expression="execution(* teetime.stage.MappingCounter.execute(..))" />
<pointcut name="monitoredOperation" expression="a() || b() || c()" />
</concrete-aspect>
</aspects>
</aspectj>
## In order to use a custom Kieker.Monitoring configuration, create a copy of
## this file and modify it according to your needs.
##
## The location of the file is passed to Kieker.Monitoring via the JVM parameter
## kieker.monitoring.configuration. For example, with a configuration file named
## my.kieker.monitoring.properties in the folder META-INF you would pass this location
## to the JVM when starting your application:
##
## java -Dkieker.monitoring.configuration=META-INF/my.kieker.monitoring.properties [...]
##
## If no configuration file is passed, Kieker tries to use a configuration file in
## META-INF/kieker.monitoring.properties
## If this also fails, a default configuration is being used according to the values in
## this default file.
## The name of the Kieker instance.
kieker.monitoring.name=KIEKER
## Whether a debug mode is activated.
## This changes a few internal id generation mechanisms to enable
## easier debugging. Additionally, it is possible to enable debug
## logging in the settings of the used logger.
## This setting should usually not be set to true.
kieker.monitoring.debug=false
## Enable/disable monitoring after startup (true|false; default: true)
## If monitoring is disabled, the MonitoringController simply pauses.
## Furthermore, probes should stop collecting new data and monitoring
## writers stop should stop writing existing data.
kieker.monitoring.enabled=true
## The name of the VM running Kieker. If empty the name will be determined
## automatically, else it will be set to the given value.
kieker.monitoring.hostname=
## The initial ID associated with all experiments. (currently not used)
kieker.monitoring.initialExperimentId=1
## Automatically add a metadata record to the monitoring log when writing
## the first monitoring record. The metadata record contains infromation
## on the configuration of the monitoring controller.
kieker.monitoring.metadata=true
## Enables/disable the automatic assignment of each record's logging timestamp.
## (true|false; default: true)
kieker.monitoring.setLoggingTimestamp=true
## Whether a shutdown hook should be registered.
## This ensures that necessary cleanup steps are finished and no
## information is lost due to asynchronous writers.
## This should usually not be set to false.
kieker.monitoring.useShutdownHook=true
## Whether any JMX functionality is available
kieker.monitoring.jmx=false
kieker.monitoring.jmx.domain=kieker.monitoring
## Enable/Disable the MonitoringController MBean
kieker.monitoring.jmx.MonitoringController=true
kieker.monitoring.jmx.MonitoringController.name=MonitoringController
## Controls JMX remote access
kieker.monitoring.jmx.remote=false
kieker.monitoring.jmx.remote.port=59999
kieker.monitoring.jmx.remote.name=JMXServer
## If the SUN-JMX Bootstrap class is not available, a fallback to the
## default implementation can be used. The fallback solution prevents
## the VM from terminating.
## A graceful shutdown is done by connecting to the JMXServer, there to
## kieker.monitoring.JMXServer and using the operation stop()
kieker.monitoring.jmx.remote.fallback=true
## These properties will be forwarded to configure the JMX server
com.sun.management.jmxremote.local.only=false
com.sun.management.jmxremote.authenticate=false
com.sun.management.jmxremote.ssl=false
## The size of the thread pool used to execute registered periodic sensor jobs.
## The thread pool is also used to periodically read the config file for adaptive
## monitoring.
## Set to 0 to deactivate scheduling.
kieker.monitoring.periodicSensorsExecutorPoolSize=1
## Enable or disable adaptive monitoring.
kieker.monitoring.adaptiveMonitoring.enabled=false
#
## Default location of the adaptive monitoring configuration File
kieker.monitoring.adaptiveMonitoring.configFile=META-INF/kieker.monitoring.adaptiveMonitoring.conf
#
## Enable/disable the updating of the pattern file by activating or deactivating
## probes through the api.
kieker.monitoring.adaptiveMonitoring.updateConfigFile=false
#
## The delay in seconds in which the pattern file is checked for changes.
## Requires kieker.monitoring.periodicSensorsExecutorPoolSize > 0.
## Set to 0 to disable the observation.
kieker.monitoring.adaptiveMonitoring.readInterval=30
#
## The maximal size of the signature cache. This is a weak limit, as the cache can exceed this size
## slightly in practical application.
## Set to -1 for an unbounded cache.
kieker.monitoring.adaptiveMonitoring.maxCacheSize=-1
#
## The behaviour of the signature cache, if the maximal size is bounded.
## 0: The cache ignores entries once the maximal size is reached.
## 1: The cache removes a (semi)random entry from the cache once the maximal size is exceeded.
## 2: The cache is completely cleared once the maximal size is reached.
kieker.monitoring.adaptiveMonitoring.boundedCacheBehaviour=0
###########################
####### TIMER #######
###########################
## Selection of the timer used by Kieker (classname)
## The value must be a fully-qualified classname of a class implementing
## kieker.monitoring.timer.ITimeSource and providing a constructor that
## accepts a single Configuration.
kieker.monitoring.timer=kieker.monitoring.timer.SystemNanoTimer
####
#kieker.monitoring.timer=kieker.monitoring.timer.SystemMilliTimer
#
## A timer with millisecond precision.
#
## The offset of the timer. The time returned is since 1970-1-1
## minus this offset. If the offset is empty it is set to the current
## time.
## The offset must be specified in milliseconds.
kieker.monitoring.timer.SystemMilliTimer.offset=0
## The timeunit used to report the timestamp.
## Accepted values:
## 0 - nanoseconds
## 1 - microseconds
## 2 - milliseconds
## 3 - seconds
kieker.monitoring.timer.SystemMilliTimer.unit=0
####
#kieker.monitoring.timer=kieker.monitoring.timer.SystemNanoTimer
#
## A timer with nanosecond precision.
#
## The offset of the timer. The time returned is since 1970-1-1
## minus this offset. If the offset is empty it is set to the current
## time.
## The offset must be specified in milliseconds.
kieker.monitoring.timer.SystemNanoTimer.offset=0
## The timeunit used to report the timestamp.
## Accepted values:
## 0 - nanoseconds
## 1 - microseconds
## 2 - milliseconds
## 3 - seconds
kieker.monitoring.timer.SystemNanoTimer.unit=0
###########################
####### WRITER #######
###########################
## Selection of monitoring data writer (classname)
## The value must be a fully-qualified classname of a class implementing
## kieker.monitoring.writer.IMonitoringWriter and providing a constructor that
## accepts a single Configuration.
kieker.monitoring.writer=kieker.monitoring.writer.filesystem.AsciiFileWriter
#####
#kieker.monitoring.writer=kieker.monitoring.writer.dump.DumpWriter
#
#####
#kieker.monitoring.writer=kieker.monitoring.writer.PrintStreamWriter
#
## The PrintStream used to print the monitoring records.
## Either STDOUT or STDERR.
## Other values are used as a filenames for a target log file.
## You should use another writer instead of this writer for logging to files!
kieker.monitoring.writer.PrintStreamWriter.Stream=STDOUT
#####
#kieker.monitoring.writer=kieker.monitoring.writer.namedRecordPipe.PipeWriter
#
## The name of the pipe used (must not be empty).
kieker.monitoring.writer.namedRecordPipe.PipeWriter.pipeName=kieker-pipe
#####
#kieker.monitoring.writer=kieker.monitoring.writer.jms.JmsWriter
#
## The url of the jndi provider that knows the jms service
## - ActiveMQ: tcp://127.0.0.1:61616/
## - HornetQ: jnp://localhost:1099/
## - OpenJMS: tcp://127.0.0.1:3035/
kieker.monitoring.writer.jms.JmsWriter.ProviderUrl=tcp://127.0.0.1:61616/
#
## The topic at the jms server which is used in the publisher/subscribe communication.
kieker.monitoring.writer.jms.JmsWriter.Topic=queue1
#
## The type of the jms factory implementation, e.g.
## - ActiveMQ: org.apache.activemq.jndi.ActiveMQInitialContextFactory
## - HornetQ: org.jnp.interfaces.NamingContextFactory
## - OpenJMS: org.exolab.jms.jndi.InitialContextFactory
kieker.monitoring.writer.jms.JmsWriter.ContextFactoryType=org.apache.activemq.jndi.ActiveMQInitialContextFactory
#
## The service name for the jms connection factory.
kieker.monitoring.writer.jms.JmsWriter.FactoryLookupName=ConnectionFactory
#
## The time that a jms message will be kept alive at the jms server before
## it is automatically deleted.
kieker.monitoring.writer.jms.JmsWriter.MessageTimeToLive=10000
#####
#kieker.monitoring.writer=kieker.monitoring.writer.jmx.JMXWriter
#
## The domain used to register the MonitoringLog. If empty, the value
## of "kieker.monitoring.jmx.domain" will be used.
kieker.monitoring.writer.jmx.JMXWriter.domain=
#
## The name of the MonitoringLog in the domain.
kieker.monitoring.writer.jmx.JMXWriter.logname=MonitoringLog
#####
#kieker.monitoring.writer=kieker.monitoring.writer.tcp.TCPWriter
#
## The hostname the TCPWriter connects to.
kieker.monitoring.writer.tcp.TCPWriter.hostname=localhost
#
## The ports the TCPWriter connects to.
kieker.monitoring.writer.tcp.TCPWriter.port1=10133
kieker.monitoring.writer.tcp.TCPWriter.port2=10134
#
## The size of the buffer used by the TCPWriter in bytes.
## Should be large enough to fit at least single string records (> 1KiB).
kieker.monitoring.writer.tcp.TCPWriter.bufferSize=65535
#
## Should each record be immediately sent?
kieker.monitoring.writer.tcp.TCPWriter.flush=false
#####
#kieker.monitoring.writer=kieker.monitoring.writer.tcp.DualSocketTcpWriter
#
## The hostname the DualSocketTcpWriter connects to.
kieker.monitoring.writer.tcp.DualSocketTcpWriter.hostname=localhost
#
## The ports the DualSocketTcpWriter connects to.
kieker.monitoring.writer.tcp.DualSocketTcpWriter.port1=10133
kieker.monitoring.writer.tcp.DualSocketTcpWriter.port2=10134
#
## The size of the buffer used by the DualSocketTcpWriter in bytes.
## Should be large enough to fit at least single string records (> 1KiB).
kieker.monitoring.writer.tcp.DualSocketTcpWriter.bufferSize=65535
#
## Should each record be immediately sent?
kieker.monitoring.writer.tcp.DualSocketTcpWriter.flush=false
#####
#kieker.monitoring.writer=kieker.monitoring.writer.tcp.SingleSocketTcpWriter
#
## The hostname the SingleSocketTcpWriter connects to.
kieker.monitoring.writer.tcp.SingleSocketTcpWriter.hostname=localhost
#
## The ports the SingleSocketTcpWriter connects to.
kieker.monitoring.writer.tcp.SingleSocketTcpWriter.port=10133
#
## The size of the buffer used by the SingleSocketTcpWriter in bytes.
## Should be large enough to fit at least single string records (> 1KiB).
kieker.monitoring.writer.tcp.SingleSocketTcpWriter.bufferSize=65535
#
## Should each record be immediately sent?
kieker.monitoring.writer.tcp.SingleSocketTcpWriter.flush=false
#####
#kieker.monitoring.writer=kieker.monitoring.writer.explorviz.ExplorVizTcpWriter
#
## The hostname the ExplorVizExportWriter connects to.
kieker.monitoring.writer.explorviz.ExplorVizTcpWriter.hostname=localhost
#
## The ports the TCPWriter connects to.
kieker.monitoring.writer.explorviz.ExplorVizTcpWriter.port=10133
#
## The size of the buffer used by the TCPWriter in bytes.
## Should be large enough to fit at least single string records (> 1KiB).
kieker.monitoring.writer.explorviz.ExplorVizTcpWriter.bufferSize=65535
#
## Should each record be immediately sent?
kieker.monitoring.writer.explorviz.ExplorVizTcpWriter.flush=false
#
## The internal synchronized queue implementation to use.
## It must provide a constructor with a single int parameter which represents the queue's (initial) capacity.
## org.jctools.queues.MpscArrayQueue
## java.util.concurrent.LinkedBlockingQueue
## java.util.concurrent.ArrayBlockingQueue
kieker.monitoring.core.controller.WriterController.RecordQueueFQN=org.jctools.queues.MpscArrayQueue
#
## This parameter defines the synchronized queue's (initial) capacity in terms of the number of records.
## Note that the actual capacity can be increased depending on the used queue implementation.
kieker.monitoring.core.controller.WriterController.RecordQueueSize=10000
#
## 0: terminate Monitoring with an error (default)
## 1: writer blocks until queue capacity is available
## 2: writer discards new records until space is available
## Be careful when using the value '1' since then, the asynchronous writer
## is no longer decoupled from the monitored application.
kieker.monitoring.core.controller.WriterController.RecordQueueInsertBehavior=1
kieker.monitoring.writer.filesystem.AsciiFileWriter.customStoragePath=target
#
## The maximal number of entries (records) per created file.
## Must be greater than zero.
kieker.monitoring.writer.filesystem.AsciiFileWriter.maxEntriesInFile=25000
#
## The maximal file size of the generated monitoring log. Older files will be
## deleted if this file size is exceeded. Given in MiB.
## At least one file will always remain, regardless of size!
## Use -1 to ignore this functionality.
kieker.monitoring.writer.filesystem.AsciiFileWriter.maxLogSize=-1
#
## The maximal number of log files generated. Older files will be
## deleted if this number is exceeded.
## At least one file will always remain, regardless of size!
## Use -1 to ignore this functionality.
kieker.monitoring.writer.filesystem.AsciiFileWriter.maxLogFiles=-1
#
## When flushing is disabled, it could require a lot of records before
## finally any writing to the log file(s) is done.
kieker.monitoring.writer.filesystem.AsciiFileWriter.flush=true
#
## When flushing is disabled, it could require a lot of records before
## finally any writing to the map file is done.
kieker.monitoring.writer.filesystem.AsciiFileWriter.flushMapfile=true
#
## When compression is enabled, each log file is written as zipped ASCII file.
kieker.monitoring.writer.filesystem.AsciiFileWriter.shouldCompress=false
#
## Sets the compression level. The only valid values are:
## -1: default compression
## 0: no compression
## 1-9: from best speed to best compression
#kieker.monitoring.writer.filesystem.AsciiFileWriter.compressionLevel=-1
#
## The maximal number of entries (records) per created file.
## Must be greater than zero.
kieker.monitoring.writer.filesystem.BinaryFileWriter.maxEntriesInFile=25000
#
## The maximal file size of the generated monitoring log. Older files will be
## deleted if this file size is exceeded. Given in MiB.
## At least one file will always remain, regardless of size!
## Use -1 to ignore this functionality.
kieker.monitoring.writer.filesystem.BinaryFileWriter.maxLogSize=-1
#
## The maximal number of log files generated. Older files will be
## deleted if this number is exceeded.
## At least one file will always remain, regardless of size!
## Use -1 to ignore this functionality.
kieker.monitoring.writer.filesystem.BinaryFileWriter.maxLogFiles=-1
#
## When flushing is disabled, it could require a lot of records before
## finally any writing to the log file(s) is done.
kieker.monitoring.writer.filesystem.BinaryFileWriter.flush=false
#
## When flushing is disabled, it could require a lot of records before
## finally any writing to the map file is done.
kieker.monitoring.writer.filesystem.BinaryFileWriter.flushMapfile=true
#
## When flushing is disabled, records are buffered in memory before written.
## This setting configures the size of the used buffer in bytes.
kieker.monitoring.writer.filesystem.BinaryFileWriter.bufferSize=8192
#
## When compression is enabled, each log file is written as zipped binary file.
kieker.monitoring.writer.filesystem.BinaryFileWriter.shouldCompress=false
#
## Sets the compression level. The only valid values are:
## -1: default compression
## 0: no compression
## 1-9: from best speed to best compression
#kieker.monitoring.writer.filesystem.AsciiFileWriter.compressionLevel=-1
java ^
-javaagent:kieker-1.13-SNAPSHOT-aspectj.jar ^
-cp ".;target\*;target\dependency\*;" ^
teetime.examples.cipher.CipherTest ^
4 1 target\classes\hugetext.txt
rem teetime.examples.wordcounter.WordCounterTest
\ No newline at end of file
[![GitHub license](https://img.shields.io/github/license/teetime-framework/TeeTime.svg)](https://github.com/teetime-framework/TeeTime/blob/master/LICENSE.txt)
[![Javadocs](https://javadoc.io/badge/net.sourceforge.teetime/teetime.svg?color=blue)](https://javadoc.io/doc/net.sourceforge.teetime/teetime)
# TeeTime
This project contains the Java reference implementation of the Pipe-and-Filter framework TeeTime.
Informations on how to use it can be found on http://teetime-framework.github.io.
## Getting Started
- [Wiki](https://teetime-framework.github.io/wiki/home.html)
- [Source Code Examples](https://github.com/teetime-framework/TeeTime/tree/master/src/test/java/teetime/examples)
## How to Add TeeTime as Dependency to Your Project?
Please visit the download section on our website: http://teetime-framework.github.io/download.html
## Build TeeTime by Yourself
TeeTime requires an existing Maven and JDK installation.
Simply execute "mvn install" and you are good to go!
refactored
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE module PUBLIC
"-//Puppy Crawl//DTD Check Configuration 1.3//EN"
"http://www.puppycrawl.com/dtds/configuration_1_3.dtd">
<!DOCTYPE module PUBLIC "-//Puppy Crawl//DTD Check Configuration 1.3//EN" "http://www.puppycrawl.com/dtds/configuration_1_3.dtd">
<module name="Checker">
<!-- <property name="checkstyle.ignoreCustomKieker" value=""/> -->
<!-- KIEKER default is warning instead of error -->
<property name="severity" value="error"/>
<!-- KIEKER Filter -->
<module name="SuppressWithNearbyCommentFilter">
<property name="commentFormat" value="NOCS"/>
<property name="checkFormat" value=".*"/>
<property name="influenceFormat" value="0"/>
</module>
<!--
If you set the basedir property below, then all reported file
names will be relative to the specified directory. See
http://checkstyle.sourceforge.net/5.x/config.html#Checker
<property name="basedir" value="${basedir}"/>
<property name="localeCountry" value=""/> JVM locale country
<property name="localeLanguage" value=""/> JVM locale language
<property name="charset" value=""/> JVM file.encoding property
!-->
<!--
!________________________________________________________________________________________
!
! D U P L I C A T E S
!________________________________________________________________________________________
!-->
<!-- Performs a line-by-line comparison of all code lines and reports duplicate code. !-->
<!-- See http://checkstyle.sf.net/config_duplicates.html !-->
<!-- KIEKER Does not work with headers!!
<module name="StrictDuplicateCode">
<property name="min" value="12"/>
<property name="fileExtensions" value=""/>
</module>
-->
<!--
!________________________________________________________________________________________
!
! H E A D E R S
!________________________________________________________________________________________
!-->
<!-- NOTE: You may enable zero or one of these header checks, but not both. !-->
<!-- Checks that a source file begins with a specified header. !-->
<!-- See http://checkstyle.sf.net/config_header.html !-->
<!-- KIEKER !-->
<!-- <module name="Header"> -->
<!-- <property name="headerFile" value=""/> -->
<!-- <property name="charset" value=""/> -->
<!-- <property name="header" value="/***************************************************************************\n * Copyright 2013 Kieker Project (http://kieker-monitoring.net)\n *\n * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n"/> -->
<!-- <property name="ignoreLines" value="2"/> -->
<!-- <property name="fileExtensions" value="java"/> -->
<!-- </module> -->
<!-- Checks the header of a source file against a header file that contains a regular expression !-->
<!-- for each line of the source header. !-->
<!-- See http://checkstyle.sf.net/config_header.html !-->
<!-- Default: OFF
<module name="RegexpHeader">
<property name="headerFile" value=""/>
<property name="charset" value=""/>
<property name="header" value=""/>
<property name="multiLines" value=""/>
<property name="fileExtensions" value=""/>
</module>
!-->
<!--
!________________________________________________________________________________________
!
! J A V A D O C S
!________________________________________________________________________________________
!-->
<!-- Checks that each Java package has a Javadoc file used for commenting. !-->
<!-- See http://checkstyle.sourceforge.net/config_javadoc.html#JavadocPackage !-->
<!-- KIEKER: OFF
<module name="JavadocPackage">
<property name="severity" value="info"/>
<property name="allowLegacy" value="false"/>
</module>
!-->
<!--
!________________________________________________________________________________________
!
! R E G E X P
!________________________________________________________________________________________
!-->
<!-- A check for detecting that matches across multiple lines. Works with any file type. !-->
<!-- See http://checkstyle.sourceforge.net/config_regexp.html#RegexpMultiline !-->
<!-- Default: OFF
<module name="RegexpMultiline">
<property name="format" value=""/>
<property name="message" value=""/>
<property name="ignoreCase" value="false"/>
<property name="minimum" value="0"/>
<property name="maximum" value="0"/>
<property name="fileExtensions" value=""/>
</module>
!-->
<!-- A check for detecting single lines that match a supplied regular expression. Works with any file type. !-->
<!-- See http://checkstyle.sourceforge.net/config_regexp.html#RegexpSingleline !-->
<!-- Default: OFF
<module name="RegexpSingleline">
<property name="format" value="\s+$"/>
<property name="message" value=""/>
<property name="ignoreCase" value="false"/>
<property name="minimum" value="0"/>
<property name="maximum" value="0"/>
<property name="fileExtensions" value=""/>
</module>
!-->
<!--
!________________________________________________________________________________________
!
! M I S C E L L A N E O U S
!________________________________________________________________________________________
!-->
<!-- Checks whether files end with a new line. !-->
<!-- See http://checkstyle.sf.net/config_misc.html#NewlineAtEndOfFile !-->
<module name="NewlineAtEndOfFile">
<property name="lineSeparator" value="system"/>
<property name="fileExtensions" value="*.*"/>
</module>
<!-- Checks that property files contain the same keys. !-->
<!-- See http://checkstyle.sf.net/config_misc.html#Translation !-->
<module name="Translation">
<property name="fileExtensions" value="properties"/>
</module>
<!--
!________________________________________________________________________________________
!
! S I Z E V I O L A T I O N S
!________________________________________________________________________________________
!-->
<!-- Checks for long source files. !-->
<!-- See http://checkstyle.sf.net/config_sizes.html !-->
<module name="FileLength">
<property name="max" value="2000"/>
<property name="fileExtensions" value="java"/>
</module>
<!--
!________________________________________________________________________________________
!
! W H I T E S P A C E
!________________________________________________________________________________________
!-->
<!-- Checks that there are no tab characters ('\t') in the source code. !-->
<!-- See http://checkstyle.sourceforge.net/config_whitespace.html#FileTabCharacter !-->
<!-- KIEKER we use TABs
<module name="FileTabCharacter">
<property name="eachLine" value="false"/>
<property name="fileExtensions" value=""/>
</module>
-->
<module name="TreeWalker">
<property name="tabWidth" value="4"/>
<module name="FileContentsHolder"/>
<!--
!________________________________________________________________________________________
!
! A N N O T A T I O N S
!________________________________________________________________________________________
!-->
<!-- This check controls the usage style of annotations. !-->
<!-- See http://checkstyle.sourceforge.net/config_annotation.html#AnnotationUseStyle !-->
<module name ="AnnotationUseStyle">
<property name="elementStyle" value="compact_no_array"/>
<property name="closingParens" value="never"/>
<property name="trailingArrayComma" value="never"/>
</module>
<!-- Verifies that both the java.lang.Deprecated import is present and the @deprecated Javadoc tag is present when either is present. !-->
<!-- See http://checkstyle.sourceforge.net/config_annotation.html#MissingDeprecated !-->
<module name="MissingDeprecated">
<property name="severity" value="info"/>
</module>
<!-- Verifies that the java.lang.Override annotation is present when the {@inheritDoc} javadoc tag is present. !-->
<!-- See http://checkstyle.sourceforge.net/config_annotation.html#MissingOverride !-->
<!-- problems with Java 1.5
<module name="MissingOverride">
<property name="javaFiveCompatibility" value="false"/>
</module>
-->
<!-- This check makes sure that all package annotations are in the package-info.java file. !-->
<!-- See http://checkstyle.sourceforge.net/config_annotation.html#PackageAnnotation !-->
<module name="PackageAnnotation"/>
<!-- This check allows you to specify what warnings that SuppressWarnings is not allowed to suppress. !-->
<!-- You can also specify a list of TokenTypes that the configured warning(s) cannot be suppressed on. !-->
<!-- See http://checkstyle.sourceforge.net/config_annotation.html#SuppressWarnings !-->
<module name="SuppressWarnings">
<property name="format" value="^$|^\s+$"/>
<property name="tokens" value="CLASS_DEF, INTERFACE_DEF, ENUM_DEF, ANNOTATION_DEF,
ANNOTATION_FIELD_DEF, ENUM_CONSTANT_DEF, PARAMETER_DEF,
VARIABLE_DEF, METHOD_DEF, CTOR_DEF"/>
</module>
<!--
!________________________________________________________________________________________
!
! B L O C K S
!________________________________________________________________________________________
!-->
<!-- Finds nested blocks, i.e. blocks that are used freely in the code. !-->
<!-- See http://checkstyle.sf.net/config_blocks.html !-->
<module name="AvoidNestedBlocks">
<property name="allowInSwitchCase" value="true"/>
</module>
<!-- Checks for empty blocks. !-->
<!-- See http://checkstyle.sf.net/config_blocks.html !-->
<module name="EmptyBlock">
<property name="option" value="stmt"/>
<property name="tokens" value="LITERAL_DO,
LITERAL_ELSE, LITERAL_FINALLY, LITERAL_IF, LITERAL_FOR,
LITERAL_TRY, LITERAL_WHILE, INSTANCE_INIT, STATIC_INIT"/>
</module>
<!-- Checks for the placement of left curly braces ('{') for code blocks. !-->
<!-- See http://checkstyle.sf.net/config_blocks.html !-->
<module name="LeftCurly">
<property name="option" value="eol"/>
<property name="maxLineLength" value="165"/>
<property name="tokens" value="CLASS_DEF, CTOR_DEF,
INTERFACE_DEF, LITERAL_CATCH, LITERAL_DO, LITERAL_ELSE,
LITERAL_FINALLY, LITERAL_FOR, LITERAL_IF, LITERAL_SWITCH,
LITERAL_SYNCHRONIZED, LITERAL_TRY, LITERAL_WHILE,
METHOD_DEF"/>
</module>
<!-- Checks for braces around code blocks. !-->
<!-- See http://checkstyle.sf.net/config_blocks.html !-->
<module name="NeedBraces">
<property name="tokens" value="LITERAL_DO, LITERAL_ELSE, LITERAL_IF, LITERAL_FOR, LITERAL_WHILE"/>
</module>
<!-- Checks the placement of right curly braces ('}') for else, try, and catch tokens. !-->
<!-- See http://checkstyle.sf.net/config_blocks.html !-->
<module name="RightCurly">
<property name="option" value="same"/>
<property name="tokens" value="LITERAL_TRY, LITERAL_CATCH, LITERAL_FINALLY, LITERAL_IF, LITERAL_ELSE"/>
<property name="shouldStartLine" value="true"/>
</module>
<!--
!________________________________________________________________________________________
!
! C L A S S D E S I G N
!________________________________________________________________________________________
!-->
<!-- Checks that classes are designed for extension. !-->
<!-- See http://checkstyle.sf.net/config_design.html !-->
<!-- Default: OFF
<module name="DesignForExtension"/>
!-->
<!-- Checks that a class which has only private constructors is declared as final. !-->
<!-- See http://checkstyle.sf.net/config_design.html !-->
<module name="FinalClass"/>
<!-- Make sure that utility classes (classes that contain only static methods) do not have a public constructor. !-->
<!-- See http://checkstyle.sf.net/config_design.html !-->
<module name="HideUtilityClassConstructor"/>
<!-- Check nested (internal) classes/interfaces are declared at the bottom of the class after all method and field declarations. !-->
<!-- See http://checkstyle.sourceforge.net/config_design.html#InnerTypeLast !-->
<module name="InnerTypeLast"/>
<!-- Implements Bloch, Effective Java, Item 17 - Use Interfaces only to define types. !-->
<!-- See http://checkstyle.sf.net/config_design.html !-->
<module name="InterfaceIsType">
<property name="allowMarkerInterfaces" value="true"/>
</module>
<!-- Ensures that exceptions (defined as any class name conforming to some regular expression) are immutable. !-->
<!-- That is, have only final fields. !-->
<!-- See http://checkstyle.sf.net/config_design.html !-->
<module name="MutableException">
<property name="format" value="^.*Exception$|^.*Error$"/>
</module>
<!-- Restricts throws statements to a specified count. !-->
<!-- See http://checkstyle.sf.net/config_design.html !-->
<!-- KIEKER off
<module name="ThrowsCount">
<property name="max" value="1"/>
</module>
!-->
<!-- Checks visibility of class members. !-->
<!-- See http://checkstyle.sf.net/config_design.html !-->
<module name="VisibilityModifier">
<property name="packageAllowed" value="false"/>
<property name="protectedAllowed" value="true"/>
<property name="publicMemberPattern" value="^serialVersionUID$"/>
</module>
<!--
!________________________________________________________________________________________
!
! C O D I N G
!________________________________________________________________________________________
!-->
<!-- Checks that array initialization contains a trailing comma. !-->
<!-- See http://checkstyle.sf.net/config_coding.html !-->
<module name="ArrayTrailingComma"/>
<!-- Detects inline conditionals. !-->
<!-- See http://checkstyle.sf.net/config_coding.html !-->
<module name="AvoidInlineConditionals"/>
<!-- Checks that classes that define a covariant equals() method also override method equals(java.lang.Object). !-->
<!-- See http://checkstyle.sf.net/config_coding.html !-->
<module name="CovariantEquals"/>
<!-- Checks declaration order according to Code Conventions for the Java Programming Language. !-->
<!-- See http://checkstyle.sf.net/config_coding.html !-->
<module name="DeclarationOrder">
<property name="ignoreConstructors" value="false"/>
<property name="ignoreMethods" value="false"/>
<property name="ignoreModifiers" value="false"/>
</module>
<!-- Check that the default is after all the cases in a switch statement. !-->
<!-- See http://checkstyle.sf.net/config_coding.html !-->
<module name="DefaultComesLast"/>
<!-- The "double-checked locking" idiom (DCL) tries to avoid the runtime cost of synchronization. !-->
<!-- See http://checkstyle.sf.net/config_coding.html !-->
<!--<module name="DoubleCheckedLocking"/>-->
<!-- Detects empty statements (standalone ;). !-->
<!-- See http://checkstyle.sf.net/config_coding.html !-->
<module name="EmptyStatement"/>
<!-- Checks that any combination of String literals with optional assignment is on the left side of an equals() comparison. !-->
<!-- See http://checkstyle.sourceforge.net/config_coding.html#EqualsAvoidNull !-->
<module name="EqualsAvoidNull"/>
<!-- Checks that classes that override equals() also override hashCode(). !-->
<!-- See http://checkstyle.sf.net/config_coding.html !-->
<module name="EqualsHashCode"/>
<!-- Checks if any class or object member explicitly initialized to default for its type value. !-->
<!-- See http://checkstyle.sf.net/config_coding.html !-->
<!-- KIEKER off
<module name="ExplicitInitialization"/>
!-->
<!-- Checks for fall through in switch statements Finds locations where a case contains Java code ... !-->
<!-- but lacks a break, return, throw or continue statement. !-->
<!-- See http://checkstyle.sf.net/config_coding.html !-->
<module name="FallThrough">
<property name="checkLastCaseGroup" value="false"/>
<property name="reliefPattern" value="fallthru|falls??through"/>
</module>
<!-- Checks that local variables that never have their values changed are declared final. !-->
<!-- See http://checkstyle.sf.net/config_coding.html !-->
<module name="FinalLocalVariable">
<property name="tokens" value="VARIABLE_DEF"/>
</module>
<!-- Checks that a local variable or a parameter does not shadow a field that is defined in the same class. !-->
<!-- See http://checkstyle.sf.net/config_coding.html !-->
<!-- KIEKER ignoreConstructorParameter, ignoreSetter -->
<module name="HiddenField">
<property name="tokens" value="PARAMETER_DEF, VARIABLE_DEF"/>
<!--
<property name="ignoreFormat" value=""/>
!-->
<property name="ignoreConstructorParameter" value="true"/>
<property name="ignoreSetter" value="true"/>
<property name="ignoreAbstractMethods" value="false"/>
</module>
<!-- Catching java.lang.Exception, java.lang.Error or java.lang.RuntimeException is almost never acceptable. !-->
<!-- See http://checkstyle.sf.net/config_coding.html !-->
<module name="IllegalCatch">
<property name="illegalClassNames" value="java.lang.Exception, java.lang.Throwable, java.lang.RuntimeException"/>
</module>
<!-- Checks for illegal instantiations where a factory method is preferred. !-->
<!-- See http://checkstyle.sf.net/config_coding.html !-->
<!-- KIEKER on for ??? !-->
<module name="IllegalInstantiation">
<property name="classes" value="java.lang.Boolean"/>
</module>
<!-- This check can be used to ensure that types are not declared to be thrown. !-->
<!-- Declaring to throw java.lang.Error or java.lang.RuntimeException is almost never acceptable. !-->
<!-- See http://checkstyle.sourceforge.net/config_coding.html#IllegalThrows !-->
<module name="IllegalThrows">
<property name="illegalClassNames" value="java.lang.Throwable, java.lang.Error, java.lang.RuntimeException"/>
</module>
<!-- Checks for illegal tokens. !-->
<!-- See http://checkstyle.sf.net/config_coding.html !-->
<!-- KIEKER off
<module name="IllegalToken">
<property name="tokens" value="LITERAL_SWITCH, POST_INC, POST_DEC"/>
</module>
!-->
<!-- Checks for illegal token text. !-->
<!-- See http://checkstyle.sf.net/config_coding.html !-->
<!-- Default: OFF
<module name="IllegalTokenText">
<property name="tokens" value=""/>
<property name="format" value=""/>
<property name="ignoreCase" value="false"/>
<property name="message" value=""/>
</module>
!-->
<!-- Checks that particular classes are never used as types in variable declarations, return values or parameters. !-->
<!-- See http://checkstyle.sf.net/config_coding.html !-->
<!-- KIEKER removed format value="^(.*[\\.])?Abstract.*$" !-->
<module name="IllegalType">
<property name="tokens" value="PARAMETER_DEF, VARIABLE_DEF, METHOD_DEF"/>
<property name="illegalClassNames" value="java.util.GregorianCalendar, java.util.Hashtable,
java.util.HashSet, java.util.HashMap, java.util.ArrayList,
java.util.LinkedList, java.util.LinkedHashMap,
java.util.LinkedHashSet, java.util.TreeSet,
java.util.TreeMap, java.util.Vector"/>
<property name="legalAbstractClassNames" value=""/>
<property name="ignoredMethodNames" value="getInitialContext, getEnvironment"/>
<property name="format" value="XXX"/>
</module>
<!-- Checks for assignments in subexpressions, such as in String s = Integer.toString(i = 2);. !-->
<!-- See http://checkstyle.sf.net/config_coding.html !-->
<module name="InnerAssignment">
<property name="tokens" value="ASSIGN, BAND_ASSIGN, BOR_ASSIGN, BSR_ASSIGN, BXOR_ASSIGN,
DIV_ASSIGN, MINUS_ASSIGN, MOD_ASSIGN, PLUS_ASSIGN, SL_ASSIGN,
SR_ASSIGN, STAR_ASSIGN"/>
</module>
<!-- Ensures that the setUp(), tearDown()methods are named correctly, have no arguments, !-->
<!-- return void and are either public or protected. !-->
<!-- See http://checkstyle.sf.net/config_coding.html !-->
<!-- <module name="JUnitTestCase"/> -->
<!-- Checks that there are no "magic numbers", where a magic number is a numeric literal !-->
<!-- that is not defined as a constant. !-->
<!-- See http://checkstyle.sf.net/config_coding.html !-->
<!-- deactivated for Kieker
<module name="MagicNumber">
<property name="tokens" value="NUM_DOUBLE, NUM_FLOAT, NUM_INT, NUM_LONG"/>
<property name="ignoreNumbers" value="-1, 0, 1, 2"/>
<property name="ignoreHashCodeMethod" value="false"/>
</module>
!-->
<!-- Checks that classes (except abtract one) define a ctor and don't rely on the default one. !-->
<!-- See http://checkstyle.sf.net/config_coding.html !-->
<module name="MissingCtor"/>
<!-- Checks that switch statement has "default" clause. !-->
<!-- See http://checkstyle.sf.net/config_coding.html !-->
<module name="MissingSwitchDefault"/>
<!-- Check for ensuring that for loop control variables are not modified inside the for block. !-->
<!-- See http://checkstyle.sourceforge.net/config_coding.html#ModifiedControlVariable !-->
<module name="ModifiedControlVariable"/>
<!-- Checks for multiple occurrences of the same string literal within a single file. !-->
<!-- See http://checkstyle.sourceforge.net/config_coding.html#MultipleStringLiterals !-->
<!-- KIEKER off for now
<module name="MultipleStringLiterals">
<property name="allowedDuplicates" value="1"/>
<property name="ignoreStringsRegexp" value='^""$'/>
<property name="ignoreOccurrenceContext" value="ANNOTATION"/>
</module>
!-->
<!-- Checks that each variable declaration is in its own statement and on its own line. !-->
<!-- See http://checkstyle.sf.net/config_coding.html !-->
<module name="MultipleVariableDeclarations"/>
<!-- Restricts nested for blocks to a specified depth. !-->
<!-- See http://checkstyle.sourceforge.net/config_coding.html#NestedForDepth !-->
<module name="NestedForDepth">
<property name="max" value="2"/>
</module>
<!-- Restricts nested if-else blocks to a specified depth. !-->
<!-- See http://checkstyle.sf.net/config_coding.html !-->
<module name="NestedIfDepth">
<property name="max" value="3"/>
</module>
<!-- Restricts nested try-catch blocks to a specified depth. !-->
<!-- See http://checkstyle.sf.net/config_coding.html !-->
<module name="NestedTryDepth">
<property name="max" value="1"/>
</module>
<!-- Checks that the clone method is not overridden from the Object class. !-->
<!-- See http://checkstyle.sourceforge.net/config_coding.html#NoClone !-->
<module name="NoClone"/>
<!-- Verifies there are no finalize() methods defined in a class. !-->
<!-- See http://checkstyle.sourceforge.net/config_coding.html#NoFinalizer !-->
<module name="NoFinalizer"/>
<!-- Checks there is only one statement per line. !-->
<!-- See http://checkstyle.sourceforge.net/config_coding.html#OneStatementPerLine !-->
<module name="OneStatementPerLine"/>
<!-- Ensure a class has a package declaration. !-->
<!-- See http://checkstyle.sf.net/config_coding.html !-->
<module name="PackageDeclaration">
</module>
<!-- Disallow assignment of parameters. !-->
<!-- See http://checkstyle.sf.net/config_coding.html !-->
<module name="ParameterAssignment"/>
<!-- Checks that code doesn't rely on the "this." default. !-->
<!-- See http://checkstyle.sf.net/config_coding.html !-->
<module name="RequireThis">
<property name="checkFields" value="true"/>
<property name="checkMethods" value="true"/>
</module>
<!-- Restrict the number of return statements. !-->
<!-- See http://checkstyle.sf.net/config_coding.html !-->
<module name="ReturnCount">
<property name="max" value="2"/>
<property name="format" value=""/>
</module>
<!-- Checks for overly complicated boolean expressions. !-->
<!-- See http://checkstyle.sf.net/config_coding.html !-->
<module name="SimplifyBooleanExpression"/>
<!-- Checks for overly complicated boolean return statements. !-->
<!-- See http://checkstyle.sf.net/config_coding.html !-->
<module name="SimplifyBooleanReturn"/>
<!-- Checks that string literals are not used with == or !=. !-->
<!-- See http://checkstyle.sf.net/config_coding.html !-->
<module name="StringLiteralEquality"/>
<!-- Checks that an overriding clone() method invokes super.clone(). !-->
<!-- See http://checkstyle.sf.net/config_coding.html !-->
<module name="SuperClone"/>
<!-- Checks that an overriding finalize() method invokes super.finalize(). !-->
<!-- See http://checkstyle.sf.net/config_coding.html !-->
<module name="SuperFinalize"/>
<!-- Checks for the use of unnecessary parentheses. !-->
<!-- See http://checkstyle.sf.net/config_coding.html !-->
<module name="UnnecessaryParentheses"/>
<!--
!________________________________________________________________________________________
!
! I M P O R T S
!________________________________________________________________________________________
!-->
<!-- Checks that there are no import statements that use the * notation. !-->
<!-- See http://checkstyle.sf.net/config_import.html !-->
<module name="AvoidStarImport">
<property name="excludes" value=""/>
<property name="allowClassImports" value="false"/>
<property name="allowStaticMemberImports" value="false"/>
</module>
<!-- Checks that there are no static import statements. !-->
<!-- See http://checkstyle.sourceforge.net/config_imports.html#AvoidStaticImport !-->
<module name="AvoidStaticImport">
<property name="excludes" value=""/>
</module>
<!-- Checks for imports from a set of illegal packages. !-->
<!-- See http://checkstyle.sf.net/config_import.html !-->
<module name="IllegalImport">
<property name="illegalPkgs" value="junit.framework"/>
<property name="illegalPkgs" value="sun"/>
<property name="illegalPkgs" value="org.apache.commons.logging"/>
<property name="illegalPkgs" value="java.util.logging"/>
</module>
<!-- Controls what can be imported in each package. Useful for ensuring that application layering rules !-->
<!-- are not violated, especially on large projects. !-->
<!-- See http://checkstyle.sourceforge.net/config_imports.html#ImportControl !-->
<!-- Default: OFF
<module name="ImportControl">
<property name="file" value=""/>
<property name="url" value=""/>
</module>
!-->
<!-- Checks the ordering/grouping of imports. !-->
<!-- See http://checkstyle.sf.net/config_import.html !-->
<module name="ImportOrder">
<property name="option" value="under"/>
<property name="groups" value="java,javax,junit,org,com,ch,de,kieker,kieker.test"/>
<property name="ordered" value="true"/>
<property name="separated" value="true"/>
<property name="caseSensitive" value="true"/>
</module>
<!-- Checks for redundant import statements. !-->
<!-- See http://checkstyle.sf.net/config_import.html !-->
<module name="RedundantImport"/>
<!-- Checks for unused import statements. !-->
<!-- See http://checkstyle.sf.net/config_import.html !-->
<module name="UnusedImports"/>
<!--
!________________________________________________________________________________________
!
! J A V A D O C S
!________________________________________________________________________________________
!-->
<!-- Checks to ensure that the javadoc tags exist (if required) !-->
<!-- See http://checkstyle.sf.net/config_javadoc.html#JavadocMethod !-->
<!-- KIEKER: adapted !-->
<module name="JavadocMethod">
<property name="severity" value="info"/>
<property name="scope" value="protected"/>
<!--
<property name="excludeScope" value=""/>
!-->
<property name="allowUndeclaredRTE" value="false"/>
<property name="allowThrowsTagsForSubclasses" value="false"/>
<property name="allowMissingParamTags" value="false"/>
<property name="allowMissingThrowsTags" value="false"/>
<property name="allowMissingReturnTag" value="false"/>
<property name="allowMissingJavadoc" value="false"/>
<property name="allowMissingPropertyJavadoc" value="true"/>
<property name="logLoadErrors" value="true"/>
<property name="suppressLoadErrors" value="false"/>
<property name="tokens" value="METHOD_DEF, CTOR_DEF"/>
</module>
<!-- Validates Javadoc comments to help ensure they are well formed. !-->
<!-- See http://checkstyle.sf.net/config_javadoc.html#JavadocStyle !-->
<module name="JavadocStyle">
<property name="severity" value="info"/>
<property name="scope" value="private"/>
<!--
<property name="excludeScope" value=""/>
!-->
<property name="checkFirstSentence" value="true"/>
<!--TODO: <property name="endOfSentenceFormat" value="([.?!][ \t\n\r\f<])|([.?!]$)"/> !-->
<property name="checkEmptyJavadoc" value="false"/>
<property name="checkHtml" value="false"/>
<property name="tokens" value="INTERFACE_DEF, CLASS_DEF, METHOD_DEF, CTOR_DEF, VARIABLE_DEF"/>
</module>
<!-- Checks Javadoc comments for class and interface definitions. !-->
<!-- See http://checkstyle.sf.net/config_javadoc.html#JavadocType !-->
<module name="JavadocType">
<property name="severity" value="info"/>
<property name="scope" value="private"/>
<!--<property name="excludeScope" value=""/>!-->
<property name="authorFormat" value=""/>
<!--<property name="versionFormat" value=""/>!-->
<property name="allowMissingParamTags" value="false"/>
<property name="allowUnknownTags" value="false"/>
<property name="tokens" value="INTERFACE_DEF, CLASS_DEF"/>
</module>
<module name="JavadocType">
<property name="severity" value="error"/>
<property name="scope" value="package"/>
<property name="authorFormat" value="\S"/>
</module>
<!-- Checks that variables have Javadoc comments. !-->
<!-- See http://checkstyle.sf.net/config_javadoc.html#JavadocVariable !-->
<module name="JavadocVariable">
<property name="severity" value="info"/>
<property name="scope" value="protected"/>
<!--
<property name="excludeScope" value=""/>
!-->
</module>
<!-- Outputs a JavaDoc tag as information. !-->
<!-- See http://checkstyle.sourceforge.net/config_javadoc.html#WriteTag !-->
<!-- KIEKER
<module name="WriteTag">
<property name="severity" value="info"/>
<property name="tag" value=""/>
<property name="tagFormat" value=""/>
<property name="tagSeverity" value="info"/>
</module>
-->
<!--
!________________________________________________________________________________________
!
! M E T R I C S
!________________________________________________________________________________________
!-->
<!-- Restrict the number of number of &&, || and ^ in an expression. !-->
<!-- See http://checkstyle.sf.net/config_metrics.html !-->
<!-- KIEKER Off -->
<!-- <module name="BooleanExpressionComplexity">
<property name="severity" value="info"/>
<property name="max" value="3"/>
<property name="tokens" value="LAND, BAND, LOR, BOR, BXOR"/>
</module> -->
<!-- This metric measures the number of instantiations of other classes within the given class. !-->
<!-- See http://checkstyle.sf.net/config_metrics.html !-->
<!-- KIEKER Off -->
<!-- <module name="ClassDataAbstractionCoupling">
<property name="severity" value="info"/>
<property name="max" value="7"/>
</module> -->
<!-- The number of other classes a given class relies on. !-->
<!-- See http://checkstyle.sf.net/config_metrics.html !-->
<!-- KIEKER Off -->
<!--<module name="ClassFanOutComplexity">
<property name="severity" value="info"/>
<property name="max" value="20"/>
</module> -->
<!-- Checks cyclomatic complexity against a specified limit. !-->
<!-- See http://checkstyle.sf.net/config_metrics.html !-->
<module name="CyclomaticComplexity">
<property name="severity" value="ignore"/>
<property name="max" value="10"/>
</module>
<!-- Determines complexity of methods, classes and files by counting the Non Commenting Source Statements (NCSS). !-->
<!-- See http://checkstyle.sourceforge.net/config_metrics.html#JavaNCSS !-->
<!-- KIEKER Off -->
<!--<module name="JavaNCSS">
<property name="severity" value="info"/>
<property name="methodMaximum" value="50"/>
<property name="classMaximum" value="1500"/>
<property name="fileMaximum" value="2000"/>
</module> -->
<!-- The NPATH metric computes the number of possible execution paths through a function. !-->
<!-- See http://checkstyle.sf.net/config_metrics.html !-->
<!-- KIEKER Off -->
<!--<module name="NPathComplexity">
<property name="severity" value="info"/>
<property name="max" value="200"/>
</module> -->
<!--
!________________________________________________________________________________________
!
! M I S C E L L A N E O U S
!________________________________________________________________________________________
!-->
<!-- Checks the style of array type definitions. !-->
<!-- See http://checkstyle.sf.net/config_misc.html !-->
<module name="ArrayTypeStyle">
<property name="javaStyle" value="true"/>
</module>
<!-- Checks for restricted tokens beneath other tokens. !-->
<!-- See http://checkstyle.sf.net/config_misc.html !-->
<!-- Default: OFF
<module name="DescendantToken">
<property name="tokens" value=""/>
<property name="limitedTokens" value=""/>
<property name="minimumDepth" value="0"/>
<property name="maximumDepth" value="java.lang.Integer.MAX_VALUE"/>
<property name="minimumNumber" value="0"/>
<property name="maximumNumber" value="java.lang.Integer.MAX_VALUE"/>
<property name="sumTokenCounts" value="false"/>
<property name="minimumMessage" value="descendant.token.min"/>
<property name="maximumMessage" value="descendant.token.max"/>
</module>
!-->
<!-- Check that method/constructor parameters are final. !-->
<!-- See http://checkstyle.sf.net/config_misc.html !-->
<module name="FinalParameters">
<property name="tokens" value="METHOD_DEF, CTOR_DEF"/>
</module>
<!-- A generic check for code problems - the user can search for any pattern. !-->
<!-- See http://checkstyle.sf.net/config_misc.html !-->
<!-- Default: OFF
<module name="GenericIllegalRegexp">
<property name="format" value="\S\s+$"/>
<property name="message" value="Line has trailing spaces."/>
<property name="ignoreCase" value="false"/>
<property name="ignoreComments" value="false"/>
</module>
!-->
<!-- Checks correct indentation of Java Code. !-->
<!-- See http://checkstyle.sf.net/config_misc.html !-->
<!-- KIEKER deactivated for now
<module name="Indentation">
<property name="severity" value="info"/>
<property name="basicOffset" value="4"/>
<property name="braceAdjustment" value="0"/>
<property name="caseIndent" value="0"/>
</module>
!-->
<!-- Checks that the outer type name and the file name match. !-->
<!-- See http://checkstyle.sourceforge.net/config_misc.html#OuterTypeFilename !-->
<module name="OuterTypeFilename"/>
<!-- A check for TODO: comments. Actually it is a generic regular expression matcher on Java comments. !-->
<!-- See http://checkstyle.sf.net/config_misc.html !-->
<!-- Kieker !-->
<module name="TodoComment">
<property name="format" value="TODO"/>
<property name="severity" value="warning"/>
</module>
<module name="TodoComment">
<property name="format" value="FIXME"/>
<property name="severity" value="error"/>
</module>
<!-- The check to ensure that requires that comments be the only thing on a line. !-->
<!-- See http://checkstyle.sf.net/config_misc.html !-->
<!-- KIEKER we use them
<module name="TrailingComment">
<property name="format" value="^[\\s\\}\\);]*$"/>
<property name="legalComment" value=""/>
</module>
-->
<!-- Checks for uncommented main() methods (debugging leftovers). !-->
<!-- See http://checkstyle.sf.net/config_misc.html !-->
<!-- KIEKER do not check for these
<module name="UncommentedMain">
<property name="severity" value="info"/>
<property name="excludedClasses" value="Main$"/>
</module>
-->
<!-- Checks that long constants are defined with an upper ell. That is 'L' and not 'l'. !-->
<!-- See http://checkstyle.sf.net/config_misc.html !-->
<module name="UpperEll"/>
<!--
!________________________________________________________________________________________
!
! M O D I F I E R S
!________________________________________________________________________________________
!-->
<!-- Checks that the order of modifiers conforms to the suggestions in the Java Language specification, !-->
<!-- sections 8.1.1, 8.3.1 and 8.4.3. !-->
<!-- See http://checkstyle.sf.net/config_modifiers.html !-->
<module name="ModifierOrder"/>
<!-- Checks that there are no redundant modifiers. !-->
<!-- See http://checkstyle.sf.net/config_modifiers.html !-->
<!-- KIEKER off
<module name="RedundantModifier">
<property name="tokens" value="METHOD_DEF, VARIABLE_DEF, ANNOTATION_FIELD_DEF"/>
</module>
!-->
<!--
!________________________________________________________________________________________
!
! N A M I N G C O N V E N T I O N S
!________________________________________________________________________________________
!-->
<!-- Checks for abstract class name naming conventions. !-->
<!-- See http://checkstyle.sf.net/config_naming.html !-->
<!-- KIEKER removed |^.*Factory$ -->
<module name="AbstractClassName">
<property name="format" value="^Abstract.*$"/>
<property name="ignoreModifier" value="false"/>
<property name="ignoreName" value="false"/>
</module>
<!-- Checks for class type parameter name naming conventions. !-->
<!-- See http://checkstyle.sourceforge.net/config_naming.html#ClassTypeParameterName !-->
<module name="ClassTypeParameterName">
<property name="format" value="^[A-Z]$"/>
</module>
<!-- Checks for constant name naming conventions. !-->
<!-- See http://checkstyle.sf.net/config_naming.html !-->
<module name="ConstantName">
<property name="format" value="^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$"/>
<property name="applyToPublic" value="true"/>
<property name="applyToProtected" value="true"/>
<property name="applyToPackage" value="true"/>
<property name="applyToPrivate" value="true"/>
</module>
<!-- Checks for local final variable name naming conventions. !-->
<!-- See http://checkstyle.sf.net/config_naming.html !-->
<module name="LocalFinalVariableName">
<property name="format" value="^[a-z][a-zA-Z0-9]*$"/>
<property name="tokens" value="VARIABLE_DEF, PARAMETER_DEF"/>
</module>
<!-- Checks for local variable name naming conventions. !-->
<!-- See http://checkstyle.sf.net/config_naming.html !-->
<module name="LocalVariableName">
<property name="format" value="^[a-z][a-zA-Z0-9]*$"/>
<property name="tokens" value="PARAMETER_DEF"/>
</module>
<!-- Checks for member variable name naming conventions. !-->
<!-- See http://checkstyle.sf.net/config_naming.html !-->
<module name="MemberName">
<property name="format" value="^[a-z][a-zA-Z0-9]*$"/>
<property name="applyToPublic" value="true"/>
<property name="applyToProtected" value="true"/>
<property name="applyToPackage" value="true"/>
<property name="applyToPrivate" value="true"/>
</module>
<!-- Checks for method name naming conventions. !-->
<!-- See http://checkstyle.sf.net/config_naming.html !-->
<module name="MethodName">
<property name="format" value="^[a-z][a-zA-Z0-9]*$"/>
</module>
<!-- Checks for method type parameter name naming conventions. !-->
<!-- See http://checkstyle.sourceforge.net/config_naming.html#MethodTypeParameterName !-->
<module name="MethodTypeParameterName">
<property name="format" value="^[A-Z]$"/>
</module>
<!-- Checks for package name naming conventions. !-->
<!-- See http://checkstyle.sf.net/config_naming.html !-->
<module name="PackageName">
<property name="format" value="^[a-z]+(\.[a-zA-Z_][a-zA-Z0-9_]*)*$"/>
</module>
<!-- Checks for parameter name naming conventions. !-->
<!-- See http://checkstyle.sf.net/config_naming.html !-->
<module name="ParameterName">
<property name="format" value="^[a-z][a-zA-Z0-9]*$"/>
</module>
<!-- Checks for static variable name naming conventions. !-->
<!-- See http://checkstyle.sf.net/config_naming.html !-->
<module name="StaticVariableName">
<property name="format" value="^[a-z][a-zA-Z0-9]*$"/>
<property name="applyToPublic" value="true"/>
<property name="applyToProtected" value="true"/>
<property name="applyToPackage" value="true"/>
<property name="applyToPrivate" value="true"/>
</module>
<!-- Checks for type name naming conventions. !-->
<!-- See http://checkstyle.sf.net/config_naming.html !-->
<!-- KIEKER: modded -->
<module name="TypeName">
<property name="format" value="^[A-Z][a-zA-Z0-9]*$"/>
<property name="tokens" value="CLASS_DEF"/>
<property name="applyToPublic" value="true"/>
<property name="applyToProtected" value="true"/>
<property name="applyToPackage" value="true"/>
<property name="applyToPrivate" value="true"/>
</module>
<module name="TypeName">
<property name="format" value="^I[A-Z][a-zA-Z0-9]*$"/>
<property name="tokens" value="INTERFACE_DEF"/>
<property name="applyToPublic" value="true"/>
<property name="applyToProtected" value="true"/>
<property name="applyToPackage" value="true"/>
<property name="applyToPrivate" value="true"/>
</module>
<!--
!________________________________________________________________________________________
!
! R E G E X P
!________________________________________________________________________________________
!-->
<!-- A check that makes sure that a specified pattern exists, exists less than a set number of times, !-->
<!-- or does not exist in the file. !-->
<!-- See http://checkstyle.sourceforge.net/config_misc.html#Regexp !-->
<!-- Default: OFF
<module name="Regexp">
<property name="format" value=""/>
<property name="message" value=""/>
<property name="illegalPattern" value="false"/>
<property name="duplicateLimit" value="-1"/>
<property name="errorLimit" value="100"/>
<property name="ignoreComments" value="false"/>
</module>
!-->
<!-- This class is variation on RegexpSingleline for detecting single lines that match a !-->
<!-- supplied regular expression in Java files. It supports suppressing matches in Java comments. !-->
<!-- See http://checkstyle.sourceforge.net/config_regexp.html#RegexpSinglelineJava !-->
<!-- Default: OFF
<module name="RegexpSinglelineJava">
<property name="format" value=""/>
<property name="message" value=""/>
<property name="ignoreCase" value="false"/>
<property name="minimum" value="0"/>
<property name="maximum" value="0"/>
<property name="ignoreComments" value="false"/>
</module>
!-->
<!--
!________________________________________________________________________________________
!
! S I Z E V I O L A T I O N S
!________________________________________________________________________________________
!-->
<!-- Checks for long anonymous inner classes. !-->
<!-- See http://checkstyle.sf.net/config_sizes.html !-->
<!-- KIEKER Set to 50 instead of 20 -->
<module name="AnonInnerLength">
<property name="severity" value="info"/>
<property name="max" value="50"/>
</module>
<!-- Restricts the number of executable statements to a specified limit. !-->
<!-- See http://checkstyle.sf.net/config_sizes.html !-->
<!-- KIEKER off
<module name="ExecutableStatementCount">
<property name="severity" value="info"/>
<property name="max" value="30"/>
<property name="tokens" value="CTOR_DEF, METHOD_DEF, INSTANCE_INIT, STATIC_INIT"/>
</module>
!-->
<!-- See http://checkstyle.sf.net/config_sizes.html !-->
<!-- Checks for long lines. !-->
<module name="LineLength">
<property name="severity" value="info"/>
<property name="ignorePattern" value="^$"/>
<property name="max" value="165"/>
</module>
<!-- Checks the number of methods declared in each type. This includes the number of each scope !-->
<!-- (private, package, protected and public) as well as an overall total. !-->
<!-- See http://checkstyle.sourceforge.net/config_sizes.html#MethodCount !-->
<module name="MethodCount">
<property name="severity" value="info"/>
<property name="maxTotal" value="100"/>
<property name="maxPrivate" value="100"/>
<property name="maxPackage" value="100"/>
<property name="maxProtected" value="100"/>
<property name="maxPublic" value="100"/>
</module>
<!-- Checks for long methods and constructors. !-->
<!-- See http://checkstyle.sf.net/config_sizes.html !-->
<module name="MethodLength">
<property name="severity" value="info"/>
<property name="max" value="150"/>
<property name="countEmpty" value="true"/>
<property name="tokens" value="METHOD_DEF, CTOR_DEF"/>
</module>
<!-- Checks for the number of types declared at the outer (or root) level in a file. !-->
<!-- See http://checkstyle.sourceforge.net/config_sizes.html#OuterTypeNumber !-->
<!-- KIEKER 2 !-->
<module name="OuterTypeNumber">
<property name="max" value="2"/>
</module>
<!-- Checks the number of parameters of a method or constructor. !-->
<!-- See http://checkstyle.sf.net/config_sizes.html !-->
<!-- KIEKER off
<module name="ParameterNumber">
<property name="severity" value="info"/>
<property name="max" value="7"/>
<property name="tokens" value="METHOD_DEF, CTOR_DEF"/>
</module>
!-->
<!--
!________________________________________________________________________________________
!
! W H I T E S P A C E
!________________________________________________________________________________________
!-->
<!-- Checks the padding of an empty for initializer. !-->
<!-- See http://checkstyle.sf.net/config_whitespace.html !-->
<module name="EmptyForInitializerPad">
<property name="option" value="nospace"/>
</module>
<!-- Checks the padding of an empty for iterator. !-->
<!-- See http://checkstyle.sf.net/config_whitespace.html !-->
<module name="EmptyForIteratorPad">
<property name="option" value="nospace"/>
</module>
<!-- Checks that the whitespace around the Generic tokens < and > is correct to the typical convention. !-->
<!-- See http://checkstyle.sourceforge.net/config_whitespace.html#GenericWhitespace !-->
<module name="GenericWhitespace"/>
<!-- Checks the padding between the identifier of a method definition, !-->
<!-- constructor definition, method call, or constructor invocation; and the left parenthesis of the parameter list. !-->
<!-- See http://checkstyle.sf.net/config_whitespace.html !-->
<module name="MethodParamPad">
<property name="allowLineBreaks" value="false"/>
<property name="option" value="nospace"/>
<property name="tokens" value="CTOR_DEF, LITERAL_NEW, METHOD_CALL, METHOD_DEF, SUPER_CTOR_CALL "/>
</module>
<!-- Checks that there is no whitespace after a token. !-->
<!-- See http://checkstyle.sf.net/config_whitespace.html !-->
<!-- KIEKER removed ARRAY_INIT !-->
<module name="NoWhitespaceAfter">
<property name="allowLineBreaks" value="true"/>
<property name="tokens" value="BNOT, DEC, DOT, INC, LNOT, UNARY_MINUS, UNARY_PLUS"/>
</module>
<!-- Checks that there is no whitespace before a token. !-->
<!-- See http://checkstyle.sf.net/config_whitespace.html !-->
<module name="NoWhitespaceBefore">
<property name="allowLineBreaks" value="false"/>
<property name="tokens" value="SEMI, POST_DEC, POST_INC"/>
</module>
<!-- Checks the policy on how to wrap lines on operators. !-->
<!-- See http://checkstyle.sf.net/config_whitespace.html !-->
<module name="OperatorWrap">
<property name="option" value="nl"/>
<property name="tokens" value="BAND, BOR, BSR, BXOR, COLON, DIV,
EQUAL, GE, GT, LAND, LE, LITERAL_INSTANCEOF,
LOR, LT, MINUS, MOD, NOT_EQUAL,
PLUS, QUESTION, SL, SR, STAR"/>
</module>
<!-- Checks the policy on the padding of parentheses. !-->
<!-- See http://checkstyle.sf.net/config_whitespace.html !-->
<module name="ParenPad">
<property name="option" value="nospace"/>
<property name="tokens" value="CTOR_CALL, LPAREN, METHOD_CALL, RPAREN, SUPER_CTOR_CALL"/>
</module>
<!-- Checks the policy on the padding of parentheses for typecasts. !-->
<!-- See http://checkstyle.sf.net/config_whitespace.html !-->
<module name="TypecastParenPad">
<property name="option" value="nospace"/>
<property name="tokens" value="TYPECAST, RPAREN"/>
</module>
<!-- Checks that a token is followed by whitespace. !-->
<!-- See http://checkstyle.sf.net/config_whitespace.html !-->
<module name="WhitespaceAfter">
<property name="tokens" value="COMMA, SEMI, TYPECAST"/>
</module>
<!-- Checks that a token is surrounded by whitespace. !-->
<!-- See http://checkstyle.sf.net/config_whitespace.html !-->
<module name="WhitespaceAround">
<property name="tokens" value="ASSIGN, BAND, BAND_ASSIGN, BOR, BOR_ASSIGN, BSR, BSR_ASSIGN,
BXOR, BXOR_ASSIGN, COLON, DIV, DIV_ASSIGN, EQUAL, GE, GT, LAND,
LE, LITERAL_ASSERT, LITERAL_CATCH, LITERAL_DO, LITERAL_ELSE,
LITERAL_FINALLY, LITERAL_FOR, LITERAL_IF, LITERAL_RETURN,
LITERAL_SYNCHRONIZED, LITERAL_TRY, LITERAL_WHILE, LOR, LT,
MINUS, MINUS_ASSIGN, MOD, MOD_ASSIGN, NOT_EQUAL, PLUS, PLUS_ASSIGN,
QUESTION, SL, SLIST, SL_ASSIGN, SR, SR_ASSIGN, STAR, STAR_ASSIGN"/>
<property name="allowEmptyConstructors" value="true"/>
<property name="allowEmptyMethods" value="true"/>
</module>
</module>
<module name="TreeWalker">
<!-- code formatting -->
<property name="tabWidth" value="4" />
<module name="OneStatementPerLine" />
<module name="ArrayTypeStyle" />
<module name="OneStatementPerLine" />
<module name="StaticVariableName" />
<module name="TypeName" />
<module name="UnusedImports">
<property name="processJavadoc" value="true" />
</module>
<!-- code order -->
<module name="DeclarationOrder" />
<module name="OverloadMethodsDeclarationOrder" />
<!-- <module name="AtclauseOrder" /> -->
<!-- annotations -->
<module name="MissingDeprecated" />
<module name="MissingOverride" />
<module name="ModifierOrder" />
<!-- code analysis -->
<module name="CyclomaticComplexity">
<property name="max" value="10" />
</module>
<module name="ModifiedControlVariable" />
<!-- <module name="MultipleStringLiterals" /> -->
<module name="SimplifyBooleanExpression" />
<module name="SimplifyBooleanReturn" />
<module name="SuperClone" />
<module name="SuperFinalize" />
<!-- <module name="VisibilityModifier"> -->
<!-- <property name="protectedAllowed" value="true" /> -->
<!-- </module> -->
<module name="EmptyStatement" />
<module name="EqualsHashCode" />
<!-- others -->
<module name="NoFinalizer" />
<!-- <module name="MagicNumber"/> -->
<!-- TODO
- we require a rule to enforce only fqn for @link (afterwards, UnusedImports->processJavadoc can be removed)
- we require a rule to enforce declaring type arguments for generic types/methods
-->
</module>
</module>
......@@ -3,7 +3,7 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://pmd.sourceforge.net/ruleset/2.0.0 http://pmd.sourceforge.net/ruleset_2_0_0.xsd">
<description>This ruleset checks my code for bad stuff</description>
<exclude-pattern>.*/target/.*</exclude-pattern>
<!-- warning: if you reference a pmd rulesets xml file more than once, only
the first rule is applied; so check for duplicates -->
......@@ -16,7 +16,7 @@
<rule ref="rulesets/java/codesize.xml" />
<!-- <rule ref="rulesets/java/comments.xml" /> -->
<!-- <rule ref="rulesets/java/controversial.xml" /> -->
<rule ref="rulesets/java/coupling.xml" />
<!-- <rule ref="rulesets/java/coupling.xml" /> -->
<rule ref="rulesets/java/design.xml" />
<rule ref="rulesets/java/empty.xml" />
<rule ref="rulesets/java/finalizers.xml" />
......@@ -28,7 +28,7 @@
<rule ref="rulesets/java/logging-java.xml" />
<rule ref="rulesets/java/migrating.xml" />
<rule ref="rulesets/java/naming.xml" />
<!-- <rule ref="rulesets/java/naming.xml" /> -->
<!-- <rule ref="rulesets/java/optimizations.xml" /> -->
<rule ref="rulesets/java/strictexception.xml" />
<rule ref="rulesets/java/strings.xml" />
......@@ -37,31 +37,37 @@
<rule ref="rulesets/java/unnecessary.xml" />
<rule ref="rulesets/java/unusedcode.xml" />
<rule ref="rulesets/ecmascript/basic.xml" />
<rule ref="rulesets/ecmascript/braces.xml" />
<rule ref="rulesets/jsp/basic-jsf.xml" />
<rule ref="rulesets/jsp/basic.xml" />
<!-- <rule ref="rulesets/vm/basic.xml" /> -->
<!-- <rule ref="rulesets/xml/basic.xml" /> -->
<!-- <rule ref="rulesets/xsl/xpath.xml" /> -->
<!-- custom adaptations -->
<rule ref="rulesets/java/basic.xml/EmptyCatchBlock" message="Throw at least an IllegalStateException(e)">
<rule ref="rulesets/java/empty.xml/EmptyCatchBlock" message="Throw at least an IllegalStateException(e)">
<priority>1</priority>
</rule>
<rule ref="rulesets/java/comments.xml">
<exclude name="CommentRequired" />
<exclude name="CommentSize" />
</rule>
<rule ref="rulesets/java/controversial.xml">
<exclude name="AtLeastOneConstructor" />
<exclude name="AvoidUsingVolatile" />
<exclude name="CallSuperInConstructor" />
<exclude name="DefaultPackage" />
<exclude name="UseConcurrentHashMap" />
</rule>
<!-- UR means "undefined reference" which is already detected by the compiler.
so we deactivate it. -->
<rule ref="rulesets/java/controversial.xml/DataflowAnomalyAnalysis">
<properties>
<property name="violationSuppressRegex" value="^Found 'UR'-anomaly.*" />
</properties>
</rule>
<rule ref="rulesets/java/coupling.xml">
<exclude name="LawOfDemeter" />
<exclude name="LoosePackageCoupling" />
</rule>
<rule ref="rulesets/java/j2ee.xml">
......@@ -72,6 +78,11 @@
<exclude name="BeanMembersShouldSerialize" />
</rule>
<rule ref="rulesets/java/naming.xml">
<exclude name="LongVariable" />
<exclude name="PackageCase"/>
</rule>
<rule ref="rulesets/java/naming.xml/VariableNamingConventions">
<priority>5</priority>
</rule>
......@@ -80,7 +91,15 @@
<exclude name="LocalVariableCouldBeFinal" />
<exclude name="SimplifyStartsWith" />
</rule>
<rule ref="rulesets/chw/basic.xml" />
</ruleset>
\ No newline at end of file
<rule ref="rulesets/chw/basic.xml">
<exclude name="NonHeaderCommentSize"/>
</rule>
<!-- <rule ref="rulesets/chw/basic.xml/NonHeaderCommentSize"> -->
<!-- <properties> -->
<!-- <property name="maxLineLength" value="100" /> -->
<!-- </properties> -->
<!-- </rule> -->
</ruleset>
File deleted
File added
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>net.sourceforge.teetime</groupId>
<artifactId>teetime</artifactId>
<name>teetime</name>
<version>1.0-SNAPSHOT</version>
<url>http://maven.apache.org</url>
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>versions-maven-plugin</artifactId>
<version>2.1</version>
</plugin>
<plugin>
<artifactId>maven-shade-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
<configuration>
<finalName>${project.artifactId}-${project.version}</finalName>
</configuration>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>sonatype.oss.snapshots</id>
<url>https://oss.sonatype.org/content/repositories/snapshots/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-core</artifactId>
<version>1.3</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-library</artifactId>
<version>1.3</version>
<scope>test</scope>
</dependency>
</dependencies>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
</project>