1<?xml version="1.0" encoding="UTF-8" ?> 2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 3<html xmlns="http://www.w3.org/1999/xhtml" lang="en"> 4<head> 5 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 6 <link rel="stylesheet" href="resources/doc.css" charset="UTF-8" type="text/css" /> 7 <link rel="shortcut icon" href="resources/report.gif" type="image/gif" /> 8 <title>JaCoCo - Change History</title> 9</head> 10<body> 11 12<div class="breadcrumb"> 13 <a href="../index.html" class="el_report">JaCoCo</a> > 14 <a href="index.html" class="el_group">Documentation</a> > 15 <span class="el_source">Change History</span> 16</div> 17<div id="content"> 18 19<h1>Change History</h1> 20 21<h2>Release 0.8.7 (2020/05/04)</h2> 22 23<h3>New Features</h3> 24<ul> 25 <li>JaCoCo now officially supports Java 15 and 16 26 (GitHub <a href="https://github.com/jacoco/jacoco/issues/1094">#1094</a>, 27 <a href="https://github.com/jacoco/jacoco/issues/1097">#1097</a>, 28 <a href="https://github.com/jacoco/jacoco/issues/1176">#1176</a>).</li> 29 <li>Experimental support for Java 17 class files 30 (GitHub <a href="https://github.com/jacoco/jacoco/issues/1132">#1132</a>).</li> 31 <li>New <code>formats</code> parameter for Maven report goals to specify the 32 generated report formats. Contributed by troosan. 33 (GitHub <a href="https://github.com/jacoco/jacoco/issues/1175">#1175</a>).</li> 34 <li>Branch added by the Kotlin compiler version 1.4.0 and above for "unsafe" cast 35 operator is filtered out during generation of report 36 (GitHub <a href="https://github.com/jacoco/jacoco/issues/1143">#1143</a>, 37 <a href="https://github.com/jacoco/jacoco/issues/1178">#1178</a>).</li> 38 <li><code>synthetic</code> methods added by the Kotlin compiler version 1.5.0 and 39 above for <code>private</code> suspending functions are filtered out 40 (GitHub <a href="https://github.com/jacoco/jacoco/issues/1174">#1174</a>).</li> 41 <li>Branches added by the Kotlin compiler version 1.4.20 and above for suspending 42 lambdas are filtered out during generation of report 43 (GitHub <a href="https://github.com/jacoco/jacoco/issues/1149">#1149</a>).</li> 44 <li>Branches added by the Kotlin compiler version 1.5.0 and above for functions 45 with default arguments are filtered out during generation of report 46 (GitHub <a href="https://github.com/jacoco/jacoco/issues/1162">#1162</a>).</li> 47 <li>Branch added by the Kotlin compiler version 1.5.0 and above for reading from 48 <code>lateinit</code> property is filtered out during generation of report 49 (GitHub <a href="https://github.com/jacoco/jacoco/issues/1166">#1166</a>).</li> 50 <li>Additional bytecode generated by the Kotlin compiler version 1.5.0 and above 51 for <code>when</code> expressions on <code>kotlin.String</code> values 52 is filtered out during generation of report 53 (GitHub <a href="https://github.com/jacoco/jacoco/issues/1172">#1172</a>).</li> 54 <li>Improved filtering of bytecode generated by Kotlin compiler versions below 55 1.5.0 for <code>when</code> expressions on <code>kotlin.String</code> values 56 (GitHub <a href="https://github.com/jacoco/jacoco/issues/1156">#1156</a>).</li> 57</ul> 58 59<h3>Fixed bugs</h3> 60<ul> 61 <li>Fixed parsing of SMAP generated by Kotlin compiler version 1.5.0 and above 62 (GitHub <a href="https://github.com/jacoco/jacoco/issues/1164">#1164</a>).</li> 63</ul> 64 65<h3>Non-functional Changes</h3> 66<ul> 67 <li>JaCoCo now depends on ASM 9.1 68 (GitHub <a href="https://github.com/jacoco/jacoco/issues/1094">#1094</a>, 69 <a href="https://github.com/jacoco/jacoco/issues/1097">#1097</a>, 70 <a href="https://github.com/jacoco/jacoco/issues/1153">#1153</a>).</li> 71 <li>Maven plug-in has no dependency on <code>maven-reporting-impl</code> any more 72 (GitHub <a href="https://github.com/jacoco/jacoco/issues/1121">#1121</a>).</li> 73</ul> 74 75<h2>Release 0.8.6 (2020/09/15)</h2> 76 77<h3>New Features</h3> 78<ul> 79 <li>JaCoCo now officially supports Java 14.</li> 80 <li>Experimental support for Java 15 class files 81 (GitHub <a href="https://github.com/jacoco/jacoco/issues/992">#992</a>).</li> 82 <li>Experimental support for Java 16 class files 83 (GitHub <a href="https://github.com/jacoco/jacoco/issues/1059">#1059</a>).</li> 84 <li>Methods <code>toString</code>, <code>hashCode</code> and <code>equals</code> 85 generated by compiler for records are filtered out during generation of report 86 (GitHub <a href="https://github.com/jacoco/jacoco/issues/990">#990</a>).</li> 87 <li>Bridge methods are filtered out during generation of report 88 (GitHub <a href="https://github.com/jacoco/jacoco/issues/1010">#1010</a>).</li> 89 <li>Methods generated by Kotlin compiler for non-overridden non-abstract methods 90 of interfaces are filtered out during generation of report 91 (GitHub <a href="https://github.com/jacoco/jacoco/issues/1012">#1012</a>).</li> 92 <li>Branches added by the Kotlin compiler version 1.3.60 for suspending functions 93 with tail call optimization are filtered out during generation of report 94 (GitHub <a href="https://github.com/jacoco/jacoco/issues/1016">#1016</a>).</li> 95</ul> 96 97<h3>Fixed bugs</h3> 98<ul> 99 <li>Compression method of zip entries is now preserved when instrumenting archives. 100 This allows to use JaCoCo with frameworks that expect uncompressed entries 101 (GitHub <a href="https://github.com/jacoco/jacoco/issues/1018">#1018</a>).</li> 102</ul> 103 104<h3>Non-functional Changes</h3> 105<ul> 106 <li>Support for Pack200 was removed in JDK 14. JaCoCo will now throw a detailed 107 exception when Pack200 archives are processed with the latest JDKs 108 (GitHub <a href="https://github.com/jacoco/jacoco/issues/984">#984</a>).</li> 109 <li>JaCoCo now depends on ASM 8.0.1 110 (GitHub <a href="https://github.com/jacoco/jacoco/issues/1032">#1032</a>, 111 <a href="https://github.com/jacoco/jacoco/issues/1043">#1043</a>).</li> 112</ul> 113 114<h3>API Changes</h3> 115<ul> 116 <li><code>URLStreamHandlerRuntime</code> removed 117 (GitHub <a href="https://github.com/jacoco/jacoco/issues/471">#471</a>).</li> 118</ul> 119 120<h2>Release 0.8.5 (2019/10/11)</h2> 121 122<h3>New Features</h3> 123<ul> 124 <li>JaCoCo now officially supports Java 13</li> 125 <li>Experimental support for Java 14 class files 126 (GitHub <a href="https://github.com/jacoco/jacoco/issues/897">#897</a>).</li> 127 <li>Branches added by the Kotlin compiler for <code>open</code> functions with 128 default arguments are filtered out during generation of report 129 (GitHub <a href="https://github.com/jacoco/jacoco/issues/887">#887</a>).</li> 130</ul> 131 132<h3>Fixed bugs</h3> 133<ul> 134 <li><code>synthetic</code> constructors that contain values of default arguments 135 in Kotlin should not be ignored 136 (GitHub <a href="https://github.com/jacoco/jacoco/issues/888">#888</a>).</li> 137 <li>Instrumentation should update indexes of local variables in annotations 138 (GitHub <a href="https://github.com/jacoco/jacoco/issues/894">#894</a>).</li> 139 <li>Branches added by the Kotlin compiler for functions with default arguments 140 and containing arguments of type <code>long</code> or <code>double</code> 141 should be filtered out during generation of report 142 (GitHub <a href="https://github.com/jacoco/jacoco/issues/908">#908</a>).</li> 143 <li><code>synthetic</code> methods that contain bodies of anonymous functions 144 in Scala should not be ignored 145 (GitHub <a href="https://github.com/jacoco/jacoco/issues/912">#912</a>).</li> 146 <li>To avoid failures with invalid class files report generation now checks 147 that source references are actually files 148 (GitHub <a href="https://github.com/jacoco/jacoco/issues/941">#941</a>).</li> 149 <li><code>NullPointerException</code> during filtering 150 (GitHub <a href="https://github.com/jacoco/jacoco/issues/942">#942</a>, 151 <a href="https://github.com/jacoco/jacoco/issues/944">#944</a>).</li> 152</ul> 153 154<h3>Non-functional Changes</h3> 155<ul> 156 <li>JaCoCo now distributed under the terms and conditions of the 157 Eclipse Public License Version 2.0 158 (GitHub <a href="https://github.com/jacoco/jacoco/issues/943">#943</a>).</li> 159 <li>Prevent startup when JaCoCo runtime cannot be initialized to avoid 160 subsequent faults 161 (GitHub <a href="https://github.com/jacoco/jacoco/issues/910">#910</a>).</li> 162 <li>JaCoCo now depends on ASM 7.2 163 (GitHub <a href="https://github.com/jacoco/jacoco/issues/947">#947</a>).</li> 164</ul> 165 166<h3>API Changes</h3> 167<ul> 168 <li>The coverage check API and tools (Ant, Maven) now report an error, when 169 a coverage ratio limit is configured outside the range [0,1] to avoid 170 common configuration mistakes 171 (GitHub <a href="https://github.com/jacoco/jacoco/issues/783">#783</a>).</li> 172 <li>Unsupported class file versions are now consistently reported as exceptions 173 by all methods of <code>Analyzer</code> and <code>Instrumenter</code> and 174 thus also during report generation and offline instrumentation 175 (GitHub <a href="https://github.com/jacoco/jacoco/issues/952">#952</a>).</li> 176</ul> 177 178<h2>Release 0.8.4 (2019/05/08)</h2> 179 180<h3>New Features</h3> 181<ul> 182 <li>JaCoCo now officially supports Java 12</li> 183 <li>Instrumentation does not add synthetic field to Java 11+ class files, 184 however still adds synthetic method 185 (GitHub <a href="https://github.com/jacoco/jacoco/issues/845">#845</a>).</li> 186 <li>Branches added by the Kotlin compiler version 1.3.30 for suspending lambdas 187 and functions are filtered out during generation of report 188 (GitHub <a href="https://github.com/jacoco/jacoco/issues/849">#849</a>).</li> 189</ul> 190 191<h3>Fixed bugs</h3> 192<ul> 193 <li>Fixed incorrect update of frames caused by bug in ASM library in case of 194 arrays with more than 7 dimensions 195 (GitHub <a href="https://github.com/jacoco/jacoco/issues/839">#839</a>).</li> 196 <li>Fixed regression, which was introduced in 0.8.3 - 197 <code>module-info.class</code> should be excluded from analysis to not cause 198 <code>IllegalStateException</code> 199 (GitHub <a href="https://github.com/jacoco/jacoco/issues/859">#859</a>).</li> 200</ul> 201 202<h3>API Changes</h3> 203<ul> 204 <li>Methods <code>Instrumenter.instrument(org.objectweb.asm.ClassReader)</code> 205 and <code>Analyzer.analyzeClass(org.objectweb.asm.ClassReader)</code> 206 were removed 207 (GitHub <a href="https://github.com/jacoco/jacoco/issues/850">#850</a>).</li> 208</ul> 209 210<h3>Non-functional Changes</h3> 211<ul> 212 <li>JaCoCo now depends on ASM 7.1 213 (GitHub <a href="https://github.com/jacoco/jacoco/issues/851">#851</a>).</li> 214</ul> 215 216<h2>Release 0.8.3 (2019/01/23)</h2> 217 218<h3>New Features</h3> 219<ul> 220 <li>jacoco-maven-plugin now requires at least Maven 3.0 221 (GitHub <a href="https://github.com/jacoco/jacoco/issues/821">#821</a>).</li> 222 <li>JaCoCo now officially supports Java 11 223 (GitHub <a href="https://github.com/jacoco/jacoco/issues/760">#760</a>).</li> 224 <li>Experimental support for Java 13 class files 225 (GitHub <a href="https://github.com/jacoco/jacoco/issues/835">#835</a>).</li> 226 <li>Branch added by the Kotlin compiler for "unsafe" cast operator is filtered 227 out during generation of report 228 (GitHub <a href="https://github.com/jacoco/jacoco/issues/761">#761</a>).</li> 229 <li>Branch added by the Kotlin compiler for not-null assertion operator is 230 filtered out during generation of report 231 (GitHub <a href="https://github.com/jacoco/jacoco/issues/815">#815</a>).</li> 232 <li>Instructions inlined by Kotlin compiler are filtered out during generation 233 of report 234 (GitHub <a href="https://github.com/jacoco/jacoco/issues/764">#764</a>).</li> 235 <li>Branches added by the Kotlin compiler for suspending lambdas and functions 236 are filtered out during generation of report 237 (GitHub <a href="https://github.com/jacoco/jacoco/issues/802">#802</a>, 238 <a href="https://github.com/jacoco/jacoco/issues/803">#803</a>, 239 <a href="https://github.com/jacoco/jacoco/issues/809">#809</a>).</li> 240 <li>Classes and methods annotated by annotation whose retention policy is 241 <code>runtime</code> or <code>class</code> and whose simple name contains 242 "Generated" (previously equality was required) are filtered out during 243 generation of report 244 (GitHub <a href="https://github.com/jacoco/jacoco/issues/822">#822</a>).</li> 245 <li>HTML report shows message when source file can't be found 246 (GitHub <a href="https://github.com/jacoco/jacoco/issues/801">#801</a>).</li> 247 <li>HTML report shows message when class has no debug information 248 (GitHub <a href="https://github.com/jacoco/jacoco/issues/818">#818</a>).</li> 249 <li>HTML report shows message when analyzed class does not match executed 250 (GitHub <a href="https://github.com/jacoco/jacoco/issues/819">#819</a>).</li> 251 <li>HTML report shows message when no class files specified and when 252 none of the analyzed classes contain code relevant for code coverage 253 (GitHub <a href="https://github.com/jacoco/jacoco/issues/833">#833</a>).</li> 254 <li>Empty class and sourcefile nodes are preserved and available in XML report 255 (GitHub <a href="https://github.com/jacoco/jacoco/issues/817">#817</a>).</li> 256 <li>Agent avoids conflicts with other agents when running on Java 9+ 257 (GitHub <a href="https://github.com/jacoco/jacoco/issues/829">#829</a>).</li> 258</ul> 259 260<h3>Fixed Bugs</h3> 261<ul> 262 <li><code>synthetic</code> methods that contain values of default arguments 263 in Kotlin should not be ignored 264 (GitHub <a href="https://github.com/jacoco/jacoco/issues/774">#774</a>).</li> 265 <li><code>synthetic</code> methods that represent <code>suspend</code> 266 functions in Kotlin should not be ignored 267 (GitHub <a href="https://github.com/jacoco/jacoco/issues/804">#804</a>).</li> 268 <li>Removed misleading parameters <code>includes</code> and 269 <code>excludes</code> from <code>dump</code>, <code>merge</code> and 270 <code>restore-instrumented-classes</code> goals of jacoco-maven-plugin, 271 because they have no effect 272 (GitHub <a href="https://github.com/jacoco/jacoco/issues/827">#827</a>).</li> 273</ul> 274 275<h3>Non-functional Changes</h3> 276<ul> 277 <li>JaCoCo now depends on ASM 7.0 278 (GitHub <a href="https://github.com/jacoco/jacoco/issues/760">#760</a>).</li> 279</ul> 280 281<h2>Release 0.8.2 (2018/08/21)</h2> 282 283<h3>New Features</h3> 284<ul> 285 <li>Experimental support for Java 11 and Java 12 class files, including 286 JEP 12 "preview features" 287 (GitHub <a href="https://github.com/jacoco/jacoco/issues/719">#719</a>, 288 <a href="https://github.com/jacoco/jacoco/issues/738">#738</a>, 289 <a href="https://github.com/jacoco/jacoco/issues/743">#743</a>).</li> 290 <li>Branches and instructions generated by javac 11 for try-with-resources 291 statement are filtered out 292 (GitHub <a href="https://github.com/jacoco/jacoco/issues/669">#669</a>).</li> 293 <li>Synthetic classes are filtered out during generation of report 294 (GitHub <a href="https://github.com/jacoco/jacoco/issues/668">#668</a>).</li> 295 <li>Part of bytecode generated by ECJ for <code>switch</code> statements on 296 <code>java.lang.String</code> values is filtered out during generation of 297 report 298 (GitHub <a href="https://github.com/jacoco/jacoco/issues/735">#735</a>, 299 <a href="https://github.com/jacoco/jacoco/issues/741">#741</a>, 300 <a href="https://github.com/jacoco/jacoco/issues/746">#746</a>).</li> 301 <li>Methods added by the Kotlin compiler that do not have line numbers are 302 filtered out during generation of report. Idea and implementation by 303 Nikolay Krasko 304 (GitHub <a href="https://github.com/jacoco/jacoco/issues/689">#689</a>).</li> 305 <li>Branch added by the Kotlin compiler for reading from <code>lateinit</code> 306 property is filtered out during generation of report. Implementation by 307 Fabian Mastenbroek 308 (GitHub <a href="https://github.com/jacoco/jacoco/issues/707">#707</a>).</li> 309 <li>Bytecode generated by Kotlin compiler for implicit <code>else</code> of 310 <code>when</code> expressions that list all cases of <code>enum</code> or 311 <code>sealed class</code> is filtered out during generation of report 312 (GitHub <a href="https://github.com/jacoco/jacoco/issues/721">#721</a>, 313 <a href="https://github.com/jacoco/jacoco/issues/729">#729</a>, 314 <a href="https://github.com/jacoco/jacoco/issues/749">#749</a>).</li> 315 <li>Additional bytecode generated by Kotlin compiler for <code>when</code> 316 expressions on <code>kotlin.String</code> values is filtered out during 317 generation of report 318 (GitHub <a href="https://github.com/jacoco/jacoco/issues/737">#737</a>, 319 <a href="https://github.com/jacoco/jacoco/issues/746">#746</a>).</li> 320 <li>Classes and methods annotated with annotation whose retention policy 321 is <code>runtime</code> or <code>class</code> and whose simple name 322 is <code>Generated</code> are filtered out during generation of report 323 (GitHub <a href="https://github.com/jacoco/jacoco/issues/731">#731</a>).</li> 324 <li>Maven goal <code>report-aggregate</code> now also considers dependencies 325 specified using version range. Idea and implementation by Lukas Krejc 326 (GitHub <a href="https://github.com/jacoco/jacoco/issues/658">#658</a>).</li> 327</ul> 328 329<h3>Fixed Bugs</h3> 330<ul> 331 <li>Don't insert stackmap frames into class files with version < 1.6, 332 this fixes regression which was introduced in version 0.6.5 333 (GitHub <a href="https://github.com/jacoco/jacoco/issues/667">#667</a>).</li> 334 <li>Question mark in filter expressions now correctly matches exactly one character 335 (GitHub <a href="https://github.com/jacoco/jacoco/issues/672">#672</a>).</li> 336 <li>Part of bytecode that javac generates for <code>switch</code> statement on 337 <code>java.lang.String</code> values with a small number cases is now correctly 338 filtered out during generation of report 339 (GitHub <a href="https://github.com/jacoco/jacoco/issues/730">#730</a>).</li> 340</ul> 341 342<h3>Non-functional Changes</h3> 343<ul> 344 <li>JaCoCo now depends on ASM 6.2.1 345 (GitHub <a href="https://github.com/jacoco/jacoco/issues/706">#706</a>, 346 <a href="https://github.com/jacoco/jacoco/issues/725">#725</a>).</li> 347 <li>Improved error message when already instrumented classes are used for 348 instrumentation or analysis 349 (GitHub <a href="https://github.com/jacoco/jacoco/issues/703">#703</a>).</li> 350 <li>JaCoCo build now requires at least Maven 3.3.9 and JDK 8 351 (GitHub <a href="https://github.com/jacoco/jacoco/issues/711">#711</a>).</li> 352</ul> 353 354<h3>API Changes</h3> 355<ul> 356 <li>The XML report now has an optional attribute <code>sourcefilename</code> 357 on the <code>class</code> element to allow unambiguously relate classes 358 to source files. The JaCoCo DTD version has been updated to 1.1 359 (GitHub <a href="https://github.com/jacoco/jacoco/issues/702">#702</a>).</li> 360</ul> 361 362<h2>Release 0.8.1 (2018/03/21)</h2> 363 364<h3>New Features</h3> 365<ul> 366 <li>JaCoCo now supports Java 10 367 (GitHub <a href="https://github.com/jacoco/jacoco/issues/629">#629</a>).</li> 368 <li>Empty constructor without parameters in enum is filtered out during 369 generation of report 370 (GitHub <a href="https://github.com/jacoco/jacoco/issues/649">#649</a>).</li> 371</ul> 372 373<h2>Release 0.8.0 (2018/01/02)</h2> 374 375<h3>New Features</h3> 376<ul> 377 <li>JaCoCo now officially supports Java 9 378 (GitHub <a href="https://github.com/jacoco/jacoco/issues/600">#600</a>).</li> 379 <li>JaCoCo now comes with a simple command line interface 380 (GitHub <a href="https://github.com/jacoco/jacoco/issues/525">#525</a>).</li> 381 <li>Limit configuration of Maven <code>check</code> goal and Ant 382 <code>check</code> element now also supports percentage values 383 (GitHub <a href="https://github.com/jacoco/jacoco/issues/534">#534</a>).</li> 384 <li>Manifests of JAR files now have <code>Automatic-Module-Name</code> for Java 9 385 (GitHub <a href="https://github.com/jacoco/jacoco/issues/565">#565</a>).</li> 386 <li>Maven aggregated reports will now also include modules of <code>runtime</code> 387 and <code>provided</code> dependencies 388 (GitHub <a href="https://github.com/jacoco/jacoco/issues/498">#498</a>, 389 <a href="https://github.com/jacoco/jacoco/issues/572">#572</a>).</li> 390</ul> 391 392<p> 393 During creation of reports various compiler generated artifacts are filtered 394 out, which otherwise require unnecessary and sometimes impossible tricks to 395 not have partial or missed coverage: 396</p> 397 398<ul> 399 <li>Methods <code>valueOf</code> and <code>values</code> of enum types 400 (GitHub <a href="https://github.com/jacoco/jacoco/issues/491">#491</a>).</li> 401 <li>Private empty no-argument constructors 402 (GitHub <a href="https://github.com/jacoco/jacoco/issues/529">#529</a>).</li> 403 <li>Methods annotated with <code>@lombok.Generated</code> to better integrate 404 with Lombok >= 1.16.14. Initial analysis and contribution by Rüdiger zu Dohna 405 (GitHub <a href="https://github.com/jacoco/jacoco/issues/513">#513</a>).</li> 406 <li>Methods annotated with <code>@groovy.transform.Generated</code> to better 407 integrate with Groovy >= 2.5.0. Thanks to Andres Almiray for adding the annotation to Groovy 408 (GitHub <a href="https://github.com/jacoco/jacoco/issues/610">#610</a>).</li> 409 <li>Part of bytecode for <code>synchronized</code> blocks 410 (GitHub <a href="https://github.com/jacoco/jacoco/issues/501">#501</a>).</li> 411 <li>Part of bytecode for try-with-resources statements 412 (GitHub <a href="https://github.com/jacoco/jacoco/issues/500">#500</a>).</li> 413 <li>Part of bytecode for <code>finally</code> blocks 414 (GitHub <a href="https://github.com/jacoco/jacoco/issues/604">#604</a>).</li> 415 <li>Part of bytecode for <code>switch</code> statements on 416 <code>java.lang.String</code> values 417 (GitHub <a href="https://github.com/jacoco/jacoco/issues/596">#596</a>).</li> 418</ul> 419 420<p> 421 Note: Tools that directly read <code>exec</code> files and embed JaCoCo for 422 this (such as SonarQube or Jenkins) will provide filtering functionality only 423 after they updated to this version of JaCoCo. 424</p> 425 426<h3>Fixed Bugs</h3> 427<ul> 428 <li>Fixed bug in instrumentation of exception handlers, which was causing damage 429 of structured locking in certain situations and as consequence poor 430 performance of instrumented methods, analysis and fix contributed by Allen Hair 431 (GitHub <a href="https://github.com/jacoco/jacoco/issues/627">#627</a>).</li> 432 <li><code>dump</code> commands now report error when server unexpectedly 433 closes connection without sending response 434 (GitHub <a href="https://github.com/jacoco/jacoco/issues/538">#538</a>).</li> 435 <li>Reduced chance of conflict with other agents 436 (GitHub <a href="https://github.com/jacoco/jacoco/issues/555">#555</a>).</li> 437 <li>Restored Maven <code>help</code> goal that was missing in version 0.7.9 438 (GitHub <a href="https://github.com/jacoco/jacoco/issues/559">#559</a>).</li> 439 <li><code>NullPointerException</code> during offline instrumentation of 440 <code>module-info.class</code> 441 (GitHub <a href="https://github.com/jacoco/jacoco/issues/600">#600</a>, 442 GitHub <a href="https://github.com/jacoco/jacoco/issues/634">#634</a>).</li> 443 <li>Incorrect update of frames caused by bug in ASM library 444 (GitHub <a href="https://github.com/jacoco/jacoco/issues/600">#600</a>).</li> 445 <li>Loss of <code>InnerClasses</code> attribute caused by bug in ASM library 446 (GitHub <a href="https://github.com/jacoco/jacoco/issues/600">#600</a>).</li> 447 <li><code>NegativeArraySizeException</code> during instrumentation caused by bug 448 in ASM library 449 (GitHub <a href="https://github.com/jacoco/jacoco/issues/600">#600</a>).</li> 450</ul> 451 452<h3>Non-functional Changes</h3> 453<ul> 454 <li>JaCoCo now depends on ASM 6.0 455 (GitHub <a href="https://github.com/jacoco/jacoco/issues/600">#600</a>).</li> 456 <li>More information about context is provided when unable to read input during 457 instrumentation 458 (GitHub <a href="https://github.com/jacoco/jacoco/issues/527">#527</a>).</li> 459 <li>More information about context is provided when unable to read stream during 460 analysis 461 (GitHub <a href="https://github.com/jacoco/jacoco/issues/541">#541</a>).</li> 462</ul> 463 464<h2>Release 0.7.9 (2017/02/05)</h2> 465 466<h3>Fixed Bugs</h3> 467<ul> 468 <li>"<code>java.lang.ClassFormatError: Short length on BootstrapMethods in class file</code>" 469 caused by bug in ASM library 470 (GitHub <a href="https://github.com/jacoco/jacoco/issues/462">#462</a>).</li> 471 <li>Do not recompute frames in case of large methods, otherwise 472 <code>java.lang.ClassNotFoundException</code> might be thrown 473 (GitHub <a href="https://github.com/jacoco/jacoco/issues/177">#177</a>).</li> 474 <li><code>ExecutionDataWriter.FORMAT_VERSION</code> is not a compile-time constant 475 (GitHub <a href="https://github.com/jacoco/jacoco/issues/474">#474</a>).</li> 476 <li>Maven goal "prepare-agent" should not overwrite existing property value if execution was skipped 477 (GitHub <a href="https://github.com/jacoco/jacoco/issues/486">#486</a>).</li> 478</ul> 479 480<h3>API Changes</h3> 481<ul> 482 <li><code>JaCoCo.ASM_API_VERSION</code> removed 483 (GitHub <a href="https://github.com/jacoco/jacoco/issues/474">#474</a>).</li> 484</ul> 485 486<h3>Non-functional Changes</h3> 487<ul> 488 <li>JaCoCo now depends on ASM 5.2.</li> 489 <li>OSGi metadata now generated automatically and additionally include 490 <code>uses</code> directives, <code>Require-Capability</code> attribute, 491 and export of all internal packages with <code>x-internal:=true</code> directive 492 (GitHub <a href="https://github.com/jacoco/jacoco/issues/211">#211</a>).</li> 493 <li>Removed OSGi attributes that were mistakenly added in version 0.6.1 into 494 <code>jacocoant.jar</code> that contains all dependencies 495 (GitHub <a href="https://github.com/jacoco/jacoco/issues/211">#211</a>).</li> 496</ul> 497 498<h2>Release 0.7.8 (2016/12/09)</h2> 499 500<h3>New Features</h3> 501<ul> 502 <li>User property <code>jacoco.dataFile</code> for parameter <code>dataFile</code> 503 of Maven <code>report</code> goal 504 (GitHub <a href="https://github.com/jacoco/jacoco/issues/322">#322</a>).</li> 505</ul> 506 507<h3>Fixed Bugs</h3> 508<ul> 509 <li>Use <code>RoundingMode#FLOOR</code> instead of 510 <code>RoundingMode#HALF_EVEN</code> for percentages in HTML report, so that 511 "99.5" is displayed as "99%", not as "100%" 512 (GitHub <a href="https://github.com/jacoco/jacoco/issues/452">#452</a>).</li> 513 <li>Do not add useless members into Java 8 interfaces that have only interface 514 initialization and abstract methods 515 (GitHub <a href="https://github.com/jacoco/jacoco/issues/441">#441</a>).</li> 516 <li>Fix instrumentation to not violate Java Virtual Machine Specification regarding 517 initialization of final fields, otherwise <code>IllegalAccessError</code> 518 will be thrown starting from OpenJDK 9 EA b127 519 (GitHub <a href="https://github.com/jacoco/jacoco/issues/434">#434</a>).</li> 520 <li>Fix instrumentation of interfaces with default methods to not create incorrect 521 constant pool entries, which lead to <code>IncompatibleClassChangeError</code> 522 starting from OpenJDK 9 EA b122 523 (GitHub <a href="https://github.com/jacoco/jacoco/issues/428">#428</a>).</li> 524 <li>Add Maven goal <code>report-aggregate</code> to lifecycle-mapping-metadata.xml 525 (GitHub <a href="https://github.com/jacoco/jacoco/issues/427">#427</a>).</li> 526</ul> 527 528<h3>Non-functional Changes</h3> 529<ul> 530 <li>Released JaCoCo JARs are not signed any more. Signed versions of JaCoCo are 531 now available from the Eclipse Orbit project 532 (GitHub <a href="https://github.com/jacoco/jacoco/issues/466">#466</a>).</li> 533 <li>Simplified numbering of versions - JaCoCo JARs in Maven Central repository 534 do not have qualifier any more 535 (GitHub <a href="https://github.com/jacoco/jacoco/issues/468">#468</a>).</li> 536</ul> 537 538<h2>Release 0.7.7 (2016/06/06)</h2> 539 540<h3>New Features</h3> 541<ul> 542 <li>New Maven goal <code>report-aggregate</code> to create reports for 543 multi-module projects 544 (GitHub <a href="https://github.com/jacoco/jacoco/issues/388">#388</a>).</li> 545 <li>New parameters <code>title</code> and <code>footer</code> for Maven 546 reporting goals allow customization of generated reports.</li> 547 <li>Renamed "dot" resources in generated HTML reports to become more web 548 hosting friendly 549 (GitHub <a href="https://github.com/jacoco/jacoco/issues/401">#401</a>).</li> 550 <li>Experimental support for Java 9 class files 551 (GitHub <a href="https://github.com/jacoco/jacoco/issues/406">#406</a>).</li> 552</ul> 553 554<h3>Fixed Bugs</h3> 555<ul> 556 <li>Don't suppress EOF errors in case of truncated execution data files 557 (GitHub <a href="https://github.com/jacoco/jacoco/issues/397">#397</a>).</li> 558</ul> 559 560<h3>Non-functional Changes</h3> 561<ul> 562 <li>JaCoCo now depends on ASM 5.1.</li> 563 <li>Empty probe arrays are not written to execution data files any more. This 564 reduces exec file size significantly for per-test data dumps. 565 (GitHub <a href="https://github.com/jacoco/jacoco/issues/387">#387</a>).</li> 566 <li>More information about context is provided when unable to read input during 567 analysis. 568 (GitHub <a href="https://github.com/jacoco/jacoco/issues/400">#400</a>).</li> 569 <li>Require at least Maven 3.0 for build of JaCoCo.</li> 570</ul> 571 572 573<h2>Release 0.7.6 (2016/02/18)</h2> 574 575<h3>New Features</h3> 576<ul> 577 <li>New agent option <code>inclnolocationclasses</code> to support execution 578 environments like Android where no source location is provided with classes 579 (GitHub <a href="https://github.com/jacoco/jacoco/issues/288">#288</a>).</li> 580 <li>Improved error message in case of incompatible execution data files. 581 (GitHub <a href="https://github.com/jacoco/jacoco/issues/319">#319</a>).</li> 582 <li>Command line agent options now supports comma in file names. Contributed 583 by Jochen Berger. 584 (GitHub <a href="https://github.com/jacoco/jacoco/issues/358">#358</a>).</li> 585</ul> 586 587<h3>Fixed Bugs</h3> 588<ul> 589 <li>Fix <code>MBeanClient</code> example 590 (GitHub <a href="https://github.com/jacoco/jacoco/issues/333">#333</a>).</li> 591 <li>Avoid <code>ConcurrentModificationException</code> during shutdown 592 (GitHub <a href="https://github.com/jacoco/jacoco/issues/364">#364</a>).</li> 593</ul> 594 595<h3>API Changes</h3> 596<ul> 597 <li>In case of incompatible execution data formats read from another JaCoCo 598 version <code>ExecutionDataReader.read()</code> now throws a 599 <code>IncompatibleExecDataVersionException</code>.</li> 600</ul> 601 602<h3>Non-functional Changes</h3> 603<ul> 604 <li>JaCoCo now depends on ASM 5.0.4.</li> 605</ul> 606 607 608<h2>Release 0.7.5 (2015/05/24)</h2> 609 610<h3>New Features</h3> 611<ul> 612 <li>Better detection of coverage in code blocks with implicit exceptions. 613 (GitHub <a href="https://github.com/jacoco/jacoco/issues/310">#310</a>).</li> 614 <li>Added lifecycle-mapping-metadata.xml for M2E 615 (GitHub <a href="https://github.com/jacoco/jacoco/issues/203">#203</a>).</li> 616 <li>Allow locales with country and variant for Ant report task 617 (GitHub <a href="https://github.com/jacoco/jacoco/issues/289">#289</a>).</li> 618</ul> 619 620<h3>Fixed Bugs</h3> 621<ul> 622 <li>For the Ant tasks <code>coverage</code> and <code>agent</code> the 623 <code>destfile</code> attribute is now passed as an absolute path also in 624 the default case 625 (GitHub <a href="https://github.com/jacoco/jacoco/issues/301">#301</a>).</li> 626</ul> 627 628<h3>API Changes</h3> 629<ul> 630 <li>The exec file version has been updated and is not compatible with previous 631 versions.</li> 632</ul> 633 634<h2>Release 0.7.4 (2015/02/26)</h2> 635 636<h3>Fixed Bugs</h3> 637<ul> 638 <li>Restored exec file compatibility with version 0.7.2 by fixing missing 639 probes in case of try/catch blocks which are jump targets. 640 (GitHub <a href="https://github.com/jacoco/jacoco/issues/286">#286</a>).</li> 641</ul> 642 643 644<h2>Release 0.7.3 (2015/02/19)</h2> 645 646<h3>New Features</h3> 647<ul> 648 <li>For offline instrumemtation agent configuration supports system properties 649 replacements. Implementation based on pull request of GitHub user 'debugger' 650 (GitHub <a href="https://github.com/jacoco/jacoco/issues/262">#262</a>).</li> 651 <li>Exclude dynamically generated classes from instrumentation for better 652 interoperability with JMockit, analysis contributed by Rogério Liesenfeld 653 (GitHub <a href="https://github.com/jacoco/jacoco/issues/272">#272</a>).</li> 654</ul> 655 656<h3>Fixed Bugs</h3> 657<ul> 658 <li>Instrumented bytecode now compatible with Android ART runtime, analysis 659 and fix contributed by Allen Hair 660 (GitHub <a href="https://github.com/jacoco/jacoco/issues/265">#265</a>).</li> 661</ul> 662 663<h2>Release 0.7.2 (2014/09/12)</h2> 664 665<h3>Fixed Bugs</h3> 666<ul> 667 <li>Do not ignore synthetic lambda methods to get code coverage for Java 8 668 lambda expressions 669 (GitHub <a href="https://github.com/jacoco/jacoco/issues/232">#232</a>).</li> 670</ul> 671 672<h3>New Features</h3> 673<ul> 674 <li>New configuration option for the JaCoCo agent 675 <code>inclbootstrapclasses</code> to also instrument classes from the 676 bootstrap class loader 677 (GitHub <a href="https://github.com/jacoco/jacoco/issues/49">#49</a>).</li> 678 <li>Agent uses unique file names to dump class files 679 (GitHub <a href="https://github.com/jacoco/jacoco/issues/225">#225</a>).</li> 680</ul> 681 682<h2>Release 0.7.1 (2014/05/08)</h2> 683 684<h3>Fixed Bugs</h3> 685<ul> 686 <li>Fixed failure with default methods in Java 8 interfaces 687 (GitHub <a href="https://github.com/jacoco/jacoco/issues/201">#201</a>).</li> 688 <li>Better interoperability with JMockit, analysis and fix contributed by Rogério 689 Liesenfeld (GitHub <a href="https://github.com/jacoco/jacoco/issues/35">#35</a> 690 and <a href="https://github.com/jacoco/jacoco/issues/54">#54</a>).</li> 691</ul> 692 693<h3>Non-functional Changes</h3> 694<ul> 695 <li>JaCoCo now depends on ASM 5.0.1 696 (GitHub <a href="https://github.com/jacoco/jacoco/issues/201">#201</a>).</li> 697</ul> 698 699<h2>Release 0.7.0 (2014/03/18)</h2> 700 701<h3>New Features</h3> 702<ul> 703 <li>JaCoCo now supports Java 8 704 (GitHub <a href="https://github.com/jacoco/jacoco/issues/74">#74</a>).</li> 705</ul> 706 707<h3>Non-functional Changes</h3> 708<ul> 709 <li>JaCoCo now depends on ASM 5.0 using asm-debug-all instead of asm-all 710 (GitHub <a href="https://github.com/jacoco/jacoco/issues/199">#199</a>).</li> 711</ul> 712 713<h2>Release 0.6.5 (2014/03/03)</h2> 714 715<h3>New Features</h3> 716<ul> 717 <li>Warnings are logged during report generation if different versions of 718 classes are used than at runtime (GitHub <a href="https://github.com/jacoco/jacoco/issues/185">#185</a>).</li> 719 <li>Signatures are removed from instrumented JAR files 720 (GitHub <a href="https://github.com/jacoco/jacoco/issues/186">#186</a>).</li> 721</ul> 722 723<h3>Fixed Bugs</h3> 724<ul> 725 <li>Skip jacoco instrumentation for mvn modules with package type ear (GitHub <a href="https://github.com/jacoco/jacoco/issues/169">#169</a>).</li> 726 <li>Align skip conditions and messages for Maven goals and give reasons. This 727 includes removal of the specific skip condition for packages e.g. POMs and 728 instead checks existence of <tt>target/classes</tt> in appropriate goals 729 (GitHub <a href="https://github.com/jacoco/jacoco/issues/171">#171</a>).</li> 730 <li>GitHub #44: (Regression) Agent Mojo should set empty property, if execution was skipped 731 (GitHub <a href="https://github.com/jacoco/jacoco/issues/192">#192</a>).</li> 732</ul> 733 734<h3>API Changes</h3> 735<ul> 736 <li>Restrict visibility of methods in abstract classes of jacoco-maven-plugin (GitHub <a href="https://github.com/jacoco/jacoco/issues/175">#175</a>).</li> 737</ul> 738 739<h2>Release 0.6.4 (2013/12/10)</h2> 740 741<h3>New Features</h3> 742<ul> 743 <li>Support for Android <i>Strict Mode</i> (GitHub <a href="https://github.com/jacoco/jacoco/issues/113">#113</a>).</li> 744 <li>New dump Mojo for Maven plug-in (GitHub <a href="https://github.com/jacoco/jacoco/issues/107">#107</a>).</li> 745 <li>New merge Mojo for Maven plug-in, contributed by Mads Mohr Christensen 746 (GitHub <a href="https://github.com/jacoco/jacoco/issues/126">#126</a>).</li> 747 <li>Additional list of source files for every package in HTML report 748 (GitHub <a href="https://github.com/jacoco/jacoco/issues/142">#142</a>).</li> 749 <li>Additional report-integration and prepare-agent-integration goals for 750 integration tests. (GitHub <a href="https://github.com/jacoco/jacoco/issues/152">#152</a>, <a href="https://github.com/jacoco/jacoco/issues/161">#161</a>).</li> 751</ul> 752 753<h3>Fixed Bugs</h3> 754<ul> 755 <li>Multiple executions of Maven goal "prepare-agent" should not lead to 756 incorrect configuration (GitHub <a href="https://github.com/jacoco/jacoco/issues/40">#40</a>).</li> 757 <li>Avoid direct dependency on java.lang.management APIs to allow usage on 758 Android (GitHub <a href="https://github.com/jacoco/jacoco/issues/150">#150</a>).</li> 759 <li>All JaCoCo Maven goals are marked as thread-safe (GitHub <a href="https://github.com/jacoco/jacoco/issues/133">#133</a>).</li> 760 <li>check and merge goal failures in jacoco-maven-plugin with Maven 2.2.1 761 due to incompatible configuration (GitHub <a href="https://github.com/jacoco/jacoco/issues/129">#129</a>).</li> 762</ul> 763 764<h3>API Changes</h3> 765<ul> 766 <li>New API package <code>org.jacoco.core.tools</code> for shared high-level 767 tools. (GitHub <a href="https://github.com/jacoco/jacoco/issues/159">#159</a>).</li> 768</ul> 769 770<h2>Release 0.6.3 (2013/06/03)</h2> 771 772<h3>New Features</h3> 773<ul> 774 <li>Support for archives in Pack200 format (GitHub <a href="https://github.com/jacoco/jacoco/issues/91">#91</a>).</li> 775 <li>The coverage check has been reworked to allow checks on all counter values 776 on all element types (GitHub <a href="https://github.com/jacoco/jacoco/issues/106">#106</a>).</li> 777 <li>Coverage checks are now also available in Ant (GitHub <a href="https://github.com/jacoco/jacoco/issues/106">#106</a>).</li> 778</ul> 779 780<h3>Fixed Bugs</h3> 781<ul> 782 <li>Fixed inconsistent stackmap frames when instrumenting class files produced 783 by certain tools like ProGuard (GitHub <a href="https://github.com/jacoco/jacoco/issues/85">#85</a>).</li> 784</ul> 785 786<h3>Non-functional Changes</h3> 787<ul> 788 <li>More context information when exceptions occur during analysis or 789 instrumentation (GitHub <a href="https://github.com/jacoco/jacoco/issues/104">#104</a>).</li> 790 <li>If analysis is performed on offline instrumented classes - which is an 791 build configuration error - an exception is now thrown (GitHub <a href="https://github.com/jacoco/jacoco/issues/108">#108</a>).</li> 792</ul> 793 794<h3>API Changes</h3> 795<ul> 796 <li>The configuration of the Maven check goal has been reworked to support 797 checks on any element type (GitHub <a href="https://github.com/jacoco/jacoco/issues/106">#106</a>).</li> 798 <li><code>Analyzer</code> and <code>Instrumenter</code> expect resource name 799 as additional parameter for better error messages (GitHub <a href="https://github.com/jacoco/jacoco/issues/104">#104</a>).</li> 800</ul> 801 802<h2>Release 0.6.2 (2013/02/03)</h2> 803 804<h3>New Features</h3> 805<ul> 806 <li>Support for offline instrumentation (GitHub <a href="https://github.com/jacoco/jacoco/issues/4">#4</a>, <a href="https://github.com/jacoco/jacoco/issues/64">#64</a>).</li> 807 <li>JaCoCo agent exposes runtime API for direct integration with application 808 under test (GitHub <a href="https://github.com/jacoco/jacoco/issues/61">#61</a>).</li> 809 <li>Support for parallel test execution: Different agents can now safely write 810 to the same <code>*.exec</code> file (GitHub <a href="https://github.com/jacoco/jacoco/issues/52">#52</a>).</li> 811 <li>New output mode 'none' can be used when agent is only controlled via JMX 812 or its new runtime API (GitHub <a href="https://github.com/jacoco/jacoco/issues/63">#63</a>).</li> 813 <li>Better error message in case of invalid stackmap frames (GitHub <a href="https://github.com/jacoco/jacoco/issues/73">#73</a>).</li> 814 <li>jacoco-maven-plugin: default phase for goal "report" - "verify" 815 (GitHub <a href="https://github.com/jacoco/jacoco/issues/72">#72</a>).</li> 816</ul> 817 818<h3>Non-functional Changes</h3> 819<ul> 820 <li>For every build the corresponding Git commit hash is included as 821 <code>Eclipse-SourceReferences</code> manifest headers (GitHub <a href="https://github.com/jacoco/jacoco/issues/7">#7</a>, <a href="https://github.com/jacoco/jacoco/issues/59">#59</a>).</li> 822 <li>Adjust saturation of red source highlighting in HTML reports to make 823 JaCoCo reports more accessible to red/green blind users.</li> 824</ul> 825 826<h3>API Changes</h3> 827<ul> 828 <li>The <code>output</code> mode <code>mbean</code> of the agent has been 829 dropped in favor of the new boolean option <code>jmx</code>. This allows 830 to combine JMX access with any other output mode (GitHub <a href="https://github.com/jacoco/jacoco/issues/62">#62</a>).</li> 831</ul> 832 833<h2>Release 0.6.1 (2012/12/23)</h2> 834 835<h3>New Features</h3> 836<ul> 837 <li>Add a coverage check Mojo, contributed by Kyle Lieber (GitHub <a href="https://github.com/jacoco/jacoco/issues/6">#6</a>).</li> 838</ul> 839 840<h3>Fixed Bugs</h3> 841<ul> 842 <li>jacocoant.jar should not conflict with ASM 3.x (GitHub <a href="https://github.com/jacoco/jacoco/issues/39">#39</a>).</li> 843 <li>Agent Mojo should set empty property, if execution was skipped 844 (GitHub <a href="https://github.com/jacoco/jacoco/issues/44">#44</a>).</li> 845</ul> 846 847<h3>Non-functional Changes</h3> 848<ul> 849 <li>Upgrade to ASM 4.1 (GitHub <a href="https://github.com/jacoco/jacoco/issues/37">#37</a>).</li> 850 <li>Log location of merged execution data file in Ant <code>merge</code> task 851 (GitHub <a href="https://github.com/jacoco/jacoco/issues/29">#29</a>).</li> 852</ul> 853 854<h2>Release 0.6.0 (2012/10/06)</h2> 855 856<h3>New Features</h3> 857<ul> 858 <li>Full support for Java 7 including INVOKEDYNAMIC as JaCoCo is now based 859 on ASM 4.0 (GitHub <a href="https://github.com/jacoco/jacoco/issues/5">#5</a>).</li> 860</ul> 861 862<h3>Fixed Bugs</h3> 863<ul> 864 <li>Maven plugin should skip creation of report if the execution data file is 865 missing. This avoids appearance of stack traces in case when JVM was not 866 forked, e.g. if there are no tests to run (SF #3563431, GitHub <a href="https://github.com/jacoco/jacoco/issues/19">#19</a>).</li> 867 <li>Maven plugin should fail if unable to read execution data file or create 868 report (GitHub <a href="https://github.com/jacoco/jacoco/issues/19">#19</a>).</li> 869</ul> 870 871<h3>API Changes</h3> 872<ul> 873 <li>Only colon as separator character supported in agent parameters. The 874 deprecated pipe character is no longer supported.</li> 875</ul> 876 877<h2>Release 0.5.10 (2012/08/31)</h2> 878 879<h3>Fixed Bugs</h3> 880<ul> 881 <li>Correct stackmap frames for new <code>long[]</code> arrays (SF #3553210).</li> 882 <li>Properly resolve the <code>fork</code> variable for tasks wrapped by the 883 <code>coverage</code> Ant task (Trac #213).</li> 884</ul> 885 886<h3>Non-functional Changes</h3> 887<ul> 888 <li>Source tree has been migrated to Git and is now hosted on Github at 889 <a href="https://github.com/jacoco/jacoco">https://github.com/jacoco/jacoco</a>.</li> 890</ul> 891 892<h2>Release 0.5.9 (2012/07/30)</h2> 893 894<h3>Fixed Bugs</h3> 895<ul> 896 <li>Don't produce invalid class files in case of unexpected stackmap frames 897 (SF #3543758).</li> 898</ul> 899 900<h2>Release 0.5.8 (2012/07/11)</h2> 901 902<h3>New Features</h3> 903<ul> 904 <li>Support for parallel Maven builds (Trac #191).</li> 905 <li>New agent option <code>classdumpdir</code> to dump all class files seen 906 by the JaCoCo agent to disk. This option is also available for Ant and 907 Maven (Trac #208).</li> 908</ul> 909 910<h3>Fixed Bugs</h3> 911<ul> 912 <li>Allow instrumentation of classes with dead code (SF #3538112).</li> 913 <li>Reworked instrumentation strategy to avoid verifier error "Uninitialized 914 object exists on backward branch" with certain Java 7 class files 915 (Trac #154).</li> 916</ul> 917 918<h3>Non-functional Changes</h3> 919<ul> 920 <li>Documentation now includes Maven example and Maven goal documentation 921 (Trac #201, #202).</li> 922</ul> 923 924<h2>Release 0.5.7 (2012/04/19)</h2> 925 926<h3>New Features</h3> 927<ul> 928 <li>Support for class redefinitions by other agents like JMockit (SF #3509409).</li> 929 <li>Remove class file attributes with invalid code offsets caused by other 930 byte code processing tools to avoid verifier errors (Trac #196).</li> 931 <li>Improved logging for Ant tasks (SF #3518429).</li> 932</ul> 933 934<h3>Fixed Bugs</h3> 935<ul> 936 <li>In case of failures the agent should log the original exception.</li> 937</ul> 938 939<h2>Release 0.5.6 (2012/01/23)</h2> 940 941<h3>New Features</h3> 942<ul> 943 <li>jacoco-maven-plugin can be used together with maven-site-plugin (Trac #181).</li> 944 <li>The <code>report</code> Ant task now also supports directory resources to 945 specify source folders. This allows reading source files from multiple 946 directories. Contributed by Dominik Stadler (Trac #119).</li> 947</ul> 948 949<h3>Fixed Bugs</h3> 950<ul> 951 <li>Don't insert stackmap frames for class files before version 1.6.</li> 952 <li>Regression, which was introduced in 0.5.4 - restored compatibility of jacoco-maven-plugin with Maven 2 (Trac #182).</li> 953</ul> 954 955<h2>Release 0.5.5 (2011/12/15)</h2> 956 957<h3>Fixed Bugs</h3> 958<ul> 959 <li>Correct default value for the <code>append</code> property of the 960 <code>dump</code> Ant task is <code>true</code> (Trac #178).</li> 961 <li>Try/catch blocks must not be counted as instructions (Trac #179).</li> 962</ul> 963 964<h3>Non-functional Changes</h3> 965<ul> 966 <li>Upgrade to ASM 3.3.1.</li> 967</ul> 968 969<h2>Release 0.5.4 (2011/11/11)</h2> 970 971<h3>New Features</h3> 972<ul> 973 <li>Maven plug-in: respect <code>includes</code> and <code>excludes</code> 974 properties in report Mojo (Trac #160). 975 Also note that: 976<pre class="source lang-xml"> 977<configuration> 978 <includes>org.foo.*:org.bar.*</includes> 979 <excludes>com.foo.*:com.bar.*</excludes> 980</configuration> 981</pre> 982 must be replaced on: 983<pre class="source lang-xml"> 984<configuration> 985 <includes> 986 <include>org.foo.*</include> 987 <include>org.bar.*</include> 988 </includes> 989 <excludes> 990 <exclude>com.foo.*</exclude> 991 <exclude>com.bar.*</exclude> 992 </excludes> 993</configuration> 994</pre> 995 </li> 996</ul> 997 998<h3>API Changes</h3> 999<ul> 1000 <li><code>Instrumenter</code> now only requires 1001 <code>IExecutionDataAccessorGenerator</code> instead of 1002 <code>IRuntime</code> (Trac #174).</li> 1003 <li>Removed reference to internal implementation classes from 1004 <code>CoverageBuilder</code> API.</li> 1005</ul> 1006 1007<h3>Non-functional Changes</h3> 1008<ul> 1009 <li>Release bundles from now on signed again.</li> 1010 <li>Several documentation updates.</li> 1011</ul> 1012 1013<h2>Release 0.5.3 (2011/07/06)</h2> 1014 1015<h3>New Features</h3> 1016<ul> 1017 <li>New Maven plug-in for JaCoCo agent setup and basic reporting (Trac #25).</li> 1018 <li>Additional output mode implementation for JaCoCo agent based on JMX.</li> 1019</ul> 1020 1021<h3>Fixed Bugs</h3> 1022<ul> 1023 <li>Fixed problem with reporting of nested group structures (Trac #157).</li> 1024</ul> 1025 1026<h3>Non-functional Changes</h3> 1027<ul> 1028 <li>JaCoCo build based on Maven (Trac #136).</li> 1029 <li>JaCoCo published to Maven repository (Trac #149).</li> 1030</ul> 1031 1032<h2>Release 0.5.2 (2011/05/19)</h2> 1033 1034<h3>New Features</h3> 1035<ul> 1036 <li>JaCoCo reports cyclomatic complexity numbers (Trac #129).</li> 1037 <li>For HTML reports the tab width can be specified on the 1038 <code>sourcefiles</code> attribute of the <code>report</code> Ant task 1039 (Track #152).</li> 1040</ul> 1041 1042<h3>Fixed Bugs</h3> 1043<ul> 1044 <li>Removed duplicate counters in the root node of XML reports (Trac #155).</li> 1045 <li>Avoid <code>StackOverflowException</code> when analyzing methods with very 1046 long instruction sequences (Trac #156). Many thanks to Jean-Eric Cuendet 1047 for reporting and analyzing this!</li> 1048</ul> 1049 1050<h3>API Changes</h3> 1051<ul> 1052 <li><code>ICoverageNode</code> API has been extended for cyclomatic 1053 complexity (Trac #129).</li> 1054 <li>XML and CSV report includes new counter type <code>COMPLEXITY</code> 1055 (Trac #129).</li> 1056 <li>New method <code>getTabWidth()</code> in callback interface 1057 <code>ISourceFileLocator</code> instead of 1058 <code>HTMLReportFormatter.setTabWidth()</code> which has been removed. 1059 (Trac #152).</li> 1060</ul> 1061 1062<h2>Release 0.5.1 (2011/03/21)</h2> 1063 1064<h3>New Features</h3> 1065<ul> 1066 <li>Duplicate classes with identical identifiers are now ignored during 1067 analysis.</li> 1068 <li>Added support for TestNG to Ant task Coverage (Track #144).</li> 1069</ul> 1070 1071<h3>Fixed Bugs</h3> 1072<ul> 1073 <li>Calculate correct stackmap frames for Java 1.6 branches (Trac #139).</li> 1074 <li>Link source files also for classes in default package (Trac #151).</li> 1075</ul> 1076 1077<h3>Non-functional Changes</h3> 1078<ul> 1079 <li>API documentation cleanup (Track #140).</li> 1080 <li>Removed obsolete examples from documentation (Trac #141).</li> 1081 <li>Added reporting API example (Trac #146).</li> 1082 <li>Reduced file size of HTML report source pages (Trac #148).</li> 1083</ul> 1084 1085<h3>API Changes</h3> 1086<ul> 1087 <li>Simplified reporting API (Trac #53).</li> 1088 <li>Use colon as separator character in agent parameters (Trac #143).</li> 1089 <li>Now also empty files are accepted as <code>*.exec</code> files (Trac #150).</li> 1090</ul> 1091 1092<h2>Release 0.5.0 (2011/01/19)</h2> 1093 1094<h3>New Features</h3> 1095<ul> 1096 <li>JaCoCo now reports branch coverage (Track #66).</li> 1097</ul> 1098 1099<h3>Fixed Bugs</h3> 1100<ul> 1101 <li>Only process actual Java class files during analysis (SF #3106102).</li> 1102 <li>Fix broken source links due to sort hash (Track #125).</li> 1103 <li>Fixed invalid OSGi headers in MANIFEST.MF files (Track #127).</li> 1104 <li>Try to avoid interference with Hibernate (SF #3134190).</li> 1105 <li>Provide proper error message in case of duplicate class names in the same 1106 group (SF #3110219).</li> 1107 <li>Allow any number of probes in static interface initializers (SF #3161106).</li> 1108</ul> 1109 1110<h3>API Changes</h3> 1111<ul> 1112 <li>All analysis specific APIs have been moved to package 1113 <code>org.jacoco.core.analysis</code>.</li> 1114 <li>The <code>IStructureVisitor</code> interface has been replaced by a 1115 simplified version called <code>ICoverageVisitor</code> (Track #132).</li> 1116 <li>All counter creation and update APIs now accept <i>missed items</i> and 1117 <i>covered items</i> as parameters (Track #131).</li> 1118 <li>Instructions are now counted on a per line basis. Therefore some 1119 interfaces in the <code>org.jacoco.core.analysis</code> package have 1120 changed as well as the <code>line</code> element in the XML report 1121 (Track #130).</li> 1122 <li>Several internal implementation classes have removed from the core APIs or 1123 have been replaced by new interfaces (Track #133).</li> 1124</ul> 1125 1126<h2>Release 0.4.1 (2010/10/07)</h2> 1127 1128<h3>New Features</h3> 1129<ul> 1130 <li>New attribute <code>line</code> for <code>method</code> elements in the 1131 XML report containing the first source line number of the method. 1132 (Track #120).</li> 1133 <li>Optional <code>locale</code> attribute for number rendering HTML reports, 1134 also available as an attribute of the <code>html</code> tag of the 1135 <code>report</code> Ant task (Track #122).</li> 1136 <li>Coverage tables in HTML report are now sortable (Track #98).</li> 1137 <li>The <code>report</code> Ant task issues a warning if source files are 1138 provided but class files do not contain debug information to collect line 1139 numbers (SF #3024486).</li> 1140</ul> 1141 1142<h3>Non-functional Changes</h3> 1143<ul> 1144 <li>Reduced memory footprint for coverage data by 30% (Track #106).</li> 1145 <li>Moved to Eclipse 3.6.x as development environment (Trac #115).</li> 1146 <li>All delivered bundles and JAR files are signed (Trac #118).</li> 1147</ul> 1148 1149<h3>Fixed Bugs</h3> 1150<ul> 1151 <li>Better error message when multiple JaCoCo agents are specified 1152 (Track #103).</li> 1153 <li>Fixed potential NPE at shutdown when running agent in 1154 <code>tcpserver</code> mode (Track #117).</li> 1155 <li>Agent now fails at startup when execution data file can't be opened 1156 (Track #121).</li> 1157</ul> 1158 1159<h2>Release 0.4.0 (2010/06/04)</h2> 1160 1161<h3>New Features</h3> 1162<ul> 1163 <li>Execution data now includes session information: an arbitrary identifier, 1164 the start time and dump time (Trac #88).</li> 1165 <li>Added session information to XML report (Trac #92).</li> 1166 <li>New "Sessions" page in the HTML report shows information about each 1167 sessions wherein execution data has been collected for the report 1168 (Trac #93). Additionally all classes with execution data available are 1169 listed on this page (Trac #94).</li> 1170 <li>The agent now supports remote dumps via TCP/IP connections (Trac #82).</li> 1171 <li>New Ant task <code>dump</code> to remotely collect coverage data from 1172 agents (Trac #100).</li> 1173</ul> 1174 1175<h3>API Changes</h3> 1176<ul> 1177 <li>Execution data file header is written and read in any case (Trac #72).</li> 1178 <li>Added <code>dumponexit</code> to agent options (Trac #82).</li> 1179 <li>Added <code>sessionid</code> to agent options (Trac #88).</li> 1180 <li>Added <code>output, address and port</code> to agent options (Trac #82).</li> 1181 <li>Additional and modified methods in <code>IRuntime</code> to produce 1182 session information (Trac #88).</li> 1183 <li>Coverage element type <code>SESSION</code> removed (Trac #95).</li> 1184 <li>Removed several internal APIs from package 1185 <code>org.jacoco.core.instr</code> used for class instrumentation.</li> 1186 <li>Renamed class <code>org.jacoco.report.csv.CsvFormatter</code> to 1187 <code>CSVFormatter</code> (upper case) for consistency with other 1188 formatters.</li> 1189</ul> 1190 1191<h2>Release 0.3.3 (2010/04/19)</h2> 1192 1193<h3>New Features</h3> 1194<ul> 1195 <li>Support for different archives (jar, war, ear etc.) and nested archives 1196 (Trac #78).</li> 1197 <li>XML report with line level coverage information (requested for Sonar).</li> 1198</ul> 1199 1200<h3>Fixed Bugs</h3> 1201<ul> 1202 <li>Correct stackmap frames for Java 1.6 class files. (Track #81).</li> 1203 <li>Avoid usage of <code>LocalVariableSorter</code> due to ASM bug #314563 1204 (Track #69).</li> 1205 <li>Nested Java/JUnit Ant tasks not being executed when coverage task disabled. (Track #85).</li> 1206</ul> 1207 1208<h2>Release 0.3.2 (2010/04/01)</h2> 1209 1210<h3>New Features</h3> 1211<ul> 1212 <li>New HTML report option to directly create a zip file containing the report 1213 (Trac #12).</li> 1214 <li>Code coverage for static initializers in interfaces (Trac #21).</li> 1215 <li>Better error handling for <code>report</code> Ant task (Trac #71).</li> 1216 <li>Classes without instructions are excluded from reports (Trac #73).</li> 1217</ul> 1218 1219<h3>Fixed Bugs</h3> 1220<ul> 1221 <li>XML and CSV report output now also works for structures without groups 1222 (Track #76).</li> 1223</ul> 1224 1225<h3>API Changes</h3> 1226<ul> 1227 <li>Consistent usage of the term "Missed" instead of "NotCovered" in all APIs 1228 (Trac #72).</li> 1229 <li>To support "off-line" instrumentation scenarios it is not required any 1230 more to register instrumented classes with the runtime (Trac #74).</li> 1231</ul> 1232 1233<h2>Release 0.3.1 (2010/02/09)</h2> 1234 1235<h3>Fixed Bugs</h3> 1236<ul> 1237 <li>Ant tasks broken on Linux (Trac #68).</li> 1238</ul> 1239 1240<h2>Release 0.3.0 (2010/02/02)</h2> 1241 1242<h3>New Features</h3> 1243<ul> 1244 <li>Report renders anonymous classes with type information (Trac #46).</li> 1245 <li><code>enabled</code> property added to <code>agent</code> and 1246 <code>coverage</code> Ant tasks (Trac #63).</li> 1247 <li>Ant task <code>merge</code> added (Trac #52).</li> 1248</ul> 1249 1250<h3>Fixed Bugs</h3> 1251<ul> 1252 <li>New <code>IRuntime</code> implementation enables JaCoCo usage for J2EE 1253 application servers like Glassfish.</li> 1254</ul> 1255 1256<h3>API Changes</h3> 1257<ul> 1258 <li>Agent option and Ant task parameter <code>file</code> changed to 1259 <code>destfile</code> (Trac #59).</li> 1260 <li>Agent option and Ant task parameter <code>merge</code> changed to 1261 <code>append</code> (Trac #51).</li> 1262</ul> 1263 1264<h2>Release 0.2.0 (2010/01/08)</h2> 1265 1266<h3>New Features</h3> 1267 1268<ul> 1269 <li>Simplified probe data structure reduces memory usage (Trac #47).</li> 1270 <li>Performance test becomes part of the build.</li> 1271 <li>New bundle <code>org.jacoco.agent</code> that provides the Java agent 1272 as a resource (Trac #50).</li> 1273</ul> 1274 1275<h3>Fixed Bugs</h3> 1276 1277<ul> 1278 <li><code>ArrayIndexOutOfBoundsException</code> due to inconsistent processing 1279 while instrumentation and analysis (Trac #44).</li> 1280</ul> 1281 1282<h2>Release 0.1.0 (2009/10/28)</h2> 1283 1284<p> 1285 The very first JaCoCo release. 1286</p> 1287 1288</div> 1289<div class="footer"> 1290 <span class="right"><a href="${jacoco.home.url}">JaCoCo</a> ${qualified.bundle.version}</span> 1291 <a href="license.html">Copyright</a> © ${copyright.years} Mountainminds GmbH & Co. KG and Contributors 1292</div> 1293 1294</body> 1295</html> 1296