# -------------------------------------------------------------
# *************** DO NOT EDIT THIS FILE ***********************
#
# for user-editable property overrides use one of these options:
#
# (1) option-specific command line overrides, e.g.
#     -Dreport.txt.out.file=coverage.txt
#
# (2) '-p <options file>' command line option,
#
# (3) 'emma.properties' resource placed somewhere in the classpath
#     (e.g., in <jre dir>\classes directory -- note that it does
#     not exist by default),
#
# (4) '-Demma.*' JVM options, e.g.
#     -Demma.report.txt.out.file=coverage.txt
#
# (5) 'emma.properties' JVM option pointing to a properties file
#     -Demma.properties=./myproperties.txt
# -------------------------------------------------------------

# -------------------------------------------------------------
# logging properties:

verbosity.level:	info

# classloading properties:

#clsload.forced_delegation_filter:
#clsload.through_delegation_filter: -*

# -------------------------------------------------------------

# instrumentation properties:

instr.exclude_synthetic_methods:	true
instr.exclude_bridge_methods:		true
instr.do_suid_compensation:		true

# -------------------------------------------------------------

# apprunner session data output properties:

session.out.file:	coverage.es
session.out.merge:	true

# -------------------------------------------------------------

# runtime coverage data output properties:

coverage.out.file:	coverage.ec
coverage.out.merge:	true

# -------------------------------------------------------------

# instr metadata output properties:

metadata.out.file:	coverage.em
metadata.out.merge:	true

# -------------------------------------------------------------

# common report defaults:

report.units:		instr
report.depth:		method
report.columns:		name,class,method,block,line
report.sort:		+block,+name,+method,+class
report.metrics:		method:70,block:80,line:80,class:100

# -------------------------------------------------------------
# txt report properties:

report.txt.depth:	all
report.txt.columns:	class,method,block,line,name
report.txt.out.file:	coverage.txt

# -------------------------------------------------------------
# html report properties:

#report.html.out.dir:	coverage
report.html.out.file:	coverage/index.html
report.html.out.encoding: ISO-8859-1

# -------------------------------------------------------------
# xml report properties:

report.xml.out.file:	coverage.xml
report.xml.out.encoding: UTF-8
# -------------------------------------------------------------
# end of file
