changeset 16:1fca3f09b1ce

default ANC filters in JCov, jigsaw modules, report for merged result CODETOOLS-7901496, CODETOOLS-7901497, CODETOOLS-7901598
author afedorch
date Tue, 01 Mar 2016 15:57:49 +0300
parents cc7cda3d6842
children c7a7c279c3a6
files build/build.xml src/classes/com/sun/tdk/jcov/JREInstr.java src/classes/com/sun/tdk/jcov/RepGen.java src/classes/com/sun/tdk/jcov/TmplGen.java src/classes/com/sun/tdk/jcov/data/Scale.java src/classes/com/sun/tdk/jcov/instrument/DataExitSimple.java src/classes/com/sun/tdk/jcov/report/MethodCoverage.java src/classes/com/sun/tdk/jcov/report/ProductCoverage.java src/classes/com/sun/tdk/jcov/report/ancfilters/CatchANCFilter.java src/classes/com/sun/tdk/jcov/report/ancfilters/DefaultAncFilter.java src/classes/com/sun/tdk/jcov/report/ancfilters/DeprecatedANCFilter.java src/classes/com/sun/tdk/jcov/report/ancfilters/EmptyANCFilter.java src/classes/com/sun/tdk/jcov/report/ancfilters/GetterANCFilter.java src/classes/com/sun/tdk/jcov/report/ancfilters/SetterANCFilter.java src/classes/com/sun/tdk/jcov/report/ancfilters/SyntheticANCFilter.java src/classes/com/sun/tdk/jcov/report/ancfilters/ThrowANCFilter.java src/classes/com/sun/tdk/jcov/report/ancfilters/ToStringANCFilter.java src/classes/com/sun/tdk/jcov/report/html/CoverageReport.java
diffstat 18 files changed, 1018 insertions(+), 311 deletions(-) [+]
line wrap: on
line diff
--- a/build/build.xml	Wed Dec 02 20:24:32 2015 +0300
+++ b/build/build.xml	Tue Mar 01 15:57:49 2016 +0300
@@ -1,283 +1,304 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
-  Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
-  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-
-  This code is free software; you can redistribute it and/or modify it
-  under the terms of the GNU General Public License version 2 only, as
-  published by the Free Software Foundation.  Oracle designates this
-  particular file as subject to the "Classpath" exception as provided
-  by Oracle in the LICENSE file that accompanied this code.
-
-  This code is distributed in the hope that it will be useful, but WITHOUT
-  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-  version 2 for more details (a copy is included in the LICENSE file that
-  accompanied this code).
-
-  You should have received a copy of the GNU General Public License version
-  2 along with this work; if not, write to the Free Software Foundation,
-  Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-
-  Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-  or visit www.oracle.com if you need additional information or have any
-  questions.
--->
-
-<project name="JCov" default="build" basedir=".">
-
-    <property file="release.properties"/>
-    <property file="build.properties"/>
-
-    <!-- Build area -->
-    <property name="build.dir" location="${result.dir}/jcov_${build.version}"/>
-    <property name="jcov.classpath" value="${asmjar5}:${java.home}/lib/tools.jar"/>
-
-    <!-- Temp dir is for files which do not appear in release directory -->
-    <property name="tmp.dir" location="${result.dir}/temp"/>
-
-    <property name="jcov.classes" location="${tmp.dir}/jcov_classes"/>
-    <property name="jcov.src.update" location="${tmp.dir}/jcov_src_update"/>
-
-    <property name="jcov.filesaver.classes" location="${tmp.dir}/jcov_filesaver_classes"/>
-    <property name="jcov.filesaver.src" location="${tmp.dir}/jcov_filesaver_src"/>
-
-    <property name="jcov.networksaver.classes" location="${tmp.dir}/jcov_network_classes"/>
-    <property name="jcov.networksaver.src" location="${tmp.dir}/jcov_network_src"/>
-
-    <property name="jcov.jtobserver.classes" location="${tmp.dir}/jcov_jtobserver_classes"/>
-
-    <patternset id="jcov.files">
-        <include name="com/sun/tdk/jcov/**"/>
-        <include name="resources/**"/>
-    </patternset>
-
-    <patternset id="jcov.file.saver.files">
-        <include name="com/sun/tdk/jcov/runtime/Collect.*"/>
-        <include name="com/sun/tdk/jcov/runtime/CollectDetect.*"/>
-        <include name="com/sun/tdk/jcov/runtime/JCovSaver.*"/>
-        <include name="com/sun/tdk/jcov/runtime/SaverDecorator.*"/>
-        <include name="com/sun/tdk/jcov/runtime/PropertyFinder.*"/>
-        <include name="com/sun/tdk/jcov/util/MapHelper.*"/>
-        <include name="com/sun/tdk/jcov/util/RuntimeUtils.*"/>
-        <include name="com/sun/tdk/jcov/runtime/TemplateFileSaver*"/>
-        <include name="com/sun/tdk/jcov/util/MapHelper.*"/>
-        <include name="com/sun/tdk/jcov/constants/MiscConstants*"/>
-    </patternset>
-
-    <patternset id="jcov.network.saver.files">
-        <include name="com/sun/tdk/jcov/runtime/Collect.*"/>
-        <include name="com/sun/tdk/jcov/runtime/CollectDetect.*"/>
-        <include name="com/sun/tdk/jcov/runtime/PropertyFinder.*"/>
-        <include name="com/sun/tdk/jcov/runtime/JCovSocketSaver.*"/>
-        <include name="com/sun/tdk/jcov/runtime/JCovSESocketSaver.*"/>
-        <include name="com/sun/tdk/jcov/runtime/JCovSaver.*"/>
-        <include name="com/sun/tdk/jcov/runtime/NetworkSatelliteDecorator.*"/>
-        <include name="com/sun/tdk/jcov/runtime/SaverDecorator.*"/>
-    </patternset>
-
-    <fileset dir="${src.dir}" id="jcov.resources.files">
-        <include name="com/sun/tdk/jcov/report/html/resources/**"/>
-        <include name="com/sun/tdk/jcov/logging.properties"/>
-        <exclude name="**/*.java"/>
-    </fileset>
-
-    <patternset id="asm.files">
-        <include name="org/objectweb/asm/**"/>
-    </patternset>
-
-    <target name="clean" description="clean build data">
-
-        <delete dir="${build.dir}"/>
-        <delete dir="${tmp.dir}"/>
-
-    </target>
-
-    <target name="prepare" depends="clean" description="checks dependencies">
-
-        <available file="${asmjar5}" property="asm.present"/>
-        <fail unless="asm.present" message="Please, specify asm library"/>
-
-        <condition property="javatest.present">
-            <not>
-                <equals arg1="${javatestjar}" arg2=""/>
-            </not>
-        </condition>
-
-        <mkdir dir="${jcov.src.update}"/>
-        <mkdir dir="${jcov.classes}"/>
-
-    </target>
-
-    <target name="build-date" description="adds bild and date information">
-        <tstamp>
-            <format property="date" pattern="dd MMMM yyyy" locale="en"/>
-        </tstamp>
-        <mkdir dir="${jcov.src.update}/com/sun/tdk/jcov/tools"/>
-        <echo file="${jcov.src.update}/com/sun/tdk/jcov/tools/JcovVersion.java">
-            /*
-            * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
-            * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-            *
-            * This code is free software; you can redistribute it and/or modify it
-            * under the terms of the GNU General Public License version 2 only, as
-            * published by the Free Software Foundation.  Oracle designates this
-            * particular file as subject to the "Classpath" exception as provided
-            * by Oracle in the LICENSE file that accompanied this code.
-            *
-            * This code is distributed in the hope that it will be useful, but WITHOUT
-            * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-            * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-            * version 2 for more details (a copy is included in the LICENSE file that
-            * accompanied this code).
-            *
-            * You should have received a copy of the GNU General Public License version
-            * 2 along with this work; if not, write to the Free Software Foundation,
-            * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-            *
-            * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-            * or visit www.oracle.com if you need additional information or have any
-            * questions.
-            */
-
-            package com.sun.tdk.jcov.tools;
-
-            public class JcovVersion{
-            public static final String jcovVersion = "${build.version}";
-            public static final String jcovMilestone = "${build.milestone}";
-            public static final String jcovBuildNumber = "${build.number}";
-            public static final String jcovBuildDate = "${date}";
-            public static String getJcovVersion() {
-                return String.format("%s%s-%s built: %s", jcovVersion, jcovMilestone, jcovBuildNumber, jcovBuildDate);
-              }
-            }
-        </echo>
-
-    </target>
-
-    <target name="compile"  depends="prepare, build-date"
-            description="compile main tools">
-
-        <javac encoding="iso-8859-1" debug="true" target="1.5" source="1.5"
-               srcdir="${jcov.src.update}"
-               destdir="${jcov.classes}"
-               classpath="${jcov.classpath}">
-        </javac>
-
-        <javac encoding="iso-8859-1" debug="true" target="1.5" source="1.5"
-               srcdir="${src.dir}"
-               destdir="${jcov.classes}"
-               classpath="${jcov.classpath}">
-            <patternset refid="jcov.files"/>
-        </javac>
-
-        <copy todir="${jcov.classes}">
-            <fileset refid="jcov.resources.files"/>
-        </copy>
-    </target>
-
-    <target name="build-jcov" depends="compile" description="build jcov jar">
-        <unjar src="${asmjar5}" dest="${jcov.classes}"/>
-        <jar destfile="${build.dir}/jcov.jar" basedir="${jcov.classes}" index="false">
-            <manifest>
-                <attribute name="Built-By"   value="${user.name}"/>
-                <attribute name="Premain-Class" value="com.sun.tdk.jcov.Agent"/>
-                <attribute name="Boot-Class-Path" value="jcov.jar"/>
-                <attribute name="Main-Class" value="com.sun.tdk.jcov.Helper"/>
-                <attribute name="Can-Retransform-Classes" value="true"/>
-                <attribute name="Can-Set-Native-Method-Prefix" value="true" />
-            </manifest>
-            <patternset refid="jcov.files"/>
-            <patternset refid="asm.files"/>
-        </jar>
-
-    </target>
-
-    <target name="build-file.saver" depends="prepare" description="build file saver jar">
-
-        <mkdir dir="${jcov.filesaver.classes}"/>
-        <mkdir dir="${jcov.filesaver.src}"/>
-
-        <copy todir="${jcov.filesaver.src}">
-            <fileset dir="${src.dir}">
-                <patternset refid="jcov.file.saver.files"/>
-            </fileset>
-            <fileset dir="${jcov.src.update}">
-            </fileset>
-            <filterchain>
-                <tokenfilter>
-                    <replaceregex pattern="\/\*@" replace="@"/>
-                    <replaceregex pattern="@\*\/" replace="@"/>
-                </tokenfilter>
-                <filterreader classname="org.apache.tools.ant.filters.ReplaceTokens">
-                    <param type="propertiesfile" value="filesaver.replace.properties"/>
-                </filterreader>
-            </filterchain>
-        </copy>
-        <javac encoding="iso-8859-1" debug="true" target="1.5" source="1.5"
-               srcdir="${jcov.filesaver.src}"
-               sourcepath=""
-               classpath="${jcov.filesaver.classes}"
-               destdir="${jcov.filesaver.classes}">
-        </javac>
-        <jar destfile="${build.dir}/jcov_file_saver.jar"
-             basedir="${jcov.filesaver.classes}"
-             index="false">
-            <manifest>
-                <attribute name="Built-By" value="${user.name}"/>
-            </manifest>
-        </jar>
-    </target>
-
-    <target name="build-network.saver" depends="prepare" description="build network saver jar">
-
-        <mkdir dir="${jcov.networksaver.classes}"/>
-        <mkdir dir="${jcov.networksaver.src}"/>
-
-        <copy todir="${jcov.networksaver.src}">
-            <fileset dir="${src.dir}">
-                <patternset refid="jcov.network.saver.files"/>
-            </fileset>
-            <filterchain>
-                <tokenfilter>
-                    <replaceregex pattern="\/\*@" replace="@"/>
-                    <replaceregex pattern="@\*\/" replace="@"/>
-                </tokenfilter>
-                <filterreader classname="org.apache.tools.ant.filters.ReplaceTokens">
-                    <param type="propertiesfile" value="networksaver.replace.properties"/>
-                </filterreader>
-            </filterchain>
-        </copy>
-        <javac encoding="iso-8859-1" debug="true" target="1.5" source="1.5"
-               srcdir="${jcov.networksaver.src}"
-               sourcepath=""
-               classpath="${jcov.networksaver.classes}"
-               destdir="${jcov.networksaver.classes}">
-        </javac>
-        <jar destfile="${build.dir}/jcov_network_saver.jar"
-             basedir="${jcov.networksaver.classes}"
-             index="false">
-            <manifest>
-                <attribute name="Built-By" value="${user.name}"/>
-            </manifest>
-        </jar>
-    </target>
-
-    <target name="build-jt.observer" depends="prepare" if ="javatest.present" description="build jtobserver jar">
-        <mkdir dir="${jcov.jtobserver.classes}"/>
-        <javac encoding="iso-8859-1" debug="true" target="1.6" source="1.6"
-               srcdir="${src.dir}"
-               sourcepath=""
-               destdir="${jcov.jtobserver.classes}" classpath="${javatestjar}">
-            <include name="jcov/*"/>
-        </javac>
-        <jar destfile ="${build.dir}/jtobserver.jar" basedir="${jcov.jtobserver.classes}" index="false"/>
-    </target>
-
-    <target name="build"
-            depends="build-jcov, build-file.saver, build-network.saver, build-jt.observer"
-            description="Creates the build-distribution.">
-    </target>
-
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+  Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+  This code is free software; you can redistribute it and/or modify it
+  under the terms of the GNU General Public License version 2 only, as
+  published by the Free Software Foundation.  Oracle designates this
+  particular file as subject to the "Classpath" exception as provided
+  by Oracle in the LICENSE file that accompanied this code.
+
+  This code is distributed in the hope that it will be useful, but WITHOUT
+  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+  version 2 for more details (a copy is included in the LICENSE file that
+  accompanied this code).
+
+  You should have received a copy of the GNU General Public License version
+  2 along with this work; if not, write to the Free Software Foundation,
+  Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+  Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+  or visit www.oracle.com if you need additional information or have any
+  questions.
+-->
+
+<project name="JCov" default="build" basedir=".">
+
+    <property file="release.properties"/>
+    <property file="build.properties"/>
+
+    <!-- Build area -->
+    <property name="build.dir" location="${result.dir}/jcov_${build.version}"/>
+    <property name="jcov.classpath" value="${asmjar5}:${java.home}/lib/tools.jar"/>
+
+    <!-- Temp dir is for files which do not appear in release directory -->
+    <property name="tmp.dir" location="${result.dir}/temp"/>
+
+    <property name="jcov.classes" location="${tmp.dir}/jcov_classes"/>
+    <property name="jcov.src.update" location="${tmp.dir}/jcov_src_update"/>
+
+    <property name="jcov.filesaver.classes" location="${tmp.dir}/jcov_filesaver_classes"/>
+    <property name="jcov.filesaver.src" location="${tmp.dir}/jcov_filesaver_src"/>
+
+    <property name="jcov.networksaver.classes" location="${tmp.dir}/jcov_network_classes"/>
+    <property name="jcov.networksaver.src" location="${tmp.dir}/jcov_network_src"/>
+
+    <property name="jcov.jtobserver.classes" location="${tmp.dir}/jcov_jtobserver_classes"/>
+
+    <patternset id="jcov.files">
+        <include name="com/sun/tdk/jcov/**"/>
+        <include name="resources/**"/>
+    </patternset>
+
+    <patternset id="jcov.file.saver.files">
+        <include name="com/sun/tdk/jcov/runtime/Collect.*"/>
+        <include name="com/sun/tdk/jcov/runtime/CollectDetect.*"/>
+        <include name="com/sun/tdk/jcov/runtime/JCovSaver.*"/>
+        <include name="com/sun/tdk/jcov/runtime/SaverDecorator.*"/>
+        <include name="com/sun/tdk/jcov/runtime/PropertyFinder.*"/>
+        <include name="com/sun/tdk/jcov/util/MapHelper.*"/>
+        <include name="com/sun/tdk/jcov/util/RuntimeUtils.*"/>
+        <include name="com/sun/tdk/jcov/runtime/TemplateFileSaver*"/>
+        <include name="com/sun/tdk/jcov/util/MapHelper.*"/>
+        <include name="com/sun/tdk/jcov/constants/MiscConstants*"/>
+    </patternset>
+
+    <patternset id="jcov.network.saver.files">
+        <include name="com/sun/tdk/jcov/runtime/Collect.*"/>
+        <include name="com/sun/tdk/jcov/runtime/CollectDetect.*"/>
+        <include name="com/sun/tdk/jcov/runtime/PropertyFinder.*"/>
+        <include name="com/sun/tdk/jcov/runtime/JCovSocketSaver.*"/>
+        <include name="com/sun/tdk/jcov/runtime/JCovSESocketSaver.*"/>
+        <include name="com/sun/tdk/jcov/runtime/JCovSaver.*"/>
+        <include name="com/sun/tdk/jcov/runtime/NetworkSatelliteDecorator.*"/>
+        <include name="com/sun/tdk/jcov/runtime/SaverDecorator.*"/>
+    </patternset>
+
+    <fileset dir="${src.dir}" id="jcov.resources.files">
+        <include name="com/sun/tdk/jcov/report/html/resources/**"/>
+        <include name="com/sun/tdk/jcov/logging.properties"/>
+        <exclude name="**/*.java"/>
+    </fileset>
+
+    <patternset id="asm.files">
+        <include name="org/objectweb/asm/**"/>
+    </patternset>
+
+    <target name="clean" description="clean build data">
+
+        <delete dir="${build.dir}"/>
+        <delete dir="${tmp.dir}"/>
+
+    </target>
+
+    <target name="prepare" depends="clean" description="checks dependencies">
+
+        <available file="${asmjar5}" property="asm.present"/>
+        <fail unless="asm.present" message="Please, specify asm library"/>
+
+        <condition property="javatest.present">
+            <not>
+                <equals arg1="${javatestjar}" arg2=""/>
+            </not>
+        </condition>
+
+        <mkdir dir="${jcov.src.update}"/>
+        <mkdir dir="${jcov.classes}"/>
+
+    </target>
+
+    <target name="build-date" description="adds bild and date information">
+        <tstamp>
+            <format property="date" pattern="dd MMMM yyyy" locale="en"/>
+        </tstamp>
+        <mkdir dir="${jcov.src.update}/com/sun/tdk/jcov/tools"/>
+        <echo file="${jcov.src.update}/com/sun/tdk/jcov/tools/JcovVersion.java">
+            /*
+            * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+            * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+            *
+            * This code is free software; you can redistribute it and/or modify it
+            * under the terms of the GNU General Public License version 2 only, as
+            * published by the Free Software Foundation.  Oracle designates this
+            * particular file as subject to the "Classpath" exception as provided
+            * by Oracle in the LICENSE file that accompanied this code.
+            *
+            * This code is distributed in the hope that it will be useful, but WITHOUT
+            * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+            * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+            * version 2 for more details (a copy is included in the LICENSE file that
+            * accompanied this code).
+            *
+            * You should have received a copy of the GNU General Public License version
+            * 2 along with this work; if not, write to the Free Software Foundation,
+            * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+            *
+            * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+            * or visit www.oracle.com if you need additional information or have any
+            * questions.
+            */
+
+            package com.sun.tdk.jcov.tools;
+
+            public class JcovVersion{
+            public static final String jcovVersion = "${build.version}";
+            public static final String jcovMilestone = "${build.milestone}";
+            public static final String jcovBuildNumber = "${build.number}";
+            public static final String jcovBuildDate = "${date}";
+            public static String getJcovVersion() {
+                return String.format("%s%s-%s built: %s", jcovVersion, jcovMilestone, jcovBuildNumber, jcovBuildDate);
+              }
+            }
+        </echo>
+
+    </target>
+
+    <target name="compile"  depends="prepare, build-date"
+            description="compile main tools">
+
+        <javac encoding="iso-8859-1" debug="true" target="1.5" source="1.5"
+               srcdir="${jcov.src.update}"
+               destdir="${jcov.classes}"
+               classpath="${jcov.classpath}">
+        </javac>
+
+        <javac encoding="iso-8859-1" debug="true" target="1.5" source="1.5"
+               srcdir="${src.dir}"
+               destdir="${jcov.classes}"
+               classpath="${jcov.classpath}">
+            <patternset refid="jcov.files"/>
+        </javac>
+
+        <copy todir="${jcov.classes}">
+            <fileset refid="jcov.resources.files"/>
+        </copy>
+    </target>
+
+    <patternset id="jcov.services">
+        <include name="META-INF/services/**"/>
+    </patternset>
+
+    <target name="build-jcov" depends="compile" description="build jcov jar">
+        <unjar src="${asmjar5}" dest="${jcov.classes}"/>
+
+        <mkdir dir="${jcov.classes}/META-INF"/>
+        <mkdir dir="${jcov.classes}/META-INF/services"/>
+        <echo file="${jcov.classes}/META-INF/services/com.sun.tdk.jcov.report.ancfilters.DefaultAncFilter"
+              append="false">
+            com.sun.tdk.jcov.report.ancfilters.ToStringANCFilter
+            com.sun.tdk.jcov.report.ancfilters.DeprecatedANCFilter
+            com.sun.tdk.jcov.report.ancfilters.EmptyANCFilter
+            com.sun.tdk.jcov.report.ancfilters.CatchANCFilter
+            com.sun.tdk.jcov.report.ancfilters.ThrowANCFilter
+            com.sun.tdk.jcov.report.ancfilters.SyntheticANCFilter
+            com.sun.tdk.jcov.report.ancfilters.GetterANCFilter
+            com.sun.tdk.jcov.report.ancfilters.SetterANCFilter
+        </echo>
+
+        <jar destfile="${build.dir}/jcov.jar" basedir="${jcov.classes}" index="false">
+            <manifest>
+                <attribute name="Built-By"   value="${user.name}"/>
+                <attribute name="Premain-Class" value="com.sun.tdk.jcov.Agent"/>
+                <attribute name="Boot-Class-Path" value="jcov.jar"/>
+                <attribute name="Main-Class" value="com.sun.tdk.jcov.Helper"/>
+                <attribute name="Can-Retransform-Classes" value="true"/>
+                <attribute name="Can-Set-Native-Method-Prefix" value="true" />
+            </manifest>
+
+            <patternset refid="jcov.files"/>
+            <patternset refid="asm.files"/>
+            <patternset refid="jcov.services"/>
+        </jar>
+
+    </target>
+
+    <target name="build-file.saver" depends="prepare" description="build file saver jar">
+
+        <mkdir dir="${jcov.filesaver.classes}"/>
+        <mkdir dir="${jcov.filesaver.src}"/>
+
+        <copy todir="${jcov.filesaver.src}">
+            <fileset dir="${src.dir}">
+                <patternset refid="jcov.file.saver.files"/>
+            </fileset>
+            <fileset dir="${jcov.src.update}">
+            </fileset>
+            <filterchain>
+                <tokenfilter>
+                    <replaceregex pattern="\/\*@" replace="@"/>
+                    <replaceregex pattern="@\*\/" replace="@"/>
+                </tokenfilter>
+                <filterreader classname="org.apache.tools.ant.filters.ReplaceTokens">
+                    <param type="propertiesfile" value="filesaver.replace.properties"/>
+                </filterreader>
+            </filterchain>
+        </copy>
+        <javac encoding="iso-8859-1" debug="true" target="1.5" source="1.5"
+               srcdir="${jcov.filesaver.src}"
+               sourcepath=""
+               classpath="${jcov.filesaver.classes}"
+               destdir="${jcov.filesaver.classes}">
+        </javac>
+        <jar destfile="${build.dir}/jcov_file_saver.jar"
+             basedir="${jcov.filesaver.classes}"
+             index="false">
+            <manifest>
+                <attribute name="Built-By" value="${user.name}"/>
+            </manifest>
+        </jar>
+    </target>
+
+    <target name="build-network.saver" depends="prepare" description="build network saver jar">
+
+        <mkdir dir="${jcov.networksaver.classes}"/>
+        <mkdir dir="${jcov.networksaver.src}"/>
+
+        <copy todir="${jcov.networksaver.src}">
+            <fileset dir="${src.dir}">
+                <patternset refid="jcov.network.saver.files"/>
+            </fileset>
+            <filterchain>
+                <tokenfilter>
+                    <replaceregex pattern="\/\*@" replace="@"/>
+                    <replaceregex pattern="@\*\/" replace="@"/>
+                </tokenfilter>
+                <filterreader classname="org.apache.tools.ant.filters.ReplaceTokens">
+                    <param type="propertiesfile" value="networksaver.replace.properties"/>
+                </filterreader>
+            </filterchain>
+        </copy>
+        <javac encoding="iso-8859-1" debug="true" target="1.5" source="1.5"
+               srcdir="${jcov.networksaver.src}"
+               sourcepath=""
+               classpath="${jcov.networksaver.classes}"
+               destdir="${jcov.networksaver.classes}">
+        </javac>
+        <jar destfile="${build.dir}/jcov_network_saver.jar"
+             basedir="${jcov.networksaver.classes}"
+             index="false">
+            <manifest>
+                <attribute name="Built-By" value="${user.name}"/>
+            </manifest>
+        </jar>
+    </target>
+
+    <target name="build-jt.observer" depends="prepare" if ="javatest.present" description="build jtobserver jar">
+        <mkdir dir="${jcov.jtobserver.classes}"/>
+        <javac encoding="iso-8859-1" debug="true" target="1.6" source="1.6"
+               srcdir="${src.dir}"
+               sourcepath=""
+               destdir="${jcov.jtobserver.classes}" classpath="${javatestjar}">
+            <include name="jcov/*"/>
+        </javac>
+        <jar destfile ="${build.dir}/jtobserver.jar" basedir="${jcov.jtobserver.classes}" index="false"/>
+    </target>
+
+    <target name="build"
+            depends="build-jcov, build-file.saver, build-network.saver, build-jt.observer"
+            description="Creates the build-distribution.">
+    </target>
+
 </project>
\ No newline at end of file
--- a/src/classes/com/sun/tdk/jcov/JREInstr.java	Wed Dec 02 20:24:32 2015 +0300
+++ b/src/classes/com/sun/tdk/jcov/JREInstr.java	Tue Mar 01 15:57:49 2016 +0300
@@ -142,6 +142,11 @@
                     File orig_jimage = new File(jdk.getCanonicalPath() + jimage_path);
                     File instr_jimage = new File(newJdkDir.getCanonicalPath() + jimage_path);
 
+                    if (!orig_jimage.exists()) {
+                        jimage_path = File.separator + "lib" + File.separator + "modules";
+                        orig_jimage = new File(jdk.getCanonicalPath() + jimage_path);
+                        instr_jimage = new File(newJdkDir.getCanonicalPath() + jimage_path);
+                    }
                     Utils.copyFile(orig_jimage, new File(orig_jimage.getParent(), orig_jimage.getName() + ".bak"));
 
                     if (!orig_jimage.delete()) {
--- a/src/classes/com/sun/tdk/jcov/RepGen.java	Wed Dec 02 20:24:32 2015 +0300
+++ b/src/classes/com/sun/tdk/jcov/RepGen.java	Tue Mar 01 15:57:49 2016 +0300
@@ -29,6 +29,7 @@
 import com.sun.tdk.jcov.instrument.DataClass;
 import com.sun.tdk.jcov.processing.DataProcessorSPI;
 import com.sun.tdk.jcov.report.AncFilter;
+import com.sun.tdk.jcov.report.ancfilters.DefaultAncFilter;
 import com.sun.tdk.jcov.util.Utils;
 import com.sun.tdk.jcov.data.FileFormatException;
 import com.sun.tdk.jcov.data.Result;
@@ -62,6 +63,7 @@
 import static com.sun.tdk.jcov.tools.OptionDescr.*;
 import java.io.File;
 import java.util.Arrays;
+import java.util.ServiceLoader;
 import java.util.List;
 import org.objectweb.asm.Opcodes;
 
@@ -100,6 +102,7 @@
     private String[] fms = null;
     private String filter = null;
     private String[] ancfilters = null;
+    private String[] ancdeffilters = null;
     private boolean noAbstract = false;
     private boolean syntheticOn = false;
     private boolean isPublicAPI = false;
@@ -243,6 +246,35 @@
             }
         }
 
+        if (ancdeffilters != null) {
+            ServiceLoader<DefaultAncFilter> loader = ServiceLoader.load(DefaultAncFilter.class);
+            List<AncFilter> defaultANCFiltersList = new ArrayList<AncFilter>();
+            if (ancfiltersClasses != null && ancfiltersClasses.length > 0){
+                defaultANCFiltersList.addAll(Arrays.asList(ancfiltersClasses));
+            }
+            if (ancdeffilters.length == 1 && ancdeffilters[0].equals("all")){
+                for (DefaultAncFilter filter : loader) {
+                    defaultANCFiltersList.add(filter);
+                }
+            }
+            else {
+                for (String defaulAncFilter : ancdeffilters) {
+                    boolean found = false;
+                    for (DefaultAncFilter filter : loader) {
+                        if (defaulAncFilter.equals(filter.getFilterName())) {
+                            defaultANCFiltersList.add(filter);
+                            found = true;
+                            break;
+                        }
+                    }
+                    if (!found) {
+                        logger.log(Level.SEVERE, "There is no default ANC filter for \"{0}\" value", defaulAncFilter);
+                    }
+                }
+            }
+            ancfiltersClasses = defaultANCFiltersList.toArray(new AncFilter[defaultANCFiltersList.size()]);
+        }
+
         if (dataProcessorSPIs != null) {
             for (DataProcessorSPI spi : dataProcessorSPIs) {
                 logger.log(Level.INFO, "-- Applying data processor {0}", spi.getClass());
@@ -574,6 +606,14 @@
                     if (!syntheticOn) {
                         mergedResult.applyFilter(new ANC_FILTER());
                     }
+
+                    if (dataProcessorSPIs != null) {
+                        for (DataProcessorSPI spi : dataProcessorSPIs) {
+                            logger.log(Level.INFO, "-- Applying data processor {0}", spi.getClass());
+                            mergedResult = spi.getDataProcessor().process(mergedResult);
+                        }
+                    }
+
                     ProductCoverage coverage = new ProductCoverage(mergedResult, options.getSrcRootPaths(), null, isPublicAPI, noAbstract, ancfiltersClasses);
                     rg.generateReport(coverage, options);
 
@@ -648,6 +688,7 @@
                     DSC_VERBOSE,
                     DSC_FILTER_PLUGIN,
                     DSC_ANC_FILTER_PLUGINS,
+                    DSC_ANC_DEFAULT_FILTERS,
                     DSC_TEST_LIST,
                     DSC_ANONYM,
                     DSC_JAVAP,
@@ -681,6 +722,7 @@
 
         filter = opts.getValue(DSC_FILTER_PLUGIN);
         ancfilters = opts.getValues(DSC_ANC_FILTER_PLUGINS);
+        ancdeffilters = opts.getValues(DSC_ANC_DEFAULT_FILTERS);
         noAbstract = opts.isSet(DSC_NO_ABSTRACT);
         isPublicAPI = opts.isSet(DSC_PUBLIC_API);
         anonym = opts.isSet(DSC_ANONYM);
@@ -801,6 +843,10 @@
             new OptionDescr("ancfilter", new String[]{"ancf"}, "Custom anc filtering plugin classes", OptionDescr.VAL_MULTI,
                     "");
 
+    final static OptionDescr DSC_ANC_DEFAULT_FILTERS =
+            new OptionDescr("ancdeffilters", new String[]{"ancdf"}, "Default ANC filters names to use in report", OptionDescr.VAL_MULTI,
+                    "");
+
     /**
      *
      */
--- a/src/classes/com/sun/tdk/jcov/TmplGen.java	Wed Dec 02 20:24:32 2015 +0300
+++ b/src/classes/com/sun/tdk/jcov/TmplGen.java	Tue Mar 01 15:57:49 2016 +0300
@@ -102,10 +102,17 @@
         return SUCCESS_EXIT_CODE;
     }
 
-    private boolean expandJimage(File jimage, String tempDirName){
+    private boolean expandJimage(File jimage, String tempDirName, boolean isModulesDir){
         try {
-            String command = jimage.getParentFile().getParentFile().getParent()+File.separator+"bin"+File.separator+"jimage extract --dir "+
-                    jimage.getParent()+File.separator+tempDirName+" "+jimage.getAbsolutePath();
+            String command = "";
+            if (isModulesDir) {
+                command = jimage.getParentFile().getParentFile().getParent() + File.separator + "bin" + File.separator + "jimage extract --dir " +
+                        jimage.getParent() + File.separator + tempDirName + " " + jimage.getAbsolutePath();
+            }
+            else{
+                command = jimage.getParentFile().getParentFile() + File.separator + "bin" + File.separator + "jimage extract --dir " +
+                        jimage.getParent() + File.separator + tempDirName + " " + jimage.getAbsolutePath();
+            }
             Process process = Runtime.getRuntime().exec(command);
             process.waitFor();
             if (process.exitValue() != 0) {
@@ -123,26 +130,12 @@
         setDefaultInstrumenter();
         for (String root : files) {
             if (root.endsWith(".jimage")){
-                File rootFile = new File(root);
-                String jimagename = getJImageName(rootFile);
-
-                expandJimage(rootFile, "temp_"+jimagename);
-                File tempJimage = new File(rootFile.getParentFile().getAbsolutePath()+File.separator+"temp_"+jimagename);
-                //still need it
-                Utils.addToClasspath(new String[]{tempJimage.getAbsolutePath()});
-                for (File file:tempJimage.listFiles()){
-                    if (file.isDirectory()){
-                        Utils.addToClasspath(new String[]{file.getAbsolutePath()});
-                    }
-                }
-                for (File file:tempJimage.listFiles()){
-                    if (file.isDirectory()){
-                        currentModule = file.getName();
-                        instrumenter.instrument(file, null);
-                    }
-                }
+                readJImage(new File(root), true);
             }
-            else {
+            else if (root.endsWith("modules") && (new File(root).isFile())) {
+                readJImage(new File(root), false);
+            }
+            else{
                 instrumenter.instrument(new File(root), null);
             }
         }
@@ -151,11 +144,40 @@
                 File rootFile = new File(root);
                 Utils.deleteDirectory(new File(rootFile.getParentFile().getAbsolutePath() + File.separator + "temp_" + getJImageName(rootFile)));
             }
+            if (root.endsWith("modules")){
+                File rootFile = new File(root);
+                if (rootFile.isFile()){
+                    Utils.deleteDirectory(new File(rootFile.getParentFile().getAbsolutePath() + File.separator + "temp_modules"));
+                }
+            }
         }
         instrumenter.finishWork();
         instrumenter = null;
     }
 
+    private void readJImage(File rootFile, boolean isModulesDir) throws IOException{
+        String jimagename = "modules";
+        if (isModulesDir) {
+            jimagename = getJImageName(rootFile);
+        }
+
+        expandJimage(rootFile, "temp_"+jimagename, isModulesDir);
+        File tempJimage = new File(rootFile.getParentFile().getAbsolutePath()+File.separator+"temp_"+jimagename);
+        //still need it
+        Utils.addToClasspath(new String[]{tempJimage.getAbsolutePath()});
+        for (File file:tempJimage.listFiles()){
+            if (file.isDirectory()){
+                Utils.addToClasspath(new String[]{file.getAbsolutePath()});
+            }
+        }
+        for (File file:tempJimage.listFiles()){
+            if (file.isDirectory()){
+                currentModule = file.getName();
+                instrumenter.instrument(file, null);
+            }
+        }
+    }
+
     private String getJImageName(File jimage){
         String jimagename = jimage.getName();
         int pos = jimagename.lastIndexOf(".");
--- a/src/classes/com/sun/tdk/jcov/data/Scale.java	Wed Dec 02 20:24:32 2015 +0300
+++ b/src/classes/com/sun/tdk/jcov/data/Scale.java	Tue Mar 01 15:57:49 2016 +0300
@@ -227,7 +227,7 @@
         return (scale_size + 8 - 1) / 8;
     }
 
-    static Scale createZeroScale(int size) {
+    public static Scale createZeroScale(int size) {
         Scale res = new Scale();
         res.size = size;
         res.bytes = new byte[bytesRequiredFor(size)];
--- a/src/classes/com/sun/tdk/jcov/instrument/DataExitSimple.java	Wed Dec 02 20:24:32 2015 +0300
+++ b/src/classes/com/sun/tdk/jcov/instrument/DataExitSimple.java	Tue Mar 01 15:57:49 2016 +0300
@@ -47,7 +47,7 @@
         this.opcode = opcode;
     }
 
-    String opcodeName() {
+    public String opcodeName() {
         return Constants.opcNames[opcode];
     }
 
--- a/src/classes/com/sun/tdk/jcov/report/MethodCoverage.java	Wed Dec 02 20:24:32 2015 +0300
+++ b/src/classes/com/sun/tdk/jcov/report/MethodCoverage.java	Tue Mar 01 15:57:49 2016 +0300
@@ -24,6 +24,7 @@
  */
 package com.sun.tdk.jcov.report;
 
+import com.sun.tdk.jcov.data.Scale;
 import com.sun.tdk.jcov.instrument.DataMethod.LineEntry;
 import java.util.Map;
 import java.util.HashMap;
@@ -58,7 +59,7 @@
     private boolean anonymon = false;
     private DataType[] supportedColumns = {METHOD, BLOCK, BRANCH, LINE};
     private boolean isInAnc = false;
-    protected static String ancInfo;
+    protected String ancInfo;
 
     /**
      * <p> Creates new MethodCoverage instance without counting blocks </p>
@@ -148,7 +149,7 @@
     /**
      * Finds coverage items in terms of legacy jcov (blocks and branches)
      */
-    static void detectItems(DataMethod m, List<ItemCoverage> list, boolean isInAnc, AncFilter[] ancFilters) {
+     void detectItems(DataMethod m, List<ItemCoverage> list, boolean isInAnc, AncFilter[] ancFilters) {
         Map<DataBlock, ItemCoverage> added = new HashMap<DataBlock, ItemCoverage>();
 
         for (DataBlock db : m.getBlocks()) {
@@ -172,6 +173,14 @@
             for (DataBlock d : added.keySet()) {
                 if (d.startBCI() == db.startBCI() && type(d) == type(db) && added.get(d).isBlock()) {
                     added.get(d).count += db.getCount();
+
+                    if (added.get(d).scale != null && db.getScale() != null) {
+                        for (int i = 0; i < added.get(d).scale.size(); i++) {
+                            if (db.getScale().isBitSet(i)) {
+                                added.get(d).scale.setBit(i, true);
+                            }
+                        }
+                    }
                     isNew = false;
                     break;
                 }
@@ -202,6 +211,14 @@
             for (DataBlock d : added.keySet()) {
                 if (d.startBCI() == db.startBCI() && type(d) == type(db) && added.get(d).isBlock()) {
                     added.get(d).count += db.getCount();
+
+                    if (added.get(d).scale != null && db.getScale() != null) {
+                        for (int i = 0; i < added.get(d).scale.size(); i++) {
+                            if (db.getScale().isBitSet(i)) {
+                                added.get(d).scale.setBit(i, true);
+                            }
+                        }
+                    }
                     isNew = false;
                     break;
                 }
@@ -226,6 +243,17 @@
                 for (DataBlock d : added.keySet()) {
                     if (d.startBCI() == db.startBCI() && added.get(d).isBlock()) {
                         added.get(d).count += db.getCount();
+
+                        if (added.get(d).scale != null && db.getScale() != null){
+                            Scale s =  Scale.createZeroScale(added.get(d).scale.size());
+                            for (int j = 0; j < added.get(d).scale.size(); j++) {
+                                if (added.get(d).scale.isBitSet(j) || db.getScale().isBitSet(j)) {
+                                    s.setBit(j, true);
+                                }
+                            }
+                            added.get(d).scale = s;
+                        }
+
                         isNew = false;
                         break;
                     }
--- a/src/classes/com/sun/tdk/jcov/report/ProductCoverage.java	Wed Dec 02 20:24:32 2015 +0300
+++ b/src/classes/com/sun/tdk/jcov/report/ProductCoverage.java	Tue Mar 01 15:57:49 2016 +0300
@@ -402,7 +402,7 @@
         switch (column) {
             case PACKAGE:
                 for (PackageCoverage pCoverage : packages) {
-                    covered.add(pCoverage.getData(column));
+                    covered.add(pCoverage.getData(column, testNumber));
                 }
                 return covered;
             case CLASS:
@@ -413,7 +413,7 @@
             case LINE:
                 for (ClassCoverage classCoverage : classes) {
                     if (testNumber < 0 || classCoverage.isCoveredByTest(testNumber)) {
-                        covered.add(classCoverage.getData(column));
+                        covered.add(classCoverage.getData(column, testNumber));
                     } else {
                         covered.add(new CoverageData(0, 0, classCoverage.getData(column).getTotal()));
                     }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/classes/com/sun/tdk/jcov/report/ancfilters/CatchANCFilter.java	Tue Mar 01 15:57:49 2016 +0300
@@ -0,0 +1,64 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package com.sun.tdk.jcov.report.ancfilters;
+
+import com.sun.tdk.jcov.instrument.DataBlock;
+import com.sun.tdk.jcov.instrument.DataClass;
+import com.sun.tdk.jcov.instrument.DataMethod;
+import com.sun.tdk.jcov.instrument.XmlNames;
+
+/**
+ * @author Alexey Fedorchenko
+ */
+public class CatchANCFilter implements DefaultAncFilter {
+
+    @Override
+    public boolean accept(DataClass clz) {
+        return false;
+    }
+
+    @Override
+    public boolean accept(DataClass clz, DataMethod m) {
+        return false;
+    }
+
+    @Override
+    public boolean accept(DataMethod m, DataBlock b) {
+        if (b.kind() != null && b.kind().equals(XmlNames.CATCH)){
+            return true;
+        }
+        return false;
+    }
+
+    @Override
+    public String getAncReason() {
+        return "Catch block filter";
+    }
+
+    @Override
+    public String getFilterName() {
+        return "catch";
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/classes/com/sun/tdk/jcov/report/ancfilters/DefaultAncFilter.java	Tue Mar 01 15:57:49 2016 +0300
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package com.sun.tdk.jcov.report.ancfilters;
+
+import com.sun.tdk.jcov.report.AncFilter;
+
+/**
+ * @author Alexey Fedorchenko
+ */
+public interface DefaultAncFilter extends AncFilter {
+
+    public String getFilterName();
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/classes/com/sun/tdk/jcov/report/ancfilters/DeprecatedANCFilter.java	Tue Mar 01 15:57:49 2016 +0300
@@ -0,0 +1,66 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package com.sun.tdk.jcov.report.ancfilters;
+
+import com.sun.tdk.jcov.instrument.DataBlock;
+import com.sun.tdk.jcov.instrument.DataClass;
+import com.sun.tdk.jcov.instrument.DataMethod;
+import org.objectweb.asm.Opcodes;
+
+/**
+ * @author Alexey Fedorchenko
+ */
+public class DeprecatedANCFilter implements DefaultAncFilter {
+
+    @Override
+    public boolean accept(DataClass clz) {
+        return false;
+    }
+
+    @Override
+    public boolean accept(DataClass clz, DataMethod m) {
+
+        if ((m.getAccess() & Opcodes.ACC_DEPRECATED) != 0){
+            return true;
+        }
+
+        return false;
+    }
+
+    @Override
+    public boolean accept(DataMethod m, DataBlock b) {
+        return false;
+    }
+
+    @Override
+    public String getAncReason() {
+        return "Deprecated method filter";
+    }
+
+    @Override
+    public String getFilterName() {
+        return "deprecated";
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/classes/com/sun/tdk/jcov/report/ancfilters/EmptyANCFilter.java	Tue Mar 01 15:57:49 2016 +0300
@@ -0,0 +1,67 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package com.sun.tdk.jcov.report.ancfilters;
+
+import com.sun.tdk.jcov.instrument.DataBlock;
+import com.sun.tdk.jcov.instrument.DataClass;
+import com.sun.tdk.jcov.instrument.DataMethod;
+
+/**
+ * @author Alexey Fedorchenko
+ */
+public class EmptyANCFilter implements DefaultAncFilter {
+
+    @Override
+    public boolean accept(DataClass clz) {
+        return false;
+    }
+
+    @Override
+    public boolean accept(DataClass clz, DataMethod m) {
+
+        if (m.getBlocks().size() == 1
+                && m.getBlocks().get(0).startBCI() == 0
+                && m.getBlocks().get(0).startBCI() == m.getBlocks().get(0).endBCI()){
+            return true;
+        }
+
+        return false;
+    }
+
+    @Override
+    public boolean accept(DataMethod m, DataBlock b) {
+        return false;
+    }
+
+    @Override
+    public String getAncReason() {
+        return "Empty method filter";
+    }
+
+    @Override
+    public String getFilterName() {
+        return "empty";
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/classes/com/sun/tdk/jcov/report/ancfilters/GetterANCFilter.java	Tue Mar 01 15:57:49 2016 +0300
@@ -0,0 +1,70 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package com.sun.tdk.jcov.report.ancfilters;
+
+import com.sun.tdk.jcov.instrument.DataBlock;
+import com.sun.tdk.jcov.instrument.DataClass;
+import com.sun.tdk.jcov.instrument.DataMethod;
+
+/**
+ * @author Alexey Fedorchenko
+ */
+public class GetterANCFilter implements DefaultAncFilter {
+
+    @Override
+    public boolean accept(DataClass clz) {
+        return false;
+    }
+
+    @Override
+    public boolean accept(DataClass clz, DataMethod m) {
+
+        if (m.getName().startsWith("get")
+                && m.getBlocks().size() == 1
+                && m.getBlocks().get(0).startBCI() == 0
+                && m.getBlocks().get(0).endBCI() == 4
+                && m.getVmSignature().startsWith("()")) {
+            return true;
+        }
+
+        return false;
+    }
+
+    @Override
+    public boolean accept(DataMethod m, DataBlock b) {
+        return false;
+    }
+
+    @Override
+    public String getAncReason() {
+        return "Getter method filter";
+    }
+
+    @Override
+    public String getFilterName() {
+        return "getter";
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/classes/com/sun/tdk/jcov/report/ancfilters/SetterANCFilter.java	Tue Mar 01 15:57:49 2016 +0300
@@ -0,0 +1,69 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package com.sun.tdk.jcov.report.ancfilters;
+
+import com.sun.tdk.jcov.instrument.DataBlock;
+import com.sun.tdk.jcov.instrument.DataClass;
+import com.sun.tdk.jcov.instrument.DataMethod;
+
+/**
+ * @author Alexey Fedorchenko
+ */
+public class SetterANCFilter implements DefaultAncFilter {
+
+    @Override
+    public boolean accept(DataClass clz) {
+        return false;
+    }
+
+    @Override
+    public boolean accept(DataClass clz, DataMethod m) {
+
+        if (m.getName().startsWith("set")
+                && m.getBlocks().size() == 1
+                && m.getBlocks().get(0).startBCI() == 0
+                && m.getBlocks().get(0).endBCI() == 5
+                && m.getVmSignature().length() - m.getVmSignature().replaceAll(";","").length() <= 1){
+            return true;
+        }
+
+        return false;
+    }
+
+    @Override
+    public boolean accept(DataMethod m, DataBlock b) {
+        return false;
+    }
+
+    @Override
+    public String getAncReason() {
+        return "Setter method filter";
+    }
+
+    @Override
+    public String getFilterName() {
+        return "setter";
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/classes/com/sun/tdk/jcov/report/ancfilters/SyntheticANCFilter.java	Tue Mar 01 15:57:49 2016 +0300
@@ -0,0 +1,66 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package com.sun.tdk.jcov.report.ancfilters;
+
+import com.sun.tdk.jcov.instrument.DataBlock;
+import com.sun.tdk.jcov.instrument.DataClass;
+import com.sun.tdk.jcov.instrument.DataMethod;
+import org.objectweb.asm.Opcodes;
+
+/**
+ * @author Alexey Fedorchenko
+ */
+public class SyntheticANCFilter implements DefaultAncFilter {
+
+    @Override
+    public boolean accept(DataClass clz) {
+        return false;
+    }
+
+    @Override
+    public boolean accept(DataClass clz, DataMethod m) {
+
+        if ((m.getAccess() & Opcodes.ACC_SYNTHETIC) != 0){
+            return true;
+        }
+
+        return false;
+    }
+
+    @Override
+    public boolean accept(DataMethod m, DataBlock b) {
+        return false;
+    }
+
+    @Override
+    public String getAncReason() {
+        return "Synthetic method filter";
+    }
+
+    @Override
+    public String getFilterName() {
+        return "synthetic";
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/classes/com/sun/tdk/jcov/report/ancfilters/ThrowANCFilter.java	Tue Mar 01 15:57:49 2016 +0300
@@ -0,0 +1,69 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package com.sun.tdk.jcov.report.ancfilters;
+
+import com.sun.tdk.jcov.instrument.*;
+
+/**
+ * @author Alexey Fedorchenko
+ */
+public class ThrowANCFilter implements DefaultAncFilter {
+
+    @Override
+    public boolean accept(DataClass clz) {
+        return false;
+    }
+
+    @Override
+    public boolean accept(DataClass clz, DataMethod m) {
+        return false;
+    }
+
+    @Override
+    public boolean accept(DataMethod m, DataBlock b) {
+
+        if (m instanceof DataMethodWithBlocks){
+            for (BasicBlock bb : ((DataMethodWithBlocks) m).getBasicBlocks()){
+                if (bb.startBCI() == b.startBCI() && bb.endBCI() == b.endBCI()
+                        && bb.exit != null && bb.exit instanceof DataExitSimple
+                        && ((DataExitSimple) bb.exit).opcodeName().equals("athrow")){
+                    return true;
+                }
+            }
+        }
+
+        return false;
+    }
+
+    @Override
+    public String getAncReason() {
+        return "Throw block filter";
+    }
+
+    @Override
+    public String getFilterName() {
+        return "throw";
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/classes/com/sun/tdk/jcov/report/ancfilters/ToStringANCFilter.java	Tue Mar 01 15:57:49 2016 +0300
@@ -0,0 +1,69 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package com.sun.tdk.jcov.report.ancfilters;
+
+import com.sun.tdk.jcov.instrument.DataBlock;
+import com.sun.tdk.jcov.instrument.DataClass;
+import com.sun.tdk.jcov.instrument.DataMethod;
+
+/**
+ * @author Alexey Fedorchenko
+ */
+public class ToStringANCFilter implements DefaultAncFilter {
+
+    @Override
+    public boolean accept(DataClass clz) {
+        return false;
+    }
+
+    @Override
+    public boolean accept(DataClass clz, DataMethod m) {
+
+        if (m.getName() != null
+                && m.getName().equals("toString")
+                && m.getVmSignature().startsWith("()")){
+
+                return true;
+        }
+
+        return false;
+    }
+
+    @Override
+    public boolean accept(DataMethod m, DataBlock b) {
+        return false;
+    }
+
+    @Override
+    public String getAncReason() {
+        return "toString() method filter";
+    }
+
+    @Override
+    public String getFilterName() {
+        return "toString";
+    }
+
+}
--- a/src/classes/com/sun/tdk/jcov/report/html/CoverageReport.java	Wed Dec 02 20:24:32 2015 +0300
+++ b/src/classes/com/sun/tdk/jcov/report/html/CoverageReport.java	Tue Mar 01 15:57:49 2016 +0300
@@ -172,7 +172,7 @@
                 ArrayList<ModuleCoverageData> modulesCD = modules.get(moduleName);
                 if (testService != null && (isAddTestsInfo || isMergeRepGenMode)) {
                     for (int test = 0; test < testService.getTestCount(); test++) {
-                        modulesCD.get(test).addPackage(pkg);
+                        modulesCD.get(test).addPackage(pkg, test);
                     }
                 }
                 modulesCD.get(modulesCD.size()-1).addPackage(pkg);
@@ -779,6 +779,15 @@
                     pkg.getData(DataType.CLASS, testNumber)};
         }
 
+        public void addPackage(PackageCoverage pkg, int testNumber) {
+            collectedData[columns.field.number].add(pkg.getData(DataType.FIELD, testNumber));
+            collectedData[columns.method.number].add(pkg.getData(DataType.METHOD, testNumber));
+            collectedData[columns.block.number].add(pkg.getData(DataType.BLOCK, testNumber));
+            collectedData[columns.branch.number].add(pkg.getData(DataType.BRANCH, testNumber));
+            collectedData[columns.line.number].add(pkg.getData(DataType.LINE, testNumber));
+            collectedData[columns.classes.number].add(pkg.getData(DataType.CLASS, testNumber));
+        }
+
         public void addPackage(PackageCoverage pkg) {
             collectedData[columns.field.number].add(pkg.getData(DataType.FIELD));
             collectedData[columns.method.number].add(pkg.getData(DataType.METHOD));