package Ġcom . dsl . k tr ule set Ċ Ċ import Ġcom . dsl . k tr ule set . config . Disabled Rules Cache Ċ import Ġcom . dsl . k tr ule set . config . Emit Language Cache Ċ import Ġcom . p interest . kt lint . core . Rule Ċ import Ġcom . p interest . kt lint . core . ast . ElementType Ċ import Ġcom . p interest . kt lint . core . ast . children Ċ import Ġorg . jetbrains . kotlin . com . intellij . lang . AST Node Ċ import Ġorg . jetbrains . kotlin . com . intellij . psi . Psi WhiteSpace Ċ import Ġorg . jetbrains . kotlin . psi . Kt Import Directive Ċ import Ġorg . jetbrains . kotlin . psi . stubs . elements . Kt Stub Element Types Ċ Ċ class ĠAndroid Log Rule Ġ: ĠRule (" k class - android - log - rules ") Ġ{ ĊĠĠĠ Ġ@ Suppress (" UN RE ACH ABLE _ CODE ") ĊĠĠĠ Ġoverride Ġfun Ġvisit ( ĊĠĠĠĠĠĠĠ Ġnode : ĠAST Node , ĊĠĠĠĠĠĠĠ Ġauto Correct : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġemit : Ġ( offset : ĠInt , ĠerrorMessage : ĠString , Ġcan Be Auto Correct ed : ĠBoolean ) Ġ-> ĠUnit ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Disabled Rules Cache . disabled Rules List . contains ( id )) Ġreturn ĊĠĠĠĠĠĠĠ Ġvar Ġused Android Log Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( node . elementType Ġ== ĠElementType . IMPORT _ LIST ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchildren Ġ= Ġnode . getChildren ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( children . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimports Ġ= Ġchildren . filter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . elementType Ġ== ĠElementType . IMPORT _ DIRECT IVE Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . psi Ġis ĠPsi WhiteSpace Ġ&& Ġit . text Length Ġ> Ġ 1 Ġ// Ġalso Ġcollect Ġempty Ġlines , Ġthat Ġare Ġrepresented Ġas Ġ"\ n \ n " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsorted Imports Ġ= Ġimports ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. as Sequence () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . psi Ġ! is ĠPsi WhiteSpace Ġ} Ġ// Ġsort er Ġexpects ĠK t Import Directive , Ġwh ites p aces Ġare Ġinserted Ġafterwards ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . psi Ġas ĠK t Import Directive Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. distinct By Ġ{ Ġif Ġ( it . alias Name Ġ!= Ġnull ) Ġit . text . substring Before Last ( it . alias Name !! ) Ġelse Ġit . text Ġ} Ġ// Ġdistinguish Ġby Ġimport Ġpath Ġw / o Ġaliases ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . node Ġ} Ġ// Ġtransform Ġback Ġto ĠAST Node Ġin Ġorder Ġto Ġoperate Ġover Ġits Ġmethod Ġ( addChild ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( in port Node Ġin Ġsorted Imports ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( in port Node . text Ġ== Ġ" import Ġandroid . util . Log ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġused Android Log Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( used Android Log ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġroot Node Ġ= Ġnode . tree Parent ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( child Root Node Ġin Ġroot Node . children ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( child Root Node . elementType Ġ== ĠK t Stub Element Types . OBJECT _ DECL AR ATION Ġ|| Ġchild Root Node . elementType Ġ== ĠK t Stub Element Types . CLASS ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( child Node Ġin Ġchild Root Node . children ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( child Node . elementType Ġ== ĠElementType . IDENTIFIER ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ç¬¬ä¸Ģä¸ª æłĩè¯Ĩ ç¬¦ ï¼Į æĺ¯ ç±» åĲį ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( child Node . text Ġ!= Ġ" Debug Log ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemit ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchild Node . start Offset , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Emit Language Cache . emit _ zh _ CN ) Ġ" è¯· ä½¿çĶ¨ Debug Log å·¥åħ· ç±» ï¼ģ " Ġelse Ġ" Please Ġuse Ġthe ĠDebug Log Ġclass , do Ġnot Ġuse Ġandroid . util . Log ï¼ģ ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }