# -------------------------------------------------------------
# *************** 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:	/sdcard/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
