package Ġorg . jetbrains . research . l up a . kotlin Analysis . gradle . analysis . gradle Ċ Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġorg . jetbrains . research . l up a . kotlin Analysis . Analysis Executor Ċ import Ġorg . jetbrains . research . l up a . kotlin Analysis . PrintWriter ResourceManager Ċ import Ġorg . jetbrains . research . l up a . kotlin Analysis . ResourceManager Ċ import Ġorg . jetbrains . research . l up a . kotlin Analysis . gradle . analysis . gradle . settings Gradle . modules . Gradle Dependencies Collector Ċ import Ġorg . jetbrains . research . l up a . kotlin Analysis . gradle . analysis . gradle . settings Gradle . modules . Modules Graph Ċ import Ġorg . jetbrains . research . l up a . kotlin Analysis . psi . extent ions . extract Modules Ċ import Ġjava . nio . file . Path Ċ Ċ /** Ċ Ġ* ĠExecutor Ġfor Ġgradle Ġdependencies Ġanalysis Ġwhich Ġcollect s Ġgroup Ġid , Ġartifact Ġid Ġand Ġconfiguration Ġof Ġall Ċ Ġ* Ġdependencies Ġin Ġall Ġmodules ' Ġgradle Ġfiles Ġto Ġcsv Ġfile Ġwith Ġcolumns : Ċ Ġ* Ġ" project _ name ", Ġ" module _ name ", Ġ" group _ id ", Ġ" artifact _ id ", Ġ" config ". Ċ Ġ*/ Ċ class ĠGradle Dependencies By Modules Analysis Executor ( ĊĠĠĠ Ġoutput Dir : ĠPath , ĊĠĠĠ Ġfilename : ĠString Ġ= Ġ" gradle _ dependencies _ by _ modules _ data . csv " Ċ ) Ġ: ĊĠĠĠ ĠAnalysis Executor () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġgradle Dependencies Data Writer Ġ= ĠPrintWriter ResourceManager ( ĊĠĠĠĠĠĠĠ Ġoutput Dir , Ġfilename , ĊĠĠĠĠĠĠĠ ĠlistOf (" project _ name ", Ġ" module _ name ", Ġ" group _ id ", Ġ" artifact _ id ", Ġ" config ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. join ToString ( separator Ġ= Ġ", ") ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġoverride Ġval Ġcontrolled Resource Managers : ĠSet < ResourceManager > Ġ= Ġset Of ( gradle Dependencies Data Writer ) ĊĊĠĠĠ Ġoverride Ġfun Ġanaly se ( project : ĠProject ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġgraph Ġ= ĠModules Graph ( project . extract Modules ()) ĊĠĠĠĠĠĠĠ Ġval Ġgradle Dependencies Collector Ġ= ĠGradle Dependencies Collector () ĊĠĠĠĠĠĠĠ Ġgraph . accept ( gradle Dependencies Collector ) ĊĠĠĠĠĠĠĠ Ġgradle Dependencies Collector ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. get ModuleName To Gradle Dependencies () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. forEach Ġ{ Ġ( moduleName , Ġdependencies ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdependencies . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgradle Dependencies Data Writer . writer . println ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproject . name . replace ('# ', Ġ'/ '), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠmoduleName , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . groupId , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . artifactId , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . configuration ?. key Ġ?: Ġ"-" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). join ToString ( separator Ġ= Ġ", ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠExecutor Ġfor Ġgradle Ġdependencies Ġanalysis Ġwhich Ġcollect s Ġgroup Ġname , Ġname Ġand Ġconfiguration Ġof Ġall Ċ Ġ* Ġdependencies Ġin Ġall Ġgradle Ġfiles Ġto Ġcsv Ġfile Ġwith Ġcolumns : Ċ Ġ* Ġ" project _ name ", Ġ" group _ id ", Ġ" artifact _ id ", Ġ" config ". Ċ Ġ*/ Ċ class ĠGradle Dependencies Analysis Executor ( output Dir : ĠPath , Ġfilename : ĠString Ġ= Ġ" gradle _ dependencies _ data . csv ") Ġ: ĊĠĠĠ ĠAnalysis Executor () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġgradle Dependencies Data Writer Ġ= ĠPrintWriter ResourceManager ( ĊĠĠĠĠĠĠĠ Ġoutput Dir , Ġfilename , ĊĠĠĠĠĠĠĠ ĠlistOf (" project _ name ", Ġ" group _ id ", Ġ" artifact _ id ", Ġ" config ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. join ToString ( separator Ġ= Ġ", ") ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġoverride Ġval Ġcontrolled Resource Managers : ĠSet < ResourceManager > Ġ= Ġset Of ( gradle Dependencies Data Writer ) ĊĊĠĠĠ Ġoverride Ġfun Ġanaly se ( project : ĠProject ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġgradle Files Ġ= ĠGradle FileManager . extract Build Gradle Files From Project ( project ) ĊĠĠĠĠĠĠĠ Ġgradle Files . forEach Ġ{ Ġgradle File Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgradle Dependencies Ġ= Ġgradle File . extract Build Gradle Dependencies () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgradle Dependencies . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgradle Dependencies Data Writer . writer . println ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproject . name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . groupId , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . artifactId , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . configuration ?. key Ġ?: Ġ"-" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). join ToString ( separator Ġ= Ġ", ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ