package Ġde . f ra un ho fer . aise c . co dy ze . sar if Ċ Ċ import Ġcom . fasterxml . jackson . core . Json Processing Exception Ċ import Ġcom . fasterxml . jackson . databind . ObjectMapper Ċ import Ġcom . fasterxml . jackson . databind . Serialization Feature Ċ import Ġde . f ra un ho fer . aise c . co dy ze . analysis . Finding Ċ import Ġde . f ra un ho fer . aise c . co dy ze . analysis . Finding Description . Companion . instance Ċ import Ġde . f ra un ho fer . aise c . co dy ze . sar if . schema .* Ċ import Ġde . f ra un ho fer . aise c . mark . mark Dsl . Action Ċ import Ġjava . io . File Ċ import Ġjava . net . URI Ċ import Ġjava . util .* Ċ import Ġorg . slf 4 j . LoggerFactory Ċ Ċ /** Ċ Ġ* ĠThis Ġclass Ġwas Ġcreated Ġto Ġprovide Ġan Ġeasy - to - use Ġinterface Ġwith Ġwhich Ġcorrect ĠS AR IF Ġoutput Ġcan Ġbe Ċ Ġ* Ġproduced . ĠThe ĠToString () Ġreturns Ġthe Ġformatted Ġoutput Ġusing Ġthe Ġpreviously Ġgiven ĠResults . Ċ Ġ*/ Ċ class ĠSar if Instanti ator Ġinternal Ġconstructor () Ġ{ ĊĠĠĠ Ġ/** Ġclass Ġmembers Ġdefinitely Ġneed Ġto Ġbe Ġreviewed / changed Ġafter Ġparsing Ġa Ġnew ĠS AR IF Ġtemplate Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġsar if Ġ= ĠSar if 2 1 0 () ĊĊĠĠĠ Ġ// ĠTODO : Ġget Ġschema / version Ġautomatically ( ?) ĊĠĠĠ Ġprivate Ġval Ġschema URI Ġ= ĠURI . create (" https :// json . sche m astore . org / sar if - 2 . 1 . 0 . json ") ĊĠĠĠ Ġprivate Ġval Ġsar if Version Ġ= ĠSar if 2 1 0 . Version ._ 2 _ 1 _ 0 ĊĊĠĠĠ Ġ// ĠTODO : Ġautomate Ġgetting Ġthe Ġname / version / schema ĊĠĠĠ Ġprivate Ġval Ġorganization Ġ= Ġ" F ra un ho fer ĠAI SEC " ĊĠĠĠ Ġprivate Ġval Ġdriver Name Ġ= Ġ" co dy ze " ĊĠĠĠ Ġprivate Ġval Ġc ody ze Version Ġ= Ġ" 2 . 0 . 0 - beta " ĊĠĠĠ Ġprivate Ġval Ġdownload URI Ġ= ĠURI . create (" https :// github . com / F ra un ho fer - AI SEC / co dy ze / releases ") ĊĠĠĠ Ġprivate Ġval Ġinformation URI Ġ= ĠURI . create (" https :// www . co dy ze . io / docs /") ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġapp ends Ġthe Ġgiven Ġparameters Ġas Ġa Ġnew Ġrun Ġto Ġthe Ġend Ġof Ġthe ĠSar if ĠObject ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġfindings Ġa Ġset Ġof ĠFind ings Ġas Ġproduced Ġby Ġthe Ġcode Ġanalysis ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġpush Run ( find ings : ĠSet < Finding >) Ġ{ ĊĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠ Ġimports Ġthe Ġrules Ġas Ġparsed Ġfrom ĠFind ing Description . kt ĊĠĠĠĠĠĠĠ Ġassumes Ġthat Ġimportant Ġfields Ġlike Ġshort Description ĠDO ĠNOT Ġreturn Ġnull , Ġotherwise Ġthey Ġwill Ġbe Ġempty Ġ( not Ġnull ) ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġval Ġpossible Find ings Ġ= Ġinstance . getItems () ĊĠĠĠĠĠĠĠ Ġval Ġrules : ĠSet < Reporting Descriptor > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpossible Find ings ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . map Ġ{ Ġ( id , Ġitem ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgenerate Reporting Descriptor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Of (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgenerate Mult iform at Message String ( item . short Description ?. text Ġ?: Ġ"", Ġnull ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgenerate Mult iform at Message String ( item . full Description ?. text Ġ?: Ġ"", Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . toSet () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġset Of () ĊĊĠĠĠĠĠĠĠ Ġ// Ġgenerate ĠTool Ġwith Ġset Ġdriver Ġand Ġno Ġextensions ĊĠĠĠĠĠĠĠ Ġval Ġdriver Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgenerate Tool Component ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdriver Name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc ody ze Version , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdownload URI , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinformation URI , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġorganization , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrules ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġtool Ġ= Ġgenerate Tool ( driver , Ġset Of ()) ĊĊĠĠĠĠĠĠĠ Ġ// Ġchanges Ġthe Ġgiven Ġset Ġof Ġfindings Ġinto Ġa Ġsar if Ġcompliant Ġlist Ġof Ġresults ĊĠĠĠĠĠĠĠ Ġ// Ġby Ġiter ating Ġover Ġeach Ġresult Ġand Ġconvert Ġit ĊĠĠĠĠĠĠĠ Ġval Ġresults Ġ= ĠLinkedList < Result >() ĊĠĠĠĠĠĠĠ Ġfor Ġ(( message Id Counter , Ġfinding ) Ġin Ġfindings . with Index ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġtries Ġto Ġdetermine Ġkind Ġand Ġlevel Ġ( level Ġis Ġignored Ġif Ġkind Ġ!= ĠFAIL ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkind Ġ= Ġfinding . kind ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlevel Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( kind Ġ== ĠResult . Kind . FAIL ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( finding . action ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAction . FAIL Ġ-> ĠResult . Level . ERROR ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAction . WARN Ġ-> ĠResult . Level . WARNING ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAction . INFO Ġ-> ĠResult . Level . NOTE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠResult . Level . NONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĠResult . Level . NONE ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġthe Ġmessage Ġhas Ġthe Ġpass Ġor Ġfail Ġdescription Ġand Ġa Ġunique Ġid Ġ( en forced Ġthrough Ġa ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġcounter ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġfinding . identifier Ġ+ Ġ" Message " Ġ+ ĠmessageId Counter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmessage Text Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( kind ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResult . Kind . PASS Ġ-> Ġinstance . getDescription Pass ( finding . identifier ) Ġ?: Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġinstance . getDescription Full ( finding . identifier ) Ġ?: Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġthis Ġfar Ġno Ġmarkdown Ġis Ġsupported Ġ-> Ġmessage Ġonly Ġconsists Ġof Ġplain Ġtext ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= Ġgenerate Message ( message Text , Ġnull , Ġid , ĠlistOf ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġthe Ġlocations Ġcan Ġbe Ġtaken Ġfrom Ġthe Ġcorresponding Ġparameter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlocations Ġ= ĠLinkedList < Location >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġadd Ġone Ġto Ġevery Ġregion Ġparameter Ġ( except Ġ- 1 ) Ġsince Ġthey Ġstart Ġat Ġ 0 Ġinstead Ġof Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ@ see Ġde . f ra un ho fer . aise c . co dy ze . analysis . utils . Utils . get Region By Node ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ(( location Id Counter , Ġlocation ) Ġin Ġfinding . locations . with Index ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreg Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgenerate Region ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( location . region . start Line Ġ== Ġ- 1 ) Ġ- 1 Ġelse Ġlocation . region . start Line Ġ+ Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( location . region . end Line Ġ== Ġ- 1 ) Ġ- 1 Ġelse Ġlocation . region . end Line Ġ+ Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( location . region . start Column Ġ== Ġ- 1 ) Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġlocation . region . start Column Ġ+ Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( location . region . end Column Ġ== Ġ- 1 ) Ġ- 1 Ġelse Ġlocation . region . end Column Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġgenerate Ġexact Ġphysical Ġlocation Ġfor Ġthe Ġresult Ġ( absolute ĠURI Ġwith Ġno Ġfurther ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġbase ĠURI ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġa Loc Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgenerate Artifact Location ( location . artifact Location . uri . path , Ġnull , Ġnull , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġp Loc Ġ= Ġgenerate Physical Location ( a Loc , Ġreg , Ġnull ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġsimple Ġlocation Ġobject Ġwithout Ġits Ġown Ġmessage Ġor Ġany Ġannotations / relationships ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocations . add ( generate Location ( location Id Counter , Ġp Loc , Ġnull , Ġnull , Ġnull )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġtries Ġto Ġfind Ġthe Ġindex Ġof Ġthe Ġrule Ġin Ġthe Ġcorresponding ĠComponent Ġarray ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġindex Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrules . indexOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgenerate Reporting Descriptor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinding . identifier , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Of (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgenerate Mult iform at Message String ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinstance . getDescription Short ( finding . identifier ) Ġ?: Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgenerate Mult iform at Message String ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinstance . getDescription Full ( finding . identifier ) Ġ?: Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġcombine Ġall Ġof Ġthe Ġparameters Ġinto Ġa ĠResult Ġand Ġadd Ġit Ġto Ġthe Ġresult ĠList ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresults . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgenerate Result ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinding . identifier , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindex , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkind , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlevel , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocations , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġgenerates Ġthe Ġrun Ġwith Ġthe Ġresults Ġ( no Ġartifacts Ġand Ġgraphs Ġyet ) Ġand Ġadds Ġit Ġto Ġthe ĠList ĊĠĠĠĠĠĠĠ Ġ// Ġof Ġruns ĊĠĠĠĠĠĠĠ Ġval Ġrun Ġ= Ġgenerate Run ( tool , Ġnull , Ġnull , Ġresults ) ĊĠĠĠĠĠĠĠ Ġlog . info (" Adding Ġnew Ġrun Ġto Ġthe Ġsar if Ġoutput ") ĊĠĠĠĠĠĠĠ Ġsar if . runs . add ( run ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" unused ") ĊĠĠĠ Ġfun Ġpop Run (): ĠRun Ġ{ ĊĠĠĠĠĠĠĠ Ġlog . info (" Removing Ġrun Ġfrom Ġthe Ġsar if Ġoutput ") ĊĠĠĠĠĠĠĠ Ġreturn Ġsar if . runs . remove Last () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġgenerates Ġa Ġsingle Ġrun Ġin Ġthe ĠS AR IF Ġschema ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġtool Ġthe Ġtool Ġused Ġfor Ġthis Ġrun ĊĠĠĠĠ Ġ* Ġ@ param Ġartifacts Ġthe Ġartifacts Ġ( files ) Ġanalyzed ĠOR Ġat Ġleast Ġthose Ġwith Ġrelevant Ġresults ĊĠĠĠĠ Ġ* Ġ@ param Ġgraphs Ġa ĠSet Ġcontaining Ġthe Ġcreated ĠC PG Ġ( Subject Ġto Ġremoval ) ĊĠĠĠĠ Ġ* Ġ@ param Ġresults Ġthe Ġresults Ġof Ġthe Ġanalysis Ġperformed Ġin Ġthis Ġrun Ġ( null ĠONLY Ġif Ġtool Ġfailed Ġto ĊĠĠĠĠ Ġ* Ġstart Ġanalysis ) ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġresulting Ġrun ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġgenerate Run ( ĊĠĠĠĠĠĠĠ Ġtool : ĠTool , ĊĠĠĠĠĠĠĠ Ġartifacts : ĠSet < Artifact > ?, ĊĠĠĠĠĠĠĠ Ġgraphs : ĠSet < Graph > ?, ĊĠĠĠĠĠĠĠ Ġresults : ĠList < Result >? ĊĠĠĠ Ġ): ĠRun Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrun Ġ= ĠRun () ĊĠĠĠĠĠĠĠ Ġrun . column Kind Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRun . Column Kind ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. UTF _ 1 6 _ CODE _ UNITS Ġ// ĠTODO : Ġin Ġreality Ġit Ġif ĠUTF - 8 , Ġcheck Ġhow Ġthis Ġaffects Ġthe ĊĠĠĠĠĠĠĠ Ġ// Ġresult ĊĠĠĠĠĠĠĠ Ġrun . red action Tokens Ġ= Ġset Of ("[ RED ACT ED ]") ĊĠĠĠĠĠĠĠ Ġrun . tool Ġ= Ġtool ĊĠĠĠĠĠĠĠ Ġrun . artifacts Ġ= Ġartifacts ĊĠĠĠĠĠĠĠ Ġrun . graphs Ġ= Ġgraphs ĊĠĠĠĠĠĠĠ Ġrun . results Ġ= Ġresults ĊĠĠĠĠĠĠĠ Ġ// Ġnull Ġunnecessary Ġfields : ĊĠĠĠĠĠĠĠ Ġrun . thread Flow Locations Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġrun . tax onom ies Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġrun . addresses Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġrun . translations Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġrun . policies Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġrun . web Requests Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġrun . web Responses Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġrun . run Ag greg ates Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġrun . inv ocations Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġrun . version Control Provenance Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġrun . logical Locations Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġreturn Ġrun ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġgenerates Ġa Ġresult Ġobject ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġrule Id Ġthe Ġidentifier Ġof Ġthe Ġrule Ġthat Ġwas Ġevaluated ĊĠĠĠĠ Ġ* Ġ@ param Ġrule Index Ġthe Ġindex Ġof Ġthe Ġrule Ġin Ġthe ĠTool Component ĊĠĠĠĠ Ġ* Ġ@ param Ġkind Ġthe Ġkind Ġof Ġthe Ġresult Ġ( e . g . ĠPASS , ĠINFORMATION AL , ĠFAIL , Ġ...) ĊĠĠĠĠ Ġ* Ġ@ param Ġlevel Ġthe Ġseverity Ġlevel Ġof Ġthe Ġresult Ġ( NONE Ġif Ġkind Ġis Ġnot ĠFAIL ) ĊĠĠĠĠ Ġ* Ġ@ param Ġmessage Ġa Ġdescription Ġof Ġthe Ġresult , Ġshall Ġinclude Ġthe Ġfollowing : ĊĠĠĠĠ Ġ* Ġ``` ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- Ġanalysis Ġtarget Ġand Ġproblem Ġlocation ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- Ġcondition Ġthat Ġled Ġto Ġthe Ġproblem Ġbeing Ġreported ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- Ġpotential Ġris ks Ġassociated Ġwhen Ġnot Ġfixing Ġthe Ġproblem ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- Ġfull Ġrange Ġof Ġpossible Ġresponses Ġthe Ġend Ġuser Ġcould Ġtake ĊĠĠĠĠ Ġ* Ġ``` ĊĠĠĠĠ Ġ* Ġ@ param Ġlocations Ġspecifies Ġlocation ( s ) Ġwhere Ġthe Ġresult Ġoccurred . ĠOnly Ġmore Ġthan Ġone Ġif ĊĠĠĠĠ Ġ* Ġcondition Ġcan Ġonly Ġbe Ġcorrected Ġby Ġmaking Ġa Ġchange Ġat Ġevery Ġlocation . ĠExplicit ly ĠNOT Ġfor ĊĠĠĠĠ Ġ* Ġdistinct Ġoccurrences Ġof Ġthe Ġsame Ġresult . ĊĠĠĠĠ Ġ* Ġ@ param Ġanalysis Target Ġthe Ġanalysis Ġtarget , Ġonly Ġapplicable Ġanalysis Ġtarget Ġand Ġresult Ġfile ĊĠĠĠĠ Ġ* Ġdiffer ĊĠĠĠĠ Ġ* Ġ@ param Ġrelated Locations Ġlocations Ġrelated Ġto Ġunderstanding Ġthe Ġproblem ĊĠĠĠĠ Ġ* Ġ@ param Ġattachments Ġartifacts Ġrelevant Ġto Ġthe Ġdetection Ġof Ġthe Ġresult ĊĠĠĠĠ Ġ* Ġ@ param Ġfixes Ġpossible Ġfixes Ġfor Ġthe Ġproblem ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġresulting Ġresult Ġobject ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġgenerate Result ( ĊĠĠĠĠĠĠĠ Ġrule Id : ĠString ?, ĊĠĠĠĠĠĠĠ Ġrule Index : ĠInt , ĊĠĠĠĠĠĠĠ Ġkind : ĠResult . Kind , ĊĠĠĠĠĠĠĠ Ġlevel : ĠResult . Level , ĊĠĠĠĠĠĠĠ Ġmessage : ĠMessage , ĊĠĠĠĠĠĠĠ Ġlocations : ĠList < Location >, ĊĠĠĠĠĠĠĠ Ġanalysis Target : ĠArtifact Location ?, ĊĠĠĠĠĠĠĠ Ġrelated Locations : ĠSet < Location > ?, ĊĠĠĠĠĠĠĠ Ġattachments : ĠSet < Attachment > ?, ĊĠĠĠĠĠĠĠ Ġfixes : ĠSet < Fix > ?, ĊĠĠĠĠĠĠĠ Ġtra vers als : ĠSet < Graph Traversal >? ĊĠĠĠ Ġ): ĠResult Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠResult () ĊĠĠĠĠĠĠĠ Ġresult . rule Id Ġ= Ġrule Id ĊĠĠĠĠĠĠĠ Ġresult . rule Index Ġ= Ġrule Index ĊĠĠĠĠĠĠĠ Ġresult . kind Ġ= Ġkind ĊĠĠĠĠĠĠĠ Ġresult . level Ġ= Ġlevel ĊĠĠĠĠĠĠĠ Ġresult . message Ġ= Ġmessage ĊĠĠĠĠĠĠĠ Ġresult . locations Ġ= Ġlocations ĊĠĠĠĠĠĠĠ Ġresult . analysis Target Ġ= Ġanalysis Target ĊĠĠĠĠĠĠĠ Ġresult . related Locations Ġ= Ġrelated Locations ĊĠĠĠĠĠĠĠ Ġresult . attachments Ġ= Ġattachments ĊĠĠĠĠĠĠĠ Ġresult . fixes Ġ= Ġfixes ĊĠĠĠĠĠĠĠ Ġresult . graph Tra vers als Ġ= Ġtra vers als ĊĠĠĠĠĠĠĠ Ġ// Ġnull Ġunnecessary Ġfields : ĊĠĠĠĠĠĠĠ Ġresult . stacks Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġresult . code Flows Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġresult . graphs Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġresult . suppress ions Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġresult . work Item U ris Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġresult . tax a Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġgenerates Ġan Ġartifact Ġobject Ġfor Ġthe Ġrun Ġthat Ġcan Ġbe Ġreferenced Ġin Ġresults ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġlocation Ġthe Ġlocation Ġof Ġthe Ġartifact , Ġif Ġit 's Ġa Ġnested Ġartifact , Ġuri Ġshall Ġbe Ġa ĊĠĠĠĠ Ġ* Ġrelative Ġreference ĊĠĠĠĠ Ġ* Ġ@ param Ġparent Index Ġthe Ġindex Ġof Ġthe Ġparent Ġartifact , Ġabsent Ġif Ġthe Ġartifact Ġis Ġnot Ġnested ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġresulting Ġartifact ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Suppress (" unused ") ĊĠĠĠ Ġprivate Ġfun Ġgenerate Artifact ( location : ĠArtifact Location , Ġparent Index : ĠInt ?): ĠArtifact Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġartifact Ġ= ĠArtifact () ĊĠĠĠĠĠĠĠ Ġartifact . location Ġ= Ġlocation ĊĠĠĠĠĠĠĠ Ġartifact . parent Index Ġ= Ġparent Index ĊĠĠĠĠĠĠĠ Ġreturn Ġartifact ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġgenerates Ġan Ġattachment Ġobject Ġthat Ġis Ġrelevant Ġto Ġa Ġresult ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġdescription Ġa Ġmessage Ġdescribing Ġthe Ġrole Ġplayed Ġby Ġthe Ġattachment ĊĠĠĠĠ Ġ* Ġ@ param Ġlocation Ġthe Ġlocation Ġof Ġthe Ġattachment ĊĠĠĠĠ Ġ* Ġ@ param Ġregions Ġregions Ġof Ġinterest Ġwithin Ġthe Ġattachment Ġ( should Ġcontain Ġa Ġmessage Ġeach ) ĊĠĠĠĠ Ġ* Ġ@ param Ġrect angles Ġrect angles Ġspecifying Ġan Ġarea Ġof Ġinterest ĠONLY Ġif Ġthe Ġattachment Ġis Ġan ĊĠĠĠĠ Ġ* Ġimage ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġresulting Ġattachment ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Suppress (" unused ") ĊĠĠĠ Ġprivate Ġfun Ġgenerate Attachment ( ĊĠĠĠĠĠĠĠ Ġdescription : ĠMessage , ĊĠĠĠĠĠĠĠ Ġlocation : ĠArtifact Location , ĊĠĠĠĠĠĠĠ Ġregions : ĠSet < Region >, ĊĠĠĠĠĠĠĠ Ġrect angles : ĠSet < Rectangle > ĊĠĠĠ Ġ): ĠAttachment Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġattachment Ġ= ĠAttachment () ĊĠĠĠĠĠĠĠ Ġattachment . description Ġ= Ġdescription ĊĠĠĠĠĠĠĠ Ġattachment . artifact Location Ġ= Ġlocation ĊĠĠĠĠĠĠĠ Ġattachment . regions Ġ= Ġregions ĊĠĠĠĠĠĠĠ Ġattachment . rect angles Ġ= Ġrect angles ĊĠĠĠĠĠĠĠ Ġreturn Ġattachment ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġgenerates Ġa Ġrectangle Ġfor Ġhighlighting Ġpurposes Ġwithin Ġan Ġimage Ġfile ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġmessage Ġa Ġmessage Ġrelevant Ġto Ġthis Ġarea Ġof Ġthe Ġimage ĊĠĠĠĠ Ġ* Ġ@ param Ġtop Ġthe ĠY Ġcoordinate Ġof Ġthe Ġtop Ġedge Ġof Ġthe Ġrectangle , Ġmeasured Ġin Ġthe Ġimage 's Ġnatural ĊĠĠĠĠ Ġ* Ġunits . ĊĠĠĠĠ Ġ* Ġ@ param Ġleft Ġthe ĠX Ġcoordinate Ġof Ġthe Ġleft Ġedge Ġof Ġthe Ġrectangle , Ġmeasured Ġin Ġthe Ġimage 's ĊĠĠĠĠ Ġ* Ġnatural Ġunits . ĊĠĠĠĠ Ġ* Ġ@ param Ġbottom Ġthe ĠY Ġcoordinate Ġof Ġthe Ġbottom Ġedge Ġof Ġthe Ġrectangle , Ġmeasured Ġin Ġthe Ġimage 's ĊĠĠĠĠ Ġ* Ġnatural Ġunits . ĊĠĠĠĠ Ġ* Ġ@ param Ġright Ġthe ĠX Ġcoordinate Ġof Ġthe Ġright Ġedge Ġof Ġthe Ġrectangle , Ġmeasured Ġin Ġthe Ġimage 's ĊĠĠĠĠ Ġ* Ġnatural Ġunits . ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġresulting Ġrectangle Ġobject ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Suppress (" unused ") ĊĠĠĠ Ġprivate Ġfun Ġgenerate Rectangle ( ĊĠĠĠĠĠĠĠ Ġmessage : ĠMessage , ĊĠĠĠĠĠĠĠ Ġtop : ĠDouble , ĊĠĠĠĠĠĠĠ Ġleft : ĠDouble , ĊĠĠĠĠĠĠĠ Ġbottom : ĠDouble , ĊĠĠĠĠĠĠĠ Ġright : ĠDouble ĊĠĠĠ Ġ): ĠRectangle Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrectangle Ġ= ĠRectangle () ĊĠĠĠĠĠĠĠ Ġrectangle . message Ġ= Ġmessage ĊĠĠĠĠĠĠĠ Ġrectangle . top Ġ= Ġtop ĊĠĠĠĠĠĠĠ Ġrectangle . left Ġ= Ġleft ĊĠĠĠĠĠĠĠ Ġrectangle . bottom Ġ= Ġbottom ĊĠĠĠĠĠĠĠ Ġrectangle . right Ġ= Ġright ĊĠĠĠĠĠĠĠ Ġreturn Ġrectangle ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġgenerates Ġa Ġfix Ġobject Ġcomposed Ġof Ġone Ġor Ġmore Ġchanges ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġdescription Ġa Ġdescription Ġfor Ġthe Ġfix ĊĠĠĠĠ Ġ* Ġ@ param Ġartifact Changes Ġone Ġor Ġmore Ġchanges Ġin Ġfiles ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġresulting Ġfix ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Suppress (" unused ") ĊĠĠĠ Ġprivate Ġfun Ġgenerate Fix ( description : ĠMessage ?, Ġartifact Changes : ĠSet < Artifact Change >): ĠFix Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfix Ġ= ĠFix () ĊĠĠĠĠĠĠĠ Ġfix . description Ġ= Ġdescription ĊĠĠĠĠĠĠĠ Ġfix . artifact Changes Ġ= Ġartifact Changes ĊĠĠĠĠĠĠĠ Ġreturn Ġfix ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġgenerates Ġan Ġartifact Change Ġobject Ġcomposed Ġof Ġan Ġartifact Ġlocation Ġand Ġreplacement Ġdetails ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġartifact Location Ġthe Ġlocation Ġof Ġthe Ġfile ĊĠĠĠĠ Ġ* Ġ@ param Ġreplacement s Ġthe Ġchanges Ġdone Ġin Ġthe Ġfile ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġresulting Ġartifact Change Ġobject ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Suppress (" unused ") ĊĠĠĠ Ġprivate Ġfun Ġgenerate Artifact Change ( ĊĠĠĠĠĠĠĠ Ġartifact Location : ĠArtifact Location , ĊĠĠĠĠĠĠĠ Ġreplacement s : ĠList < Replacement > ĊĠĠĠ Ġ): ĠArtifact Change Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġartifact Change Ġ= ĠArtifact Change () ĊĠĠĠĠĠĠĠ Ġartifact Change . artifact Location Ġ= Ġartifact Location ĊĠĠĠĠĠĠĠ Ġartifact Change . replacement s Ġ= Ġreplacement s ĊĠĠĠĠĠĠĠ Ġreturn Ġartifact Change ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġgenerates Ġa Ġreplacement Ġin Ġa Ġfile ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġdeleted Region Ġthe Ġregion Ġto Ġdelete Ġ( if Ġthe Ġlength Ġis Ġ 0 , Ġit Ġspecifies Ġan Ġinsertion ĊĠĠĠĠ Ġ* Ġpoint ) ĊĠĠĠĠ Ġ* Ġ@ param Ġinserted Content Ġspecifies Ġthe Ġcontent Ġto Ġinsert Ġin Ġplace Ġof Ġthe Ġregion Ġspecified Ġby ĊĠĠĠĠ Ġ* Ġdelete Region ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġresulting Ġreplacement ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Suppress (" unused ") ĊĠĠĠ Ġprivate Ġfun Ġgenerate Replacement ( ĊĠĠĠĠĠĠĠ Ġdeleted Region : ĠRegion , ĊĠĠĠĠĠĠĠ Ġinserted Content : ĠArtifact Content ? ĊĠĠĠ Ġ): ĠRe placement Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġreplacement Ġ= ĠRe placement () ĊĠĠĠĠĠĠĠ Ġreplacement . deleted Region Ġ= Ġdeleted Region ĊĠĠĠĠĠĠĠ Ġreplacement . inserted Content Ġ= Ġinserted Content ĊĠĠĠĠĠĠĠ Ġreturn Ġreplacement ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġgenerates Ġan Ġartifact Content Ġobject ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġtext Ġthe Ġrelevant Ġtext Ġin ĠUTF - 8 Ġmind ing Ġany Ġcharacters Ġthat ĠJSON Ġrequires Ġto Ġbe ĊĠĠĠĠ Ġ* Ġescaped ĊĠĠĠĠ Ġ* Ġ@ param Ġrendered Ġa Ġrendered Ġview Ġof Ġthe Ġcontents ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġresulting Ġartifact Content Ġobject ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Suppress (" unused ") ĊĠĠĠ Ġprivate Ġfun Ġgenerate Artifact Content ( ĊĠĠĠĠĠĠĠ Ġtext : ĠString , ĊĠĠĠĠĠĠĠ Ġrendered : ĠMult iform at Message String ? ĊĠĠĠ Ġ): ĠArtifact Content Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġartifact Content Ġ= ĠArtifact Content () ĊĠĠĠĠĠĠĠ Ġartifact Content . text Ġ= Ġtext ĊĠĠĠĠĠĠĠ Ġartifact Content . rendered Ġ= Ġrendered ĊĠĠĠĠĠĠĠ Ġreturn Ġartifact Content ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġgenerates Ġa Ġmult iform at Message String Ġgrouping Ġall Ġavailable Ġtext ual Ġformats ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġtext Ġa Ġplain Ġrepresentation Ġof Ġthe Ġmessage ĊĠĠĠĠ Ġ* Ġ@ param Ġmarkdown Ġthe Ġformatted Ġmessage Ġexpressed Ġin ĠGitHub - Fl av ored ĠMarkdown Ġ( GF M ) ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġresulting Ġmult iform at Message String Ġobject ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġgenerate Mult iform at Message String ( ĊĠĠĠĠĠĠĠ Ġtext : ĠString , ĊĠĠĠĠĠĠĠ Ġmarkdown : ĠString ? ĊĠĠĠ Ġ): ĠMult iform at Message String Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmult iform at Message String Ġ= ĠMult iform at Message String () ĊĠĠĠĠĠĠĠ Ġmult iform at Message String . text Ġ= Ġtext ĊĠĠĠĠĠĠĠ Ġmult iform at Message String . markdown Ġ= Ġmarkdown ĊĠĠĠĠĠĠĠ Ġreturn Ġmult iform at Message String ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġgenerates Ġa Ġgraph Ġ( int ended Ġfor Ġc pg ) ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġdescription Ġdescription Ġof Ġthe Ġresulting Ġgraph ĊĠĠĠĠ Ġ* Ġ@ param Ġnodes Ġa Ġset Ġcontaining Ġall Ġthe Ġgraph 's Ġnodes ĊĠĠĠĠ Ġ* Ġ@ param Ġedges Ġa Ġset Ġcontaining Ġall Ġthe Ġgraph 's Ġedges ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġresulting Ġgraph ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Suppress (" unused ") ĊĠĠĠ Ġprivate Ġfun Ġgenerate Graph ( description : ĠMessage , Ġnodes : ĠSet < Node >, Ġedges : ĠSet < Edge >): ĠGraph Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġgraph Ġ= ĠGraph () ĊĠĠĠĠĠĠĠ Ġgraph . description Ġ= Ġdescription ĊĠĠĠĠĠĠĠ Ġgraph . nodes Ġ= Ġnodes ĊĠĠĠĠĠĠĠ Ġgraph . edges Ġ= Ġedges ĊĠĠĠĠĠĠĠ Ġreturn Ġgraph ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġgenerates Ġa Ġsingle Ġnode Ġto Ġbe Ġused Ġin Ġa Ġgraph ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġid Ġan Ġid Ġthat ĠUNIQUE LY Ġidentifies Ġthe Ġnode Ġwithin Ġthe Ġgraph ĊĠĠĠĠ Ġ* Ġ@ param Ġlabel Ġa Ġshort Ġdescription Ġof Ġthe Ġnode ĊĠĠĠĠ Ġ* Ġ@ param Ġlocation Ġspecifies Ġthe Ġcode Ġlocation Ġassociated Ġwith Ġthe Ġnode ĊĠĠĠĠ Ġ* Ġ@ param Ġchildren Ġa Ġ( possibly Ġempty ) Ġset Ġof Ġchild Ġnodes , Ġform ing Ġa Ġnested Ġgraph ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġresulting Ġnode ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Suppress (" unused ") ĊĠĠĠ Ġprivate Ġfun Ġgenerate Node ( ĊĠĠĠĠĠĠĠ Ġid : ĠString , ĊĠĠĠĠĠĠĠ Ġlabel : ĠMessage , ĊĠĠĠĠĠĠĠ Ġlocation : ĠLocation , ĊĠĠĠĠĠĠĠ Ġchildren : ĠSet < Node > ĊĠĠĠ Ġ): ĠNode Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnode Ġ= ĠNode () ĊĠĠĠĠĠĠĠ Ġnode . id Ġ= Ġid ĊĠĠĠĠĠĠĠ Ġnode . label Ġ= Ġlabel ĊĠĠĠĠĠĠĠ Ġnode . location Ġ= Ġlocation ĊĠĠĠĠĠĠĠ Ġnode . children Ġ= Ġchildren ĊĠĠĠĠĠĠĠ Ġreturn Ġnode ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġgenerates Ġa ĠMessage Ġobject Ġwith Ġthe Ġpossibility Ġof Ġmarkdown , Ġplaceholders Ġand Ġembedded Ġlinks ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġtext Ġplain Ġtext Ġmessage Ġ( mandatory Ġif Ġmarkdown Ġis Ġpresent ) Ġwithout Ġany Ġformatting . ĊĠĠĠĠ Ġ* ĠP refer ably Ġonly Ġone Ġsentence Ġlong Ġor Ġsummar ized Ġin Ġthe Ġfirst Ġsentence . ĊĠĠĠĠ Ġ* Ġ@ param Ġmarkdown Ġformatted Ġtext Ġmessage Ġexpressed Ġin ĠGitHub - Fl av ored ĠMarkdown Ġ( GF M ) ĠWITHOUT ĊĠĠĠĠ Ġ* Ġany ĠHTML . ĊĠĠĠĠ Ġ* Ġ@ param Ġid Ġidentifier Ġfor Ġthe Ġmessage , Ġused Ġfor Ġmessage Ġstring Ġlookup ĊĠĠĠĠ Ġ* Ġ@ param Ġarguments ĠList Ġof Ġarguments Ġfor Ġplaceholders Ġused Ġin Ġeither Ġtext , Ġmarkdown Ġor Ġid ĊĠĠĠĠ Ġ* Ġparameters ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġresulting Ġmessage Ġobject ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġgenerate Message ( ĊĠĠĠĠĠĠĠ Ġtext : ĠString , ĊĠĠĠĠĠĠĠ Ġmarkdown : ĠString ?, ĊĠĠĠĠĠĠĠ Ġid : ĠString , ĊĠĠĠĠĠĠĠ Ġarguments : ĠList < String > ĊĠĠĠ Ġ): ĠMessage Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= ĠMessage () ĊĠĠĠĠĠĠĠ Ġmessage . text Ġ= Ġtext ĊĠĠĠĠĠĠĠ Ġmessage . markdown Ġ= Ġmarkdown ĊĠĠĠĠĠĠĠ Ġmessage . id Ġ= Ġid ĊĠĠĠĠĠĠĠ Ġmessage . arguments Ġ= Ġarguments ĊĠĠĠĠĠĠĠ Ġreturn Ġmessage ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġgenerates Ġa ĠLocation Ġobject Ġwith Ġpossible Ġannotations Ġand Ġrelationships Ġ( currently Ġonly ĊĠĠĠĠ Ġ* Ġsupports Ġphysical Ġlocations ) ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġid Ġthe Ġ( non - negative ) Ġidentifier Ġunique Ġwithin Ġthe Ġresult Ġobject Ġthis Ġbelongs Ġto Ġ(- 1 ĊĠĠĠĠ Ġ* Ġif Ġnot Ġset ) ĊĠĠĠĠ Ġ* Ġ@ param Ġphysical Location Ġthe Ġphysical Ġlocation Ġidentifying Ġthe Ġfile Ġof Ġthe Ġlocation ĊĠĠĠĠ Ġ* Ġ@ param Ġmessage Ġa Ġmessage Ġrelevant Ġto Ġthe Ġlocation ĊĠĠĠĠ Ġ* Ġ@ param Ġannotations Ġregions Ġwithin Ġthe Ġfile Ġrelevant Ġto Ġthe Ġlocation Ġ( each Ġone Ġshould Ġcontain ĊĠĠĠĠ Ġ* Ġa Ġmessage ) ĊĠĠĠĠ Ġ* Ġ@ param Ġrelationships Ġrelationships Ġto Ġother Ġlocation Ġobjects ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġresulting Ġlocation ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġgenerate Location ( ĊĠĠĠĠĠĠĠ Ġid : ĠInt , ĊĠĠĠĠĠĠĠ Ġphysical Location : ĠPhysical Location , ĊĠĠĠĠĠĠĠ Ġmessage : ĠMessage ?, ĊĠĠĠĠĠĠĠ Ġannotations : ĠSet < Region > ?, ĊĠĠĠĠĠĠĠ Ġrelationships : ĠSet < Location Relationship >? ĊĠĠĠ Ġ): ĠLocation Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlocation Ġ= ĠLocation () ĊĠĠĠĠĠĠĠ Ġlocation . id Ġ= Ġid ĊĠĠĠĠĠĠĠ Ġlocation . physical Location Ġ= Ġphysical Location ĊĠĠĠĠĠĠĠ Ġlocation . message Ġ= Ġmessage ĊĠĠĠĠĠĠĠ Ġlocation . annotations Ġ= Ġannotations ĊĠĠĠĠĠĠĠ Ġlocation . relationships Ġ= Ġrelationships ĊĠĠĠĠĠĠĠ Ġ// Ġnull Ġunnecessary Ġfields : ĊĠĠĠĠĠĠĠ Ġlocation . logical Locations Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġreturn Ġlocation ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġgenerates Ġa Ġphysical Ġlocation Ġwith Ġvariable Ġprecision ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġartifact Location Ġthe Ġlocation Ġof Ġthe Ġfile ĊĠĠĠĠ Ġ* Ġ@ param Ġregion Ġthe Ġregion Ġwithin Ġthe Ġfile Ġ( if Ġapplicable ) ĊĠĠĠĠ Ġ* Ġ@ param Ġcontext Region Ġa Ġsuper set Ġof Ġthe Ġregion Ġgiving Ġadditional Ġcontext Ġ( only Ġwhen Ġa Ġregion ĊĠĠĠĠ Ġ* Ġis Ġspecified ) ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġresulting Ġphysical Ġlocation ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġgenerate Physical Location ( ĊĠĠĠĠĠĠĠ Ġartifact Location : ĠArtifact Location , ĊĠĠĠĠĠĠĠ Ġregion : ĠRegion ?, ĊĠĠĠĠĠĠĠ Ġcontext Region : ĠRegion ? ĊĠĠĠ Ġ): ĠPhysical Location Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġphysical Location Ġ= ĠPhysical Location () ĊĠĠĠĠĠĠĠ Ġphysical Location . artifact Location Ġ= Ġartifact Location ĊĠĠĠĠĠĠĠ Ġphysical Location . region Ġ= Ġregion ĊĠĠĠĠĠĠĠ Ġphysical Location . context Region Ġ= Ġcontext Region ĊĠĠĠĠĠĠĠ Ġreturn Ġphysical Location ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġgenerates Ġan Ġartifact Ġlocation Ġto Ġspecify Ġa Ġfile Ġlocation . ĠEither Ġuri Ġor Ġindex ĠSHALL Ġbe ĊĠĠĠĠ Ġ* Ġpresent Ġ( or Ġboth ) ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġuri Ġthe ĠURI Ġspecifying Ġthe Ġlocation , Ġrelative Ġto Ġthe Ġroot ĊĠĠĠĠ Ġ* Ġ@ param Ġuri Base Id Ġthe ĠURI Ġof Ġthe Ġroot Ġdirectory Ġ( abs ent Ġif Ġuri Ġis Ġan Ġabsolute Ġpath ) ĊĠĠĠĠ Ġ* Ġ@ param Ġindex Ġthe Ġindex Ġwithin Ġthe Ġartifacts Ġarray Ġof Ġthe Ġrun Ġwhich Ġdescribes Ġthis Ġartifact ĊĠĠĠĠ Ġ* Ġ(- 1 Ġif Ġnot Ġset , Ġabsent Ġif Ġarray Ġdoes Ġnot Ġexist ) ĊĠĠĠĠ Ġ* Ġ@ param Ġdescription Ġa Ġdescription Ġfor Ġthis Ġartifact ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġresulting Ġartifact Ġlocation ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġgenerate Artifact Location ( ĊĠĠĠĠĠĠĠ Ġuri : ĠString ?, ĊĠĠĠĠĠĠĠ Ġuri Base Id : ĠString ?, ĊĠĠĠĠĠĠĠ Ġindex : ĠInt ?, ĊĠĠĠĠĠĠĠ Ġdescription : ĠMessage ? ĊĠĠĠ Ġ): ĠArtifact Location Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġartifact Location Ġ= ĠArtifact Location () ĊĠĠĠĠĠĠĠ Ġartifact Location . uri Ġ= Ġuri ĊĠĠĠĠĠĠĠ Ġartifact Location . uri Base Id Ġ= Ġuri Base Id ĊĠĠĠĠĠĠĠ Ġartifact Location . index Ġ= Ġindex ĊĠĠĠĠĠĠĠ Ġartifact Location . description Ġ= Ġdescription ĊĠĠĠĠĠĠĠ Ġreturn Ġartifact Location ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġgenerates Ġa Ġtext Ġregion Ġdefined Ġby Ġline Ġand Ġcolumn Ġnumber Ġ( both Ġstarting Ġat Ġ 1 ) ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġstart Line Ġthe Ġline Ġnumber Ġwhere Ġthe Ġregion Ġstarts ĊĠĠĠĠ Ġ* Ġ@ param Ġend Line Ġthe Ġline Ġnumber Ġwhere Ġthe Ġregion Ġends ĊĠĠĠĠ Ġ* Ġ@ param Ġstart Column Ġthe Ġcolumn Ġnumber Ġwhere Ġthe Ġregion Ġstarts Ġwithin Ġthe Ġstart Line ĊĠĠĠĠ Ġ* Ġ@ param Ġend Column Ġthe Ġcolumn Ġnumber Ġwhere Ġthe Ġregion Ġends Ġ( ex cluding Ġthe Ġcharacter Ġspecified ĊĠĠĠĠ Ġ* Ġby Ġthis ) ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġresulting Ġregion ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġgenerate Region ( ĊĠĠĠĠĠĠĠ Ġstart Line : ĠInt , ĊĠĠĠĠĠĠĠ Ġend Line : ĠInt , ĊĠĠĠĠĠĠĠ Ġstart Column : ĠInt , ĊĠĠĠĠĠĠĠ Ġend Column : ĠInt ĊĠĠĠ Ġ): ĠRegion Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġregion Ġ= ĠRegion () ĊĠĠĠĠĠĠĠ Ġregion . start Line Ġ= Ġstart Line ĊĠĠĠĠĠĠĠ Ġregion . end Line Ġ= Ġend Line ĊĠĠĠĠĠĠĠ Ġregion . start Column Ġ= Ġstart Column ĊĠĠĠĠĠĠĠ Ġregion . end Column Ġ= Ġend Column ĊĠĠĠĠĠĠĠ Ġ// Ġset Ġthe Ġfollowing Ġnull Ġso Ġit Ġdoesn 't Ġdefault Ġto Ġ- 1 ĊĠĠĠĠĠĠĠ Ġregion . char Offset Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġregion . byte Offset Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġreturn Ġregion ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġgenerates Ġa Ġrelationship Ġbetween Ġtwo Ġlocations ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġtarget Ġthe Ġid Ġwhich Ġidentifies Ġthe Ġtarget Ġamong Ġall Ġlocation Ġobjects Ġin Ġthe Ġresult ĊĠĠĠĠ Ġ* Ġ( equal Ġto Ġtarget Ġid ) ĊĠĠĠĠ Ġ* Ġ@ param Ġkinds Ġthe Ġkind Ġof Ġrelationship Ġ( one Ġor Ġmore Ġfrom : Ġ" includes ", Ġ" is Included By ", ĊĠĠĠĠ Ġ* Ġ" relevant ") ĊĠĠĠĠ Ġ* Ġ@ param Ġdescription Ġan Ġadditional Ġdescription Ġfor Ġthe Ġrelationship ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġresulting Ġrelationship ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Suppress (" unused ") ĊĠĠĠ Ġprivate Ġfun Ġgenerate Location Relationship ( ĊĠĠĠĠĠĠĠ Ġtarget : ĠInt , ĊĠĠĠĠĠĠĠ Ġkinds : ĠSet < String >, ĊĠĠĠĠĠĠĠ Ġdescription : ĠMessage ? ĊĠĠĠ Ġ): ĠLocation Relationship Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlocation Relationship Ġ= ĠLocation Relationship () ĊĠĠĠĠĠĠĠ Ġlocation Relationship . target Ġ= Ġtarget ĊĠĠĠĠĠĠĠ Ġlocation Relationship . kind s Ġ= Ġkinds ĊĠĠĠĠĠĠĠ Ġlocation Relationship . description Ġ= Ġdescription ĊĠĠĠĠĠĠĠ Ġreturn Ġlocation Relationship ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġgenerates Ġa ĠTool Ġobject Ġfrom Ġa Ġdriver Ġand Ġextensions ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġdriver Ġthe Ġtool 's Ġprimary Ġexecutable ĊĠĠĠĠ Ġ* Ġ@ param Ġextensions Ġpossibly Ġused Ġextensions Ġ( empty Ġset Ġif Ġnone Ġwere Ġused ) ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġresulting Ġtool ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġgenerate Tool ( driver : ĠTool Component , Ġextensions : ĠSet < Tool Component >? ): ĠTool Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtool Ġ= ĠTool () ĊĠĠĠĠĠĠĠ Ġtool . driver Ġ= Ġdriver ĊĠĠĠĠĠĠĠ Ġtool . extensions Ġ= Ġextensions ĊĠĠĠĠĠĠĠ Ġreturn Ġtool ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġgenerates Ġa ĠTool Component Ġspecified Ġby Ġname , Ġversion , Ġorganization Ġand Ġthe Ġdownload URI ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġname Ġthe Ġname Ġof Ġthe Ġcomponent ĊĠĠĠĠ Ġ* Ġ@ param Ġversion Ġthe Ġversion Ġof Ġthe Ġcomponent ĊĠĠĠĠ Ġ* Ġ@ param Ġdownload URI Ġthe ĠURI Ġof Ġthe Ġcomponent 's Ġdownload Ġlocation ĊĠĠĠĠ Ġ* Ġ@ param Ġorganization Ġthe Ġorganization Ġbehind Ġthe Ġcomponent ĊĠĠĠĠ Ġ* Ġ@ param Ġrules Ġset Ġof Ġrules Ġsupported Ġby Ġthe Ġcomponent ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġresulting Ġtool Ġcomponent ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġgenerate Tool Component ( ĊĠĠĠĠĠĠĠ Ġname : ĠString , ĊĠĠĠĠĠĠĠ Ġversion : ĠString , ĊĠĠĠĠĠĠĠ Ġdownload URI : ĠURI ?, ĊĠĠĠĠĠĠĠ Ġinformation URI : ĠURI ?, ĊĠĠĠĠĠĠĠ Ġorganization : ĠString , ĊĠĠĠĠĠĠĠ Ġrules : ĠSet < Reporting Descriptor > ĊĠĠĠ Ġ): ĠTool Component Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtool C Ġ= ĠTool Component () ĊĠĠĠĠĠĠĠ Ġtool C . name Ġ= Ġname ĊĠĠĠĠĠĠĠ Ġtool C . version Ġ= Ġversion ĊĠĠĠĠĠĠĠ Ġtool C . download Uri Ġ= Ġdownload URI ĊĠĠĠĠĠĠĠ Ġtool C . information Uri Ġ= Ġinformation URI ĊĠĠĠĠĠĠĠ Ġtool C . organization Ġ= Ġorganization ĊĠĠĠĠĠĠĠ Ġtool C . rules Ġ= Ġrules ĊĠĠĠĠĠĠĠ Ġ// Ġnull Ġunnecessary Ġfields : ĊĠĠĠĠĠĠĠ Ġtool C . notifications Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġtool C . tax a Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġtool C . locations Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġreturn Ġtool C ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġgenerates Ġa Ġreporting Descriptor Ġcontaining Ġinformation Ġabout Ġa Ġreporting Ġitem ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġid Ġthe Ġid , Ġin Ġcase Ġof Ġa Ġrule Ġit Ġmust Ġbe Ġstable Ġ( does n 't Ġchange ) Ġand Ġshould Ġbe Ġopaque ĊĠĠĠĠ Ġ* Ġ( not Ġuser - readable ) ĊĠĠĠĠ Ġ* Ġ@ param Ġdeprecated Ids Ġids Ġby Ġwhich Ġthis Ġreporting Ġitem Ġwas Ġknown Ġin Ġprevious Ġversions ĊĠĠĠĠ Ġ* Ġ@ param Ġshort Description Ġa Ġconcise Ġdescription Ġof Ġthe Ġreporting Ġitem Ġ( should Ġbe Ġa Ġsingle ĊĠĠĠĠ Ġ* Ġsentence ) ĊĠĠĠĠ Ġ* Ġ@ param Ġfull Description Ġa Ġcomprehensive Ġdescription Ġof Ġthe Ġreporting Ġitem ĊĠĠĠĠ Ġ* Ġ@ return ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġgenerate Reporting Descriptor ( ĊĠĠĠĠĠĠĠ Ġid : ĠString , ĊĠĠĠĠĠĠĠ Ġdeprecated Ids : ĠSet < String >, ĊĠĠĠĠĠĠĠ Ġshort Description : ĠMult iform at Message String , ĊĠĠĠĠĠĠĠ Ġfull Description : ĠMult iform at Message String ĊĠĠĠ Ġ): ĠReporting Descriptor Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġreporting Descriptor Ġ= ĠReporting Descriptor () ĊĠĠĠĠĠĠĠ Ġreporting Descriptor . id Ġ= Ġid ĊĠĠĠĠĠĠĠ Ġreporting Descriptor . deprecated Ids Ġ= Ġdeprecated Ids ĊĠĠĠĠĠĠĠ Ġreporting Descriptor . short Description Ġ= Ġshort Description ĊĠĠĠĠĠĠĠ Ġreporting Descriptor . full Description Ġ= Ġfull Description ĊĠĠĠĠĠĠĠ Ġ// Ġnull Ġunnecessary Ġfields : ĊĠĠĠĠĠĠĠ Ġreporting Descriptor . deprecated Guid s Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġreporting Descriptor . deprecated Names Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġreturn Ġreporting Descriptor ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠtoString Ġthat Ġuses ĠG SON Ġto Ġcreate Ġpretty Ġoutput . ĠNote Ġthat Ġit Ġdoesn 't Ġdisplay Ġnull Ġvalues , ĊĠĠĠĠ Ġ* Ġbut Ġit Ġwill Ġshow Ġany Ġempty Ġvalue Ġ( String , ĠSet , Ġetc .) ĊĠĠĠĠ Ġ* Ġ@ return Ġformatted , Ġsar if - comp liant ĠString ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmapper Ġ= ĠObjectMapper () ĊĠĠĠĠĠĠĠ Ġmapper . enable ( Serialization Feature . IND ENT _ OUTPUT ) ĊĠĠĠĠĠĠĠ Ġvar Ġoutput Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoutput Ġ= Ġmapper . writeValue AsString ( sar if ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠJson Processing Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog . error (" Could Ġnot Ġserialize Ġsar if : Ġ{}", Ġe . message ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġoutput ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġover writes Ġthe Ġspec ifi e Ġfile Ġwith Ġthe ĠS AR IF Ġoutput , Ġcreates Ġa Ġnew Ġfile Ġif Ġit Ġdoesn 't Ġalready ĊĠĠĠĠ Ġ* Ġexist ĊĠĠĠĠ Ġ* Ġ@ param Ġpath Ġthe Ġfile Ġthat Ġshould Ġcontain Ġthe Ġoutput ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġgenerate Output ( path : ĠFile ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlog . info (" Writing Ġsar if Ġoutput Ġto Ġ{}", Ġpath . path ) ĊĠĠĠĠĠĠĠ Ġpath . write Text ( toString ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġsar if .` $ schema ` Ġ= Ġschema URI ĊĠĠĠĠĠĠĠ Ġsar if . version Ġ= Ġsar if Version ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġlog Ġ= ĠLoggerFactory . getLogger ( Sar if Instanti ator :: class . java ) ĊĠĠĠ Ġ} Ċ } Ċ