package Ġio . gitlab . art urb os ch . de te kt . rules . style Ċ Ċ import Ġio . gitlab . art urb os ch . de te kt . api . Code S mell Ċ import Ġio . gitlab . art urb os ch . de te kt . api . Config Ċ import Ġio . gitlab . art urb os ch . de te kt . api . De bt Ċ import Ġio . gitlab . art urb os ch . de te kt . api . Entity Ċ import Ġio . gitlab . art urb os ch . de te kt . api . Issue Ċ import Ġio . gitlab . art urb os ch . de te kt . api . Rule Ċ import Ġio . gitlab . art urb os ch . de te kt . api . Severity Ċ import Ġio . gitlab . art urb os ch . de te kt . api . internal . Requires Type Resolution Ċ import Ġorg . jetbrains . kotlin . Kt Node Types Ċ import Ġorg . jetbrains . kotlin . builtins . Kotlin Built Ins Ċ import Ġorg . jetbrains . kotlin . lexer . Kt Tokens Ċ import Ġorg . jetbrains . kotlin . name . Fq Name Ċ import Ġorg . jetbrains . kotlin . psi . Kt Call Expression Ċ import Ġorg . jetbrains . kotlin . psi . Kt Dot Qualified Expression Ċ import Ġorg . jetbrains . kotlin . psi . Kt Expression Ċ import Ġorg . jetbrains . kotlin . psi . Kt If Expression Ċ import Ġorg . jetbrains . kotlin . psi . Kt Prefix Expression Ċ import Ġorg . jetbrains . kotlin . psi . Kt This Expression Ċ import Ġorg . jetbrains . kotlin . psi . psi Util . block Expressions Or Single Ċ import Ġorg . jetbrains . kotlin . psi . psi Util . get Po ss ibly Qualified Call Expression Ċ import Ġorg . jetbrains . kotlin . resolve . Binding Context Ċ import Ġorg . jetbrains . kotlin . resolve . calls . call Util . get Resolved Call Ċ import Ġorg . jetbrains . kotlin . resolve . descriptor Util . fq Name OrNull Ċ Ċ /** Ċ Ġ* ĠThis Ġrule Ġdetect s Ġ` isEmpty ` Ġor Ġ` isBlank ` Ġcalls Ġto Ġassign Ġa Ġdefault Ġvalue . ĠThey Ġcan Ġbe Ġreplaced Ġwith Ġ` if Empty ` Ġor Ċ Ġ* Ġ` if Blank ` Ġcalls . Ċ Ġ* Ċ Ġ* Ġ< non comp liant > Ċ Ġ* Ġfun Ġtest ( list : ĠList < Int >, Ġs : ĠString ) Ġ{ Ċ Ġ* ĠĠĠĠ Ġval Ġa Ġ= Ġif Ġ( list . isEmpty ()) ĠlistOf ( 1 ) Ġelse Ġlist Ċ Ġ* ĠĠĠĠ Ġval Ġb Ġ= Ġif Ġ( list . isNotEmpty ()) Ġlist Ġelse ĠlistOf ( 2 ) Ċ Ġ* ĠĠĠĠ Ġval Ġc Ġ= Ġif Ġ( s . isBlank ()) Ġ" foo " Ġelse Ġs Ċ Ġ* ĠĠĠĠ Ġval Ġd Ġ= Ġif Ġ( s . isNotBlank ()) Ġs Ġelse Ġ" bar " Ċ Ġ* Ġ} Ċ Ġ* Ġ</ non comp liant > Ċ Ġ* Ċ Ġ* Ġ< comp liant > Ċ Ġ* Ġfun Ġtest ( list : ĠList < Int >, Ġs : ĠString ) Ġ{ Ċ Ġ* ĠĠĠĠ Ġval Ġa Ġ= Ġlist . if Empty Ġ{ ĠlistOf ( 1 ) Ġ} Ċ Ġ* ĠĠĠĠ Ġval Ġb Ġ= Ġlist . if Empty Ġ{ ĠlistOf ( 2 ) Ġ} Ċ Ġ* ĠĠĠĠ Ġval Ġc Ġ= Ġs . if Blank Ġ{ Ġ" foo " Ġ} Ċ Ġ* ĠĠĠĠ Ġval Ġd Ġ= Ġs . if Blank Ġ{ Ġ" bar " Ġ} Ċ Ġ* Ġ} Ċ Ġ* Ġ</ comp liant > Ċ Ġ* Ċ Ġ*/ Ċ @ Requires Type Resolution Ċ @ Suppress (" Return Count ", Ġ" Complex Method ") Ċ class ĠUse If Empty Or If Blank ( config : ĠConfig Ġ= ĠConfig . empty ) Ġ: ĠRule ( config ) Ġ{ ĊĠĠĠ Ġoverride Ġval Ġissue : ĠIssue Ġ= ĠIssue ( ĊĠĠĠĠĠĠĠ Ġ" Use If Empty Or If Blank ", ĊĠĠĠĠĠĠĠ ĠSeverity . Style , ĊĠĠĠĠĠĠĠ Ġ" Use Ġ` if Empty ` Ġor Ġ` if Blank ` Ġinstead Ġof Ġ` isEmpty ` Ġor Ġ` isBlank ` Ġto Ġassign Ġa Ġdefault Ġvalue .", ĊĠĠĠĠĠĠĠ ĠDeb t . FI VE _ MIN S ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġoverride Ġfun Ġvisit If Expression ( expression : ĠK t If Expression ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . visit If Expression ( expression ) ĊĠĠĠĠĠĠĠ Ġif Ġ( binding Context Ġ== ĠBinding Context . EMPTY ) Ġreturn ĊĊĠĠĠĠĠĠĠ Ġif Ġ( expression . is Else If ()) Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġthen Expression Ġ= Ġexpression . then Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġelse Expression Ġ= Ġexpression .` else ` Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġif Ġ( else Expression Ġis ĠK t If Expression ) Ġreturn ĊĊĠĠĠĠĠĠĠ Ġval Ġ( condition , Ġis Neg ated Condition ) Ġ= Ġexpression . condition () Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġcondition Call Expression Ġ= Ġcondition . get Po ss ibly Qualified Call Expression () Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġcondition Cal lee Expression Ġ= Ġcondition Call Expression . callee Expression Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġcondition Cal lee Expression Text Ġ= Ġcondition Cal lee Expression . text ĊĠĠĠĠĠĠĠ Ġif Ġ( condition Cal lee Expression Text Ġ! in Ġcondition Function Short Names ) Ġreturn ĊĊĠĠĠĠĠĠĠ Ġval Ġreplacement Ġ= Ġcondition Call Expression . replacement () Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġself Branch Ġ= Ġif Ġ( is Neg ated Condition Ġxor Ġreplacement . negative Condition ) Ġthen Expression Ġelse Ġelse Expression ĊĠĠĠĠĠĠĠ Ġval Ġself Value Expression Ġ= Ġself Branch . block Expressions Or Single (). single OrNull () Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġif Ġ( condition Ġis ĠK t Dot Qualified Expression ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( self Value Expression . text Ġ!= Ġcondition . receiver Expression . text ) Ġreturn ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( self Value Expression Ġ! is ĠK t This Expression ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" This Ġ'$ condition Cal lee Expression Text ' Ġcall Ġcan Ġbe Ġreplaced Ġwith Ġ'${ replacement . replacement FunctionName } '" ĊĠĠĠĠĠĠĠ Ġreport ( Code S mell ( issue , ĠEntity . from ( condition Cal lee Expression ), Ġmessage )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠK t Expression . is Else If (): ĠBoolean Ġ= Ġparent . node . elementType Ġ== ĠK t Node Types . ELSE ĊĊĠĠĠ Ġprivate Ġfun ĠK t If Expression . condition (): ĠPair < Kt Expression , ĠBoolean >? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcondition Ġ= Ġthis . condition Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( condition Ġis ĠK t Prefix Expression ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( condition . operation Token Ġ!= ĠK t Tokens . EXCL ) Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbase Expression Ġ= Ġcondition . base Expression Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbase Expression Ġto Ġtrue ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcondition Ġto Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠK t Call Expression . replacement (): ĠRe placement ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdescriptor Ġ= Ġget Resolved Call ( binding Context )?. result ing Descriptor Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġval Ġreceiver Parameter Ġ= Ġdescriptor . dispatch Receiver Parameter Ġ?: Ġdescriptor . extension Receiver Parameter ĊĠĠĠĠĠĠĠ Ġval Ġreceiver Type Ġ= Ġreceiver Parameter ?. type Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġif Ġ( Kotlin Built Ins . isArray Or Primitive Array ( receiver Type )) Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġval Ġcondition Call Fq Name Ġ= Ġdescriptor . fq Name OrNull () Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġreturn Ġreplacement s [ condition Call Fq Name ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġdata Ġclass ĠRe placement ( ĊĠĠĠĠĠĠĠ Ġval Ġcondition Function Fq Name : ĠF q Name , ĊĠĠĠĠĠĠĠ Ġval Ġreplacement FunctionName : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġnegative Condition : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval Ġif Blank Ġ= Ġ" if Blank " ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval Ġif Empty Ġ= Ġ" if Empty " ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġreplacement s Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRe placement ( Fq Name (" kotlin . text . isBlank "), Ġif Blank ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRe placement ( Fq Name (" kotlin . text . isEmpty "), Ġif Empty ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRe placement ( Fq Name (" kotlin . collections . List . isEmpty "), Ġif Empty ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRe placement ( Fq Name (" kotlin . collections . Set . isEmpty "), Ġif Empty ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRe placement ( Fq Name (" kotlin . collections . Map . isEmpty "), Ġif Empty ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRe placement ( Fq Name (" kotlin . collections . Collection . isEmpty "), Ġif Empty ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRe placement ( Fq Name (" kotlin . text . isNotBlank "), Ġif Blank , Ġnegative Condition Ġ= Ġtrue ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRe placement ( Fq Name (" kotlin . text . isNotEmpty "), Ġif Empty , Ġnegative Condition Ġ= Ġtrue ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRe placement ( Fq Name (" kotlin . collections . isNotEmpty "), Ġif Empty , Ġnegative Condition Ġ= Ġtrue ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRe placement ( Fq Name (" kotlin . String . isEmpty "), Ġif Empty ) ĊĠĠĠĠĠĠĠ Ġ). associate By Ġ{ Ġit . condition Function Fq Name Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġcondition Function Short Names Ġ= Ġreplacement s . keys . map Ġ{ Ġit . short Name (). asString () Ġ}. toSet () ĊĠĠĠ Ġ} Ċ } Ċ