package Ġorg . jl le its ch uh . gradle . kt lint . worker Ċ Ċ import Ġcom . p interest . kt lint . core . Kt Lint Ċ import Ġcom . p interest . kt lint . core . Lint Error Ċ import Ġcom . p interest . kt lint . core . ParseException Ċ import Ġcom . p interest . kt lint . core . Rule Set Ċ import Ġcom . p interest . kt lint . core . Rule Set Provider Ċ import Ġnet . swift zer . semver . Sem Ver Ċ import Ġorg . gradle . api . Gradle Exception Ċ import Ġorg . gradle . api . file . Configurable File Collection Ċ import Ġorg . gradle . api . file . Regular File Property Ċ import Ġorg . gradle . api . logging . Logging Ċ import Ġorg . gradle . api . provider . Property Ċ import Ġorg . gradle . api . provider . SetProperty Ċ import Ġorg . gradle . workers . Work Action Ċ import Ġorg . gradle . workers . Work Parameters Ċ import Ġjava . util . Service Loader Ċ Ċ @ Suppress (" Un stable Api Usage ") Ċ abstract Ġclass ĠK t Lint Work Action Ġ: ĠWork Action < Kt Lint Work Action . Kt Lint Work Parameters > Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġlogger Ġ= ĠLogging . getLogger (" kt lint - worker ") ĊĊĠĠĠ Ġoverride Ġfun Ġexecute () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrule Sets Ġ= Ġload Rule Sets And Filter The m ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparameters . enable Experimental . getOrElse ( false ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparameters . disabled Rules . getOrElse ( empty Set ()) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġadditional Editor Config Ġ= Ġparameters ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. additional Editor configFile ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. or Null ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . as File ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . absolute Path ĊĠĠĠĠĠĠĠ Ġval ĠuserData Ġ= Ġgenerate UserData () ĊĠĠĠĠĠĠĠ Ġval Ġdebug Ġ= Ġparameters . debug . get () ĊĠĠĠĠĠĠĠ Ġval Ġformat Source Ġ= Ġparameters . format Source . getOrElse ( false ) ĊĊĠĠĠĠĠĠĠ Ġreset Editor config Cache () ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġmutable ListOf < Lint Error Result >() ĊĊĠĠĠĠĠĠĠ Ġparameters . files To Lint . files . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġerrors Ġ= Ġmutable ListOf < Pair < Lint Error , ĠBoolean >>() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkt Lint Parameters Ġ= ĠK t Lint . Params ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠfileName Ġ= Ġit . absolute Path , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġit . read Text (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrule Sets Ġ= Ġrule Sets , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠuserData Ġ= ĠuserData , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdebug Ġ= Ġdebug , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeditor ConfigPath Ġ= Ġadditional Editor Config , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscript Ġ= Ġ! it . name . endsWith (". kt ", Ġignore Case Ġ= Ġtrue ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcb Ġ= Ġ{ Ġlint Error , Ġis Correct ed Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerrors . add ( lint Error Ġto Ġis Correct ed ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( format Source ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrent FileContent Ġ= Ġit . read Text () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġupdated FileContent Ġ= ĠK t Lint . format ( kt Lint Parameters ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( updated FileContent Ġ!= Ġcurrent FileContent ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . write Text ( updated FileContent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠK t Lint . lint ( kt Lint Parameters ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠParseException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠGradle Exception ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Kt Lint Ġfailed Ġto Ġparse Ġfile : Ġ${ it . absolute Path }", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠL int Error Result ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlint ed File Ġ= Ġit , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlint Errors Ġ= Ġerrors ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠK t Lint Classes Serializer ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. create ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSem Ver . parse ( parameters . kt Lint Version . get ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. save Errors ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparameters . dis covered Errors File . as File . get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġreset Editor config Cache () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( parameters . editor config Files W ere Changed . get ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . info (" Reset ting ĠK t Lint Ġcaches ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCalling Ġtrim Memory () Ġwill Ġalso Ġreset Ġinternal Ġloaded Ġ`. editor config ` Ġcache ĊĠĠĠĠĠĠĠĠĠĠĠ ĠK t Lint . trim Memory () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġgenerate UserData (): ĠMap < String , ĠString > Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠuserData Ġ= Ġmutable Map Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" android " Ġto Ġparameters . android . get (). toString () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġdisabled Rules Ġ= Ġparameters . disabled Rules . get () ĊĠĠĠĠĠĠĠ Ġif Ġ( disabled Rules . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠuserData [" disabled _ rules "] Ġ= Ġdisabled Rules . join ToString ( separator Ġ= Ġ", ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠuserData . toMap () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload Rule Sets And Filter The m ( ĊĠĠĠĠĠĠĠ Ġenable Experimental : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġdisabled Rules : ĠSet < String > ĊĠĠĠ Ġ): ĠSet < Rule Set > Ġ= Ġload Rule Sets From Classpath () ĊĠĠĠĠĠĠĠ Ġ. filter Keys Ġ{ Ġenable Experimental Ġ|| Ġit Ġ!= Ġ" experimental " Ġ} ĊĠĠĠĠĠĠĠ Ġ. filter Keys Ġ{ Ġ!( disabled Rules . contains (" standard ") Ġ&& Ġit Ġ== Ġ"\ u 0 0 0 0 standard ") Ġ} ĊĠĠĠĠĠĠĠ Ġ. to Sorted Map () ĊĠĠĠĠĠĠĠ Ġ. map Values Ġ{ Ġit . value . get () Ġ} ĊĠĠĠĠĠĠĠ Ġ. values ĊĠĠĠĠĠĠĠ Ġ. toSet () ĊĊĠĠĠ Ġprivate Ġfun Ġload Rule Sets From Classpath (): ĠMap < String , ĠRule Set Provider > Ġ= ĠService Loader ĊĠĠĠĠĠĠĠ Ġ. load ( Rule Set Provider :: class . java ) ĊĠĠĠĠĠĠĠ Ġ. associate By Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkey Ġ= Ġit . get (). id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠAdapt ed Ġfrom ĠK t Lint ĠCLI Ġmodule ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( key Ġ== Ġ" standard ") Ġ"\ u 0 0 0 0 $ key " Ġelse Ġkey ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠK t Lint Work Parameters Ġ: ĠWork Parameters Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfiles To Lint : ĠConfigur able File Collection ĊĠĠĠĠĠĠĠ Ġval Ġandroid : ĠProperty < Boolean > ĊĠĠĠĠĠĠĠ Ġval Ġdisabled Rules : ĠSet Property < String > ĊĠĠĠĠĠĠĠ Ġval Ġenable Experimental : ĠProperty < Boolean > ĊĠĠĠĠĠĠĠ Ġval Ġdebug : ĠProperty < Boolean > ĊĠĠĠĠĠĠĠ Ġval Ġadditional Editor configFile : ĠRegular File Property ĊĠĠĠĠĠĠĠ Ġval Ġformat Source : ĠProperty < Boolean > ĊĠĠĠĠĠĠĠ Ġval Ġdiscovered Errors File : ĠRegular File Property ĊĠĠĠĠĠĠĠ Ġval Ġkt Lint Version : ĠProperty < String > ĊĠĠĠĠĠĠĠ Ġval Ġeditor config Files W ere Changed : ĠProperty < Boolean > ĊĠĠĠ Ġ} Ċ } Ċ