/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 7 - 2 0 1 8 ĠHERE ĠEurope ĠB . V . Ċ Ġ* Ċ Ġ* Ġ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 . Ċ Ġ* Ċ Ġ* ĠSPDX - License - Identifier : ĠApache - 2 . 0 Ċ Ġ* ĠLicense - Filename : ĠLICENSE Ċ Ġ*/ Ċ Ċ package Ġcom . here . ort . commands Ċ Ċ import Ġch . fr ank el . slf 4 k .* Ċ Ċ import Ġcom . be ust . j command er . I String Converter Ċ import Ġcom . be ust . j command er . J Command er Ċ import Ġcom . be ust . j command er . Parameter Ċ import Ġcom . be ust . j command er . Parameter Exception Ċ import Ġcom . be ust . j command er . Parameters Ċ Ċ import Ġcom . here . ort . Command With Help Ċ import Ġcom . here . ort . model . Or t Result Ċ import Ġcom . here . ort . model . readValue Ċ import Ġcom . here . ort . reporter . Reporter Ċ import Ġcom . here . ort . utils . PARAMETER _ ORDER _ M AND AT ORY Ċ import Ġcom . here . ort . utils . log Ċ import Ġcom . here . ort . utils . safe Mk dirs Ċ import Ġcom . here . ort . utils . show StackTrace Ċ Ċ import Ġjava . io . File Ċ Ċ @ Parameters ( command Names Ġ= Ġ[" report "], ĊĠĠĠĠĠĠĠ Ġcommand Description Ġ= Ġ" Present ĠAnalyzer Ġand ĠScanner Ġresults Ġin Ġvarious Ġformats .") Ċ object ĠReport er Command Ġ: ĠCommand With Help () Ġ{ ĊĠĠĠ Ġprivate Ġclass ĠReport er Converter Ġ: ĠI String Converter < Reporter > Ġ{ ĊĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠMap Ġupper - case d Ġreporter Ġnames Ġwithout Ġthe Ġ" Reporter " Ġsuffix Ġnames Ġto Ġtheir Ġinstances . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠREPORT ERS Ġ= ĠReport er . ALL . associate By Ġ{ Ġit . toString (). remove Suffix (" Reporter "). toUpperCase () Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġconvert ( name : ĠString ): ĠReport er Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠREPORT ERS [ name . toUpperCase ()] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠParameter Exception (" Report ers Ġmust Ġbe Ġcontained Ġin Ġ${ REPORT ERS . keys }. ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Parameter ( description Ġ= Ġ" The ĠOR T Ġresult Ġfile Ġto Ġuse . ĠMust Ġcontain Ġa Ġscan Ġresult .", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnames Ġ= Ġ[" -- ort - file ", Ġ"- i "], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequired Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġorder Ġ= ĠPARAMETER _ ORDER _ M AND AT ORY ) ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġort Result File : ĠFile ĊĊĠĠĠ Ġ@ Parameter ( description Ġ= Ġ" The Ġoutput Ġdirectory Ġto Ġstore Ġthe Ġgenerated Ġreports Ġin .", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnames Ġ= Ġ[" -- output - dir ", Ġ"- o "], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequired Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġorder Ġ= ĠPARAMETER _ ORDER _ M AND AT ORY ) ĊĠĠĠ Ġ@ Suppress (" Late init Usage ") ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġoutput Dir : ĠFile ĊĊĠĠĠ Ġ@ Parameter ( description Ġ= Ġ" The Ġlist Ġof Ġreport Ġformats Ġthat Ġwill Ġbe Ġgenerated .", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnames Ġ= Ġ[" -- report - formats ", Ġ"- f "], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconverter Ġ= ĠReport er Converter :: class , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequired Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġorder Ġ= ĠPARAMETER _ ORDER _ M AND AT ORY ) ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġreport Formats : ĠList < Reporter > ĊĊĠĠĠ Ġoverride Ġfun Ġrun Command ( jc : ĠJ Command er ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrequire (! output Dir . exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" The Ġoutput Ġdirectory Ġ'${ output Dir . absolute Path }' Ġmust Ġnot Ġexist Ġyet ." ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoutput Dir . safe Mk dirs () ĊĊĠĠĠĠĠĠĠ Ġval Ġort Result Ġ= Ġort Result File . readValue < Or t Result >() ĊĊĠĠĠĠĠĠĠ Ġreport Formats . distinct (). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . generate Report ( ort Result , Ġoutput Dir ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . show StackTrace () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog . error Ġ{ Ġ" Could Ġnot Ġcreate Ġ'$ it ' Ġreport : Ġ${ e . message }" Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ