package Ġinfo . ad avis . quality checks Ċ Ċ import Ġinfo . ad avis . quality checks . tasks . Check style Task Ċ import Ġinfo . ad avis . quality checks . tasks . Find Bugs Task Ċ import Ġinfo . ad avis . quality checks . tasks . P md Task Ċ import Ġinfo . ad avis . quality checks . tasks . Write ConfigFile Task Ċ import Ġorg . gradle . api . Gradle Exception Ċ import Ġorg . gradle . api . Plugin Ċ import Ġorg . gradle . api . Project Ċ import Ġorg . gradle . api . plugins . Application Plugin Ċ import Ġjava . io . File Ċ Ċ class ĠQuality Checks Plugin Ġ: ĠPlugin < Project > Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠP MD _ FILE _ NAME Ġ= Ġ" pmd - rule set . xml " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠCHECK STYLE _ FILE _ NAME Ġ= Ġ" check style . xml " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠF IND BUG S _ FILE _ NAME Ġ= Ġ" find bugs - exclude . xml " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠWRITE _ PMD _ CONFIG _ FILE _ TASK Ġ= Ġ" write P md ConfigFile " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠWRITE _ CHECK _ STYLE _ CONFIG _ FILE _ TASK Ġ= Ġ" write Check Style ConfigFile " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠWRITE _ FIND _ BUG S _ EXCL US ION _ FILE _ TASK Ġ= Ġ" write Find Bugs Ex clusion File " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠVER IFICATION _ GROUP Ġ= Ġ" verification " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠP LU GIN _ EXTENSION _ NAME Ġ= Ġ" quality Checks " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġlateinit Ġvar Ġproject : ĠProject ĊĊĠĠĠ Ġvar Ġp md ConfigFile : ĠFile ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġcheck Style ConfigFile : ĠFile ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġfind Bugs Ex clusion File : ĠFile ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun Ġapply ( target : ĠProject ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġtarget ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproject Ġ= Ġtarget ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( project . plugins ?. with Type ( Application Plugin :: class . java )?. isNotEmpty () !! ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproject . extensions ?. create ( PLUGIN _ EXTENSION _ NAME , ĠQuality Checks Extension :: class . java ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Config Files IfNeeded () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate ConfigFile Tasks () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Quality Checks Tasks () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠGradle Exception (" You Ġmust Ġapply Ġthe ĠAndroid Ġplugin Ġbefore Ġusing Ġthis Ġplugin .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Config Files IfNeeded () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġquality Checks Dir Ġ= ĠFile ( project . build File ?. parent File , Ġ" quality - checks ") ĊĠĠĠĠĠĠĠ Ġif Ġ(! quality Checks Dir . exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquality Checks Dir . mkdir s () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġproject . logger . info (" created Ġthe Ġ` quality - checks ` Ġdirectory ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġp md ConfigFile Ġ= Ġcreate ConfigFile ( quality Checks Dir , ĠP MD _ FILE _ NAME ) ĊĠĠĠĠĠĠĠ Ġcheck Style ConfigFile Ġ= Ġcreate ConfigFile ( quality Checks Dir , ĠCHECK STYLE _ FILE _ NAME ) ĊĠĠĠĠĠĠĠ Ġfind Bugs Ex clusion File Ġ= Ġcreate ConfigFile ( quality Checks Dir , ĠF IND BUG S _ FILE _ NAME ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate ConfigFile ( quality Checks Dir : File , ĠfileName : ĠString ): ĠFile ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠFile ( quality Checks Dir , ĠfileName ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate New File () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠWrite ConfigFile Task . copy ConfigFile ( fileName , Ġthis ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġproject . logger . info (" created Ġthe Ġ$ fileName Ġfile Ġwith Ġdefault Ġcontent ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate ConfigFile Tasks () Ġ{ ĊĠĠĠĠĠĠĠ Ġproject . tasks ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . create ( WRITE _ PMD _ CONFIG _ FILE _ TASK , ĠWrite ConfigFile Task :: class . java ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfig File Ġ= Ġp md ConfigFile ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠfileName Ġ= ĠP MD _ FILE _ NAME ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . create ( WRITE _ CHECK _ STYLE _ CONFIG _ FILE _ TASK , ĠWrite ConfigFile Task :: class . java ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfig File Ġ= Ġcheck Style ConfigFile ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠfileName Ġ= ĠCHECK STYLE _ FILE _ NAME ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . create ( WRITE _ FIND _ BUG S _ EXCL US ION _ FILE _ TASK , ĠWrite ConfigFile Task :: class . java ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfig File Ġ= Ġfind Bugs Ex clusion File ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠfileName Ġ= ĠF IND BUG S _ FILE _ NAME ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Quality Checks Tasks () Ġ{ ĊĠĠĠĠĠĠĠ Ġproject . tasks ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . create (" pmd ", ĠP md Task :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . create (" find bugs ", ĠFind Bugs Task :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . create (" check style ", ĠCheck style Task :: class . java ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġproject . logger . info (" created Ġthe Ġstatic Ġcode Ġanalysis Ġtasks ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }