/* Ċ Ġ* ĠCopyright Ġ 2 0 1 0 - 2 0 1 7 ĠJetBrains Ġs . r . o . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġorg . jetbrains . kotlin . idea . ins pe ctions . gradle Ċ Ċ import Ġcom . intellij . code Inspection . Problem Highlight Type Ċ import Ġcom . intellij . openapi . roots . Module Root Manager Ċ import Ġcom . intellij . openapi . roots . Project Root Manager Ċ import Ġcom . intellij . psi . Psi Element Ċ import Ġcom . intellij . psi . Psi File Ċ import Ġcom . intellij . util . text . Version Comparator Util Ċ import Ġorg . jetbrains . kotlin . idea . configuration . all Modules Ċ import Ġorg . jetbrains . kotlin . idea . configuration . get Whole Module Group Ċ import Ġorg . jetbrains . kotlin . idea . ins pe ctions . Replace String In Document Fix Ċ import Ġorg . jetbrains . kotlin . idea . ins pe ctions . gradle . Gradle He uristic Helper . PRO DU CTION _ DEPEND ENCY _ STATE MENTS Ċ import Ġorg . jetbrains . kotlin . idea . versions . DEPRECATED _ LIBRARIES _ INFORMATION Ċ import Ġorg . jetbrains . kotlin . idea . versions . Deprecated Lib Info Ċ import Ġorg . jetbrains . kotlin . idea . versions . Lib Info Ċ import Ġorg . jetbrains . kotlin . psi . psi Util . get Strict Parent OfType Ċ import Ġorg . jetbrains . plugins . gradle . code Inspection . Gradle Base Inspection Ċ import Ġorg . jetbrains . plugins . groovy . code Inspection . Base Inspection Visitor Ċ import Ġorg . jetbrains . plugins . groovy . lang . psi . api . statements . blocks . Gr C losable Block Ċ import Ġorg . jetbrains . plugins . groovy . lang . psi . api . statements . expressions . Gr MethodCall Ċ import Ġorg . jetbrains . plugins . groovy . lang . psi . api . statements . expressions . path . Gr Call Expression Ċ Ċ private Ġval ĠLib Info . gradle Marker Ġget () Ġ= Ġ"$ groupId :$ name :" Ċ Ċ class ĠDeprecated Gradle Dependency Inspection Ġ: ĠGradle Base Inspection () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġbuild Visitor (): ĠBase Inspection Visitor Ġ= ĠDependency Finder () ĊĊĠĠĠ Ġprivate Ġopen Ġclass ĠDependency Finder Ġ: ĠKotlin Gradle Inspection Visitor () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit Closure ( closure : ĠGr C losable Block ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . visit Closure ( closure ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdependencies Call Ġ= Ġclosure . get Strict Parent OfType < Gr MethodCall >() Ġ?: Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( dependencies Call . inv oked Expression . text Ġ!= Ġ" dependencies ") Ġreturn ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdependency Entries Ġ= ĠGradle He uristic Helper . find Statement With Prefixes ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclosure , ĠPRO DU CTION _ DEPEND ENCY _ STATE MENTS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( dependency Statement Ġin Ġdependency Entries ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvisit Dependency Entry ( dependency Statement ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġopen Ġfun Ġvisit Dependency Entry ( dependency Statement : ĠGr Call Expression ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( out dated Info Ġin ĠDE PRECATED _ LIBRARIES _ INFORMATION ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdependency Text Ġ= Ġdependency Statement . text ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlib Marker Ġ= Ġoutdated Info . old . gradle Marker ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( dependency Text . contains ( lib Marker )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠShould Ġbe Ġgener ified Ġfor Ġany Ġlibrary , Ġnot Ġexactly ĠKotlin Ġstdlib ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlib Version Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDifferent Std lib Gradle Version Inspection . get Resolved Kotlin Std lib Version ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdependency Statement . containing File , ĠlistOf ( out dated Info . old . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ?: Ġlibrary Version From Order Entry ( dependency Statement . containing File , Ġoutdated Info . old . name ) ĊĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( lib Version Ġ!= Ġnull Ġ&& ĠVersion Comparator Util . COMP AR ATOR . compare ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlib Version , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoutdated Info . out dated After Version ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ>= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreport On Element Ġ= Ġreport On Element ( dependency Statement , Ġoutdated Info ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġregister Error ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreport On Element , Ġoutdated Info . message , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( Replace String In Document Fix ( report On Element , Ġoutdated Info . old . name , Ġoutdated Info . new . name )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProblem Highlight Type . LIKE _ DEPRECATED ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġreport On Element ( classpath Entry : ĠGr Call Expression , Ġdeprecated Info : ĠDeprecated Lib Info ): ĠPsi Element Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠindexOf Ġ= Ġclasspath Entry . text . indexOf ( deprecated Info . old . name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( indexOf Ġ< Ġ 0 ) Ġreturn Ġclasspath Entry ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġclasspath Entry . findElement At ( indexOf ) Ġ?: Ġclasspath Entry ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġlibrary Version From Order Entry ( file : ĠPsi File , Ġlibrary Id : ĠString ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmodule Ġ= ĠProject Root Manager . getInstance ( file . project ). file Index . getModule For File ( file . virtual File ) Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlib Marker Ġ= Ġ": $ library Id :" ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( module In Group Ġin Ġmodule . get Whole Module Group (). all Modules ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġlib Version : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠModule Root Manager . getInstance ( module In Group ). order Entries (). forEach Library Ġ{ Ġlibrary Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( library . name ?. contains ( lib Marker ) Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlib Version Ġ= Ġlibrary . name ?. substring After Last (": ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠContinue Ġif Ġnothing Ġis Ġfound ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlib Version Ġ== Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( lib Version Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġlib Version ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }