package Ġdev . morph ia Ċ Ċ import Ġorg . apache . maven . model . io . x pp 3 . Maven X pp 3 Reader Ċ import Ġorg . jboss . forge . ro aster . Ro aster Ċ import Ġorg . jboss . forge . ro aster . model . Java Type Ċ import Ġorg . jboss . forge . ro aster . model . Method Holder Ċ import Ġorg . jboss . forge . ro aster . model . source . Method Source Ċ import Ġorg . js oup . J soup Ċ import Ġorg . js oup . nodes . Element Ċ import Ġorg . js oup . select . Evaluator Ċ import Ġorg . ko hs uke . github . GH Issue State . OPEN Ċ import Ġorg . ko hs uke . github . GH Label Ċ import Ġorg . ko hs uke . github . GitHub Builder Ċ import Ġjava . io . File Ċ import Ġjava . io . FileReader Ċ import Ġjava . net . URL Ċ Ċ private Ġval Ġcore Ġ= ĠFile ("../ core / src / main / java ") Ċ Ċ class ĠOperation Audit ( var Ġmethods : ĠMap < String , ĠList < Method Source <* >> >) Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġparse ( tag let : ĠString ): ĠOperation Audit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠOperation Audit ( core . walk Bottom Up () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . extension Ġ== Ġ" java " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĠRo aster . parse ( Java Type :: class . java , Ġit ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Is Instance < Method Holder <* >>() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ Ġit . methods Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Is Instance < Method Source <* >>() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . java Doc . tag Names . contains ( tag let ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. groupBy Ġ{ Ġit . java Doc . get Tags ( tag let )[ 0 ]. value . substring After (" Ġ") Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġgithub Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠGitHub Builder ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. from Property File ( System . getProperty (" GITHUB _ PROPERTIES ") Ġ?: Ġ" github . properties ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. getRepository (" Morph ia Org / Morph ia ") ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġissues Ġby Ġlazy Ġ{ Ġgithub . get Issues ( OPEN ) Ġ} ĊĠĠĠ Ġval Ġmilestone Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpom Ġ= ĠMaven X pp 3 Reader (). read ( FileReader (" pom . xml ")) ĊĠĠĠĠĠĠĠ Ġval Ġrelease Version : ĠString Ġ= Ġ( pom . version Ġ?: Ġpom . parent . version ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ("- SNAPSHOT ", Ġ"") ĊĠĠĠĠĠĠĠ Ġgithub . list M ilestones ( OPEN ). first Ġ{ Ġit . title Ġ== Ġrelease Version Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġaudit ( name : ĠString , Ġurl : ĠString , Ġexclude s : ĠList < String > Ġ= ĠlistOf ()): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġremaining Ġ= ĠJ soup ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. parse ( URL ( url ), Ġ 3 0 0 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. select ( object Ġ: ĠEvalu ator () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġmatches ( root : ĠElement , Ġelement : ĠElement ) Ġ= Ġelement . normal Name () Ġ== Ġ" code " Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelement . children Size () Ġ== Ġ 0 Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelement . text (). startsWith ("$ ") Ġ&& Ġ! element . text (). contains (",") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . text () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. if Empty Ġ{ Ġthrow ĠIllegalStateException (" No Ġoperators Ġfound Ġfor Ġ$ url .") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. sorted () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. distinct By Ġ{ Ġit Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit Ġ! in Ġexclude s Ġ&& Ġmethods [ it ] Ġ== Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġdoc Root Ġ= Ġurl . replace ("/ index . html ", Ġ"") ĊĊĠĠĠĠĠĠĠ Ġif Ġ( remaining . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġenhancement : ĠGH Label Ġ= Ġgithub . getLabel (" en hancement ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlabels Ġ= Ġmutable ListOf ( en hancement ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtarget Label Ġ= Ġif Ġ( name . contains (" aggregation ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlabel Ġ= Ġgithub . getLabel (" aggregation ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlabels Ġ+= Ġlabel ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlabel ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġnull ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġremaining . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtitle Ġ= Ġ" Implement Ġ$ it " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġissues ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġissue Ġ-> Ġissue . title Ġ== Ġtitle Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġissue Ġ-> Ġtarget Label Ġ== Ġnull Ġ|| Ġissue . labels . contains ( target Label ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. if Empty Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbody Ġ= Ġ""" ${ doc Root }/${ it . drop ( 1 )} """ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCreating Ġa Ġnew Ġissue Ġfor Ġ$ name : ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTitle : Ġ'$ title ' ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠM ilestone : Ġ${ milestone . title } ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLabels : Ġ${ labels . join ToString Ġ{ Ġlabel Ġ-> Ġlabel . name Ġ}} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBody : Ġ$ body ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= Ġgithub . create Issue ( title ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. milestone ( milestone ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ( body ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlabels . forEach Ġ{ Ġbuilder . label ( it . name ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . create () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġremaining . size ĊĠĠĠ Ġ} Ċ } Ċ