/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 - 2 0 2 2 ĠCh i ĠC ao ĠMin h Ċ Ġ* Ċ Ġ* Ġ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 Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttps :// 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 Ġc ca om inh Ċ Ċ import Ġjava . io . File Ċ Ċ /** Ċ Ġ* ĠGet ĠInt ellij Ġinspect Ġscript Ġname Ġfor Ġcurrent ĠOS , Ġor Ġnull Ġif Ġunknown ĠOS Ċ Ġ*/ Ċ internal Ġfun Ġget Int ellij Inspect Script (): ĠString ? Ġ{ ĊĠĠĠ Ġ// Ġhttps :// www . jetbrains . com / help / idea / command - line - code - inspector . html ĊĠĠĠ Ġval Ġos Ġ= Ġget Os Name () ĊĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠ Ġos . indexOf (" nux ") Ġ>= Ġ 0 Ġ-> Ġ" bin / inspect . sh " ĊĠĠĠĠĠĠĠ Ġos . indexOf (" mac ") Ġ>= Ġ 0 Ġ-> Ġ" Contents / bin / inspect . sh " ĊĠĠĠĠĠĠĠ Ġos . indexOf (" win ") Ġ>= Ġ 0 Ġ-> Ġ" bin \\ inspect . bat " ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun Ġget Os Name (): ĠString Ġ{ ĊĠĠĠ Ġreturn ĠSystem . getProperty (" os . name "). lowercase () Ċ } Ċ Ċ // ĠFor Ġfacilit ating Ġtesting Ċ internal Ġfun Ġanalyze ( ĊĠĠĠ Ġpre par er : Ġ() Ġ-> ĠUnit , ĊĠĠĠ Ġrunner : Ġ() Ġ-> ĠInt , ĊĠĠĠ Ġgather er : Ġ() Ġ-> ĠSequence < File >, ĊĠĠĠ Ġreporter : Ġ( File ) Ġ-> ĠString ? Ċ ): ĠBoolean Ġ{ ĊĠĠĠ Ġpre par er () ĊĠĠĠ Ġrunner () ĊĊĠĠĠ Ġvar Ġno Violation Ġ= Ġtrue ĊĠĠĠ Ġval Ġoutput Files Ġ= Ġgather er () ĊĠĠĠ Ġoutput Files . forEach Ġ{ Ġfile Ġ-> ĊĠĠĠĠĠĠĠ Ġreporter ( file )?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( this . isNotBlank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġno Violation Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġno Violation Ċ } Ċ Ċ internal Ġfun Ġsetup Inspect Scope ( intellij : ĠString , Ġscope : ĠString ) Ġ{ ĊĠĠĠ Ġ// Ġhttps :// www . jetbrains . com / help / idea / tuning - the - ide . html # configure - platform - properties ĊĠĠĠ Ġval Ġos Ġ= Ġget Os Name () ĊĠĠĠ Ġval Ġint ellij Properties Name Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠ Ġos . indexOf (" nux ") Ġ>= Ġ 0 Ġ-> Ġ" bin /" ĊĠĠĠĠĠĠĠ Ġos . indexOf (" mac ") Ġ>= Ġ 0 Ġ-> Ġ" Contents / bin /" ĊĠĠĠĠĠĠĠ Ġos . indexOf (" win ") Ġ>= Ġ 0 Ġ-> Ġ" bin \ \" ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalStateException (" Invalid Ġoperating Ġsystem : Ġ${ os }") ĊĠĠĠ Ġ} Ġ+ Ġ" idea . properties " ĊĊĠĠĠ Ġval Ġint ellij Properties File Ġ= ĠFile ( intellij , Ġint ellij Properties Name ) ĊĠĠĠ Ġint ellij Properties File . parent File . mkdir s () ĊĠĠĠ Ġint ellij Properties File . write Text (" idea . analyze . scope =${ scope }") Ċ } Ċ Ċ internal Ġfun Ġrun Int ellij Inspect ( ĊĠĠĠ Ġint ellij : ĠString , ĊĠĠĠ Ġproject : ĠString , ĊĠĠĠ Ġprofile : ĠString , ĊĠĠĠ Ġoutput : ĠString , ĊĠĠĠ Ġdirectory : ĠString ? Ċ ): ĠInt Ġ{ ĊĠĠĠ Ġval Ġinspect Ġ= ĠFile ( intellij , Ġget Int ellij Inspect Script () !! ). absolute Path ĊĠĠĠ Ġval Ġproject Path Ġ= ĠFile ( project ). absolute Path ĊĠĠĠ Ġval Ġinspection Path Ġ= ĠFile ( profile ). absolute Path ĊĠĠĠ Ġval Ġoutput Dir Ġ= ĠFile ( output ) ĊĠĠĠ Ġoutput Dir . mkdir s () ĊĠĠĠ Ġval Ġoutput Path Ġ= Ġoutput Dir . absolute Path ĊĊĠĠĠ Ġval Ġcommand Ġ= Ġmutable ListOf < String >( ĊĠĠĠĠĠĠĠ Ġinspect , ĊĠĠĠĠĠĠĠ Ġproject Path , ĊĠĠĠĠĠĠĠ Ġinspection Path , ĊĠĠĠĠĠĠĠ Ġoutput Path , ĊĠĠĠĠĠĠĠ Ġ"- v 2 " Ġ Ġ// Ġfor Ġprogress Ġindicator ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġif Ġ( directory Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcommand . addAll ( listOf ("- d ", Ġdirectory )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġhttps :// www . jetbrains . com / help / idea / command - line - code - inspector . html ĊĠĠĠ Ġreturn ĠProcess Builder ( command ). inherit IO (). start (). waitFor () Ċ } Ċ