package Ġret ect . rule Ċ Ċ import Ġio . gitlab . art urb os ch . de te kt . api .* Ċ import Ġorg . jetbrains . kotlin . psi . Kt Named Function Ċ import Ġorg . jetbrains . kotlin . psi . psi Util . is Private Ċ Ċ class ĠUnit Function Rule ( config : ĠConfig ) Ġ: ĠRule ( config ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġis Ignore Private Function Ġ= Ġconfig . value OrDefault (" ignore Private Function ", Ġtrue ) ĊĊĠĠĠ Ġoverride Ġval Ġissue Ġ= ĠIssue ( ĊĠĠĠĠĠĠĠ Ġ" Unit Function ", ĊĠĠĠĠĠĠĠ ĠSeverity . Warning , ĊĠĠĠĠĠĠĠ Ġ" All Ġfunction Ġis Ġrequired Ġvoid - return ", ĊĠĠĠĠĠĠĠ Ġde bt Ġ= ĠDeb t . FI VE _ MIN S ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Named Function ( function : ĠK t Named Function ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . visit Named Function ( function ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ(( function . is Private (). not () Ġ|| Ġis Ignore Private Function . not ()) Ġ&& Ġis Unit Function ( function ). not ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreport ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCode S mell ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġissue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEntity . from ( function ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Ġ= Ġ" function Ġ${ function . name } Ġmust Ġbe Ġvoid - return " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis Unit Function ( function : ĠK t Named Function ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( function . has Declared ReturnType ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfunction . type Reference ?. type Element ?. text Ġ== Ġ" Unit " ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( function . body Block Expression Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbody Expression Ġ= Ġfunction . body Expression ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġbody Expression Ġ== Ġnull Ġ|| Ġbody Expression . text Ġ== Ġ" Unit " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }