/* Ċ Ġ* ĠMIT ĠLicense Ċ Ġ* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 0 ĠJ i ey i Ċ Ġ* Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ċ Ġ* Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ċ Ġ* Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ċ Ġ* Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ċ Ġ* Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ċ Ġ* Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ġall Ċ Ġ* Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ Ġ* ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ Ġ* ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ Ġ* ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ Ġ* ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , Ċ Ġ* ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN ĠTHE Ċ Ġ* ĠSOFTWARE . Ċ Ġ*/ Ċ Ċ package Ġplugins Ċ Ċ plugins Ġ{ ĊĠĠĠ Ġj aco co Ċ } Ċ Ċ jac oco Ġ{ ĊĠĠĠ Ġtool Version Ġ= Ġ" 0 . 8 . 7 " Ċ } Ċ Ċ tasks . with Type < Test > Ġ{ ĊĠĠĠ Ġ// ĠJ aco co Ġis Ġback Ġ[ https :// issue tracker . google . com / issues / 1 7 1 1 2 5 8 5 7 ] ĊĠĠĠ Ġmax Heap Size Ġ= Ġ" 3 g " ĊĠĠĠ Ġconfigure < J aco co Task Extension > Ġ{ ĊĠĠĠĠĠĠĠ Ġis Include No Location Classes Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġexclude s Ġ= ĠlistOf (" jdk . internal .* ") ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġval Ġsource Directories Tree Ġ= Ġfile Tree ( project . project Dir ) Ġ{ ĊĠĠĠ Ġset Includes ( listOf ( ĊĠĠĠĠĠĠĠ Ġ" src / main / java /** ", ĊĠĠĠĠĠĠĠ Ġ" src / main / kotlin /** ", ĊĠĠĠĠĠĠĠ Ġ" src / debug / java /** ", ĊĠĠĠĠĠĠĠ Ġ" src / debug / kotlin /** " ĊĠĠĠ Ġ)) Ċ } Ċ Ċ private Ġval Ġclass Directories Tree Ġ= Ġfile Tree ("$ build Dir / tmp / kotlin - classes / debug ") Ġ{ ĊĠĠĠ Ġset Exclude s ( listOf ( ĊĠĠĠĠĠĠĠ Ġ" **/ R . class ", ĊĠĠĠĠĠĠĠ Ġ" **/ R \$ *. class ", ĊĠĠĠĠĠĠĠ Ġ" **/ Build Config .* ", ĊĠĠĠĠĠĠĠ Ġ" **/ Manifest * .* ", ĊĠĠĠĠĠĠĠ Ġ"** /* Test * .* ", ĊĠĠĠĠĠĠĠ Ġ" android /** /* .* " ĊĠĠĠ Ġ)) Ċ } Ċ Ċ private Ġval Ġexecution Data Tree Ġ= Ġfile Tree ( build Dir ) Ġ{ ĊĠĠĠ Ġset Includes ( listOf ( ĊĠĠĠĠĠĠĠ Ġ" jac oco / test Debug UnitTest . exec ", ĊĠĠĠĠĠĠĠ Ġ" outputs / code _ coverage / connected /* coverage . ec " ĊĠĠĠ Ġ)) Ċ } Ċ Ċ fun ĠJ aco co Reports Container . reports () Ġ{ ĊĠĠĠ Ġxml . isEnabled Ġ= Ġtrue ĊĠĠĠ Ġhtml . isEnabled Ġ= Ġtrue ĊĠĠĠ Ġcsv . isEnabled Ġ= Ġfalse Ċ } Ċ Ċ fun ĠJ aco co Report . set Directories () Ġ{ ĊĠĠĠ Ġsource Directories . set From ( source Directories Tree ) ĊĠĠĠ Ġclass Directories . set From ( class Directories Tree ) ĊĠĠĠ Ġexecution Data . set From ( execution Data Tree , Ġ"${ project . project Dir }/ jac oco . exec ") Ċ } Ċ Ċ fun ĠJ aco co Coverage Verification . set Directories () Ġ{ ĊĠĠĠ Ġsource Directories . set From ( source Directories Tree ) ĊĠĠĠ Ġclass Directories . set From ( class Directories Tree ) ĊĠĠĠ Ġexecution Data . set From ( execution Data Tree , Ġ"${ project . project Dir }/ jac oco . exec ") Ċ } Ċ Ċ private Ġval Ġtask J aco co Android Test Report Ġ= Ġ" jac oco Android Test Report " Ċ private Ġval Ġtask J aco co Android Coverage Verification Ġ= Ġ" jac oco Android Coverage Verification " Ċ Ċ if Ġ( tasks . find ByName ( task J aco co Android Test Report ) Ġ== Ġnull ) Ġ{ ĊĠĠĠ Ġtasks . register < J aco co Report >( task J aco co Android Test Report ) Ġ{ ĊĠĠĠĠĠĠĠ Ġgroup Ġ= ĠBuild Task Groups . REPORT ING ĊĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ" Code Ġcoverage Ġreport Ġfor Ġboth ĠAndroid Ġand ĠUnit Ġtests ." ĊĠĠĠĠĠĠĠ Ġdepends On (" test Debug UnitTest ", Ġ" create Debug Coverage Report ") ĊĠĠĠĠĠĠĠ Ġreports Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreports () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġset Directories () ĊĠĠĠ Ġ} Ċ } Ċ Ċ if Ġ( tasks . find ByName ( task J aco co Android Coverage Verification ) Ġ== Ġnull ) Ġ{ ĊĠĠĠ Ġtasks . register < J aco co Coverage Verification >( task J aco co Android Coverage Verification ) Ġ{ ĊĠĠĠĠĠĠĠ Ġgroup Ġ= ĠBuild Task Groups . REPORT ING ĊĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ" Code Ġcoverage Ġverification Ġfor ĠAndroid Ġboth ĠAndroid Ġand ĠUnit Ġtests ." ĊĠĠĠĠĠĠĠ Ġdepends On (" test Debug UnitTest ", Ġ" create Debug Coverage Report ") ĊĠĠĠĠĠĠĠ Ġviolation Rules Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrule Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlimit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcounter Ġ= Ġ" INSTR UCTION AL " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġ" COVER ED RATIO " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġminimum Ġ= Ġ" 0 . 5 ". to BigDecimal () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġset Directories () ĊĠĠĠ Ġ} Ċ } Ċ