@ file : Suppress (" Un stable Api Usage ", Ġ" unused ") Ċ Ċ package Ġcom . aut onomous apps Ċ Ċ import Ġorg . gradle . api . Action Ċ import Ġorg . gradle . api . model . ObjectFactory Ċ import Ġorg . gradle . api . provider . Property Ċ import Ġorg . gradle . api . provider . SetProperty Ċ import Ġorg . gradle . kotlin . dsl . property Ċ import Ġorg . gradle . kotlin . dsl . setProperty Ċ import Ġjava . io . Serializable Ċ import Ġjavax . inject . Inject Ċ Ċ open Ġclass ĠDependency Analysis Extension ( objects : ĠObject Factory ) Ġ{ ĊĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġprivate Ġconst Ġval ĠAND ROID _ LIB _ VARIANT _ DEFAULT Ġ= Ġ" debug " ĊĠĠĠ Ġprivate Ġconst Ġval ĠJAVA _ LIB _ SOURCE _ SET _ DEFAULT Ġ= Ġ" main " ĊĠ Ġ} ĊĊĠ Ġprivate Ġval Ġdefault Variants Ġ= Ġset Of ( ANDROID _ LIB _ VARIANT _ DEFAULT , ĠJAVA _ LIB _ SOURCE _ SET _ DEFAULT ) ĊĊĠ Ġprivate Ġval Ġthe Variants : ĠSet Property < String > Ġ= Ġobjects . setProperty < String >(). also Ġ{ ĊĠĠĠ Ġit . convention ( default Variants ) ĊĠ Ġ} ĊĊĠ Ġinternal Ġval Ġauto Apply : ĠProperty < Boolean > Ġ= Ġobjects . property < Boolean >(). also Ġ{ ĊĠĠĠ Ġit . convention ( true ) ĊĠ Ġ} ĊĊĠ Ġinternal Ġval Ġchat ty : ĠProperty < Boolean > Ġ= Ġobjects . property < Boolean >(). also Ġ{ ĊĠĠĠ Ġit . convention ( true ) ĊĠ Ġ} ĊĊĠ Ġinternal Ġval Ġissue Handler : ĠIssue Handler Ġ= Ġobjects . newInstance ( Issue Handler :: class . java ) ĊĊĠ Ġinternal Ġfun Ġget Fallback s () Ġ= Ġthe Variants . get () Ġ+ Ġdefault Variants ĊĊĠ Ġfun Ġset Variants ( var arg Ġv : ĠString ) Ġ{ ĊĠĠĠ Ġthe Variants . set ( v . toSet ()) ĊĠĠĠ Ġthe Variants . dis allow Changes () ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠIf Ġ` true `, Ġyou Ġonly Ġapply Ġthe Ġplugin Ġto Ġthe Ġroot Ġproject Ġand Ġit Ġwill Ġauto - apply Ġto Ġall Ġsub projects . ĠIf Ġ` false `, Ġyou ĊĠĠ Ġ* Ġmust Ġapply Ġthe Ġplugin Ġto Ġeach Ġsub project Ġyou Ġwant Ġto Ġanalyze Ġmanually . ĠThe Ġplugin Ġ_ must _ Ġalso Ġbe Ġapplied Ġto Ġthe ĊĠĠ Ġ* Ġroot Ġproject . ĠDefault Ġis Ġ` true `. ĊĠĠ Ġ*/ ĊĠ Ġfun Ġauto Apply ( is Auto Apply : ĠBoolean ) Ġ{ ĊĠĠĠ Ġauto Apply . set ( is Auto Apply ) ĊĠĠĠ Ġauto Apply . dis allow Changes () ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠIf Ġ` true `, Ġprints Ġadvice Ġto Ġconsole Ġusing Ġ` logger . quiet ()`. ĠIf Ġ` false `, Ġprints Ġwith Ġ` logger . info ()`. ĠThis Ġshould ĊĠĠ Ġ* Ġspeed Ġup Ġbuilds , Ġas Ġconsole Ġlogging Ġis Ġrelatively Ġin efficient . ĠDefault Ġis Ġ` true `. ĊĠĠ Ġ*/ ĊĠ Ġfun Ġchat ty ( is Chat ty : ĠBoolean ) Ġ{ ĊĠĠĠ Ġchat ty . set ( is Chat ty ) ĊĠĠĠ Ġchat ty . dis allow Changes () ĊĠ Ġ} ĊĊĠ Ġfun Ġissues ( action : ĠAction < Issue Handler >) Ġ{ ĊĠĠĠ Ġaction . execute ( issue Handler ) ĊĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠInitial Ġgoal : Ċ Ġ* Ġ``` Ċ Ġ* Ġissues Ġ{ Ċ Ġ* ĠĠ Ġon Any Ġ{ Ġ< fail () | warn () | ignore ()> Ġ} Ċ Ġ* ĠĠ Ġon Unused Dependencies Ġ{ Ġ< fail () | warn () | ignore ()> Ġ} Ċ Ġ* ĠĠ Ġon Used Trans itive Dependencies Ġ{ Ġ< fail () | warn () | ignore ()> Ġ} Ċ Ġ* ĠĠ Ġon Incorrect Configuration Ġ{ Ġ< fail () | warn () | ignore ()> Ġ} Ċ Ġ* Ġ} Ċ Ġ* Ġ``` Ċ Ġ*/ Ċ open Ġclass ĠIssue Handler Ġ@ Inject Ġconstructor ( objects : ĠObject Factory ) Ġ{ ĊĊĠ Ġinternal Ġval Ġany Issue Ġ= Ġobjects . newInstance ( Issue :: class . java ) ĊĠ Ġinternal Ġval Ġunused Dependencies Issue Ġ= Ġobjects . newInstance ( Issue :: class . java ) ĊĠ Ġinternal Ġval Ġused Trans itive Dependencies Issue Ġ= Ġobjects . newInstance ( Issue :: class . java ) ĊĠ Ġinternal Ġval Ġincorrect Configuration Issue Ġ= Ġobjects . newInstance ( Issue :: class . java ) ĊĊĠ Ġinternal Ġval Ġignore K tx Ġ= Ġobjects . property < Boolean >(). also Ġ{ ĊĠĠĠ Ġit . convention ( false ) ĊĠ Ġ} ĊĊĠ Ġfun Ġignore K tx ( ignore : ĠBoolean ) Ġ{ ĊĠĠĠ Ġignore K tx . set ( ignore ) ĊĠĠĠ Ġignore K tx . dis allow Changes () ĊĠ Ġ} ĊĊĠ Ġfun Ġon Any ( action : ĠAction < Issue >) Ġ{ ĊĠĠĠ Ġaction . execute ( any Issue ) ĊĠ Ġ} ĊĊĠ Ġfun Ġon Unused Dependencies ( action : ĠAction < Issue >) Ġ{ ĊĠĠĠ Ġaction . execute ( unused Dependencies Issue ) ĊĠ Ġ} ĊĊĠ Ġfun Ġon Used Trans itive Dependencies ( action : ĠAction < Issue >) Ġ{ ĊĠĠĠ Ġaction . execute ( used Trans itive Dependencies Issue ) ĊĠ Ġ} ĊĊĠ Ġfun Ġon Incorrect Configuration ( action : ĠAction < Issue >) Ġ{ ĊĠĠĠ Ġaction . execute ( incorrect Configuration Issue ) ĊĠ Ġ} Ċ } Ċ Ċ @ Suppress (" Member Visibility Can Be Private ") Ċ open Ġclass ĠIssue Ġ@ Inject Ġconstructor ( objects : ĠObject Factory ) Ġ{ ĊĊĠ Ġinternal Ġval Ġbehavior Ġ= Ġobjects . property ( Behavior :: class . java ). also Ġ{ ĊĠĠĠ Ġit . convention ( Warn ()) ĊĠ Ġ} ĊĊĠ Ġfun Ġfail ( var arg Ġignore : ĠString ) Ġ{ ĊĠĠĠ Ġfail ( ignore . toSet ()) ĊĠ Ġ} ĊĊĠ Ġfun Ġfail ( ignore : ĠIterable < String >) Ġ{ ĊĠĠĠ Ġwith ( behavior ) Ġ{ ĊĠĠĠĠĠ Ġset ( Fail ( ignore . toSet ())) ĊĠĠĠĠĠ Ġdis allow Changes () ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġfun Ġwarn ( var arg Ġignore : ĠString ) Ġ{ ĊĠĠĠ Ġwarn ( ignore . toSet ()) ĊĠ Ġ} ĊĊĠ Ġfun Ġwarn ( ignore : ĠIterable < String >) Ġ{ ĊĠĠĠ Ġwith ( behavior ) Ġ{ ĊĠĠĠĠĠ Ġset ( Warn ( ignore . toSet ())) ĊĠĠĠĠĠ Ġdis allow Changes () ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ// ĠThis Ġtakes Ġno Ġarguments Ġbecause Ġit 's Ġimplied Ġwe 're Ġignoring Ġeverything ĊĠ Ġfun Ġignore () Ġ{ ĊĠĠĠ Ġwith ( behavior ) Ġ{ ĊĠĠĠĠĠ Ġset ( Ignore ) ĊĠĠĠĠĠ Ġdis allow Changes () ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ Ċ sealed Ġclass ĠBehavior ( val Ġfilter : ĠSet < String > Ġ= Ġset Of ()) Ġ: ĠSerializable Ċ class ĠFail ( filter : ĠSet < String > Ġ= Ġmutable Set Of ()) Ġ: ĠBehavior ( filter ) Ċ class ĠW arn ( filter : ĠSet < String > Ġ= Ġmutable Set Of ()) Ġ: ĠBehavior ( filter ) Ċ object ĠIgnore Ġ: ĠBehavior () Ċ