/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 2 1 ĠThe ĠAndroid ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* Ġ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 Ġcom . android . tools . lint Ċ Ċ import Ġcom . android . Sdk Constants . ATTR _ COLUMN Ċ import Ġcom . android . Sdk Constants . ATTR _ FILE Ċ import Ġcom . android . Sdk Constants . ATTR _ FORMAT Ċ import Ġcom . android . Sdk Constants . ATTR _ ID Ċ import Ġcom . android . Sdk Constants . ATTR _ LINE Ċ import Ġcom . android . Sdk Constants . ATTR _ MESSAGE Ċ import Ġcom . android . Sdk Constants . ATTR _ NAME Ċ import Ġcom . android . Sdk Constants . ATTR _ VALUE Ċ import Ġcom . android . Sdk Constants . TAG _ ISSUE Ċ import Ġcom . android . Sdk Constants . TAG _ ISS UES Ċ import Ġcom . android . Sdk Constants . TAG _ LOCATION Ċ import Ġcom . android . Sdk Constants . VALUE _ FALSE Ċ import Ġcom . android . Sdk Constants . VALUE _ TRUE Ċ import Ġcom . android . tools . lint . detector . api . All Of Constraint Ċ import Ġcom . android . tools . lint . detector . api . Any Of Constraint Ċ import Ġcom . android . tools . lint . detector . api . Constraint Ċ import Ġcom . android . tools . lint . detector . api . Incident Ċ import Ġcom . android . tools . lint . detector . api . Is Android Project Ċ import Ġcom . android . tools . lint . detector . api . Is Library Project Ċ import Ġcom . android . tools . lint . detector . api . Issue Ċ import Ġcom . android . tools . lint . detector . api . Lint Fix Ċ import Ġcom . android . tools . lint . detector . api . Lint Map Ċ import Ġcom . android . tools . lint . detector . api . Location Ċ import Ġcom . android . tools . lint . detector . api . Min Sdk At Least Ċ import Ġcom . android . tools . lint . detector . api . Min Sdk LessThan Ċ import Ġcom . android . tools . lint . detector . api . Not Android Project Ċ import Ġcom . android . tools . lint . detector . api . Not Library Project Ċ import Ġcom . android . tools . lint . detector . api . Project Ċ import Ġcom . android . tools . lint . detector . api . Severity Ċ import Ġcom . android . tools . lint . detector . api . Target Sdk At Least Ċ import Ġcom . android . tools . lint . detector . api . Target Sdk LessThan Ċ import Ġcom . android . tools . lint . detector . api . Text Format Ċ import Ġcom . android . tools . lint . detector . api . assertions Enabled Ċ import Ġcom . android . utils . Xml Utils Ċ import Ġcom . google . common . annotations . Beta Ċ import Ġcom . google . common . base . Join er Ċ import Ġcom . google . common . io . Files Ċ import Ġcom . intellij . psi . Psi Method Ċ import Ġjava . io . Buffered Writer Ċ import Ġjava . io . File Ċ import Ġjava . io . IOException Ċ import Ġjava . io . Writer Ċ import Ġjava . util . Base 6 4 Ċ import Ġjava . util . Locale Ċ import Ġkotlin . math . max Ċ import Ġkotlin . math . min Ċ import Ġkotlin . text . Charsets . UTF _ 8 Ċ Ċ /** Ċ Ġ* ĠA Ġreporter Ġwhich Ġemits Ġlint Ġresults Ġinto Ġan ĠXML Ġreport . Ċ Ġ* Ċ Ġ* Ġ** NOTE : ĠThis Ġis Ġnot Ġa Ġpublic Ġor Ġfinal ĠAPI ; Ġif Ġyou Ġrely Ġon Ġthis Ġbe Ċ Ġ* Ġprepared Ġto Ġadjust Ġyour Ġcode Ġfor Ġthe Ġnext Ġtools Ġrelease .** Ċ Ġ*/ Ċ @ Beta Ċ open Ġclass ĠXml Writer Ġconstructor ( ĊĠĠĠ Ġ/** ĠClient Ġhandling ĠIO , Ġpath Ġnormalization Ġand Ġerror Ġreporting . Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġclient : ĠL int Cli Client , ĊĠĠĠ Ġ/** ĠThe Ġtype Ġof Ġreport Ġto Ġcreate . Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġtype : ĠXml FileType , ĊĠĠĠ Ġ/** ĠWriter Ġto Ġsend Ġoutput Ġto . Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġwriter : ĠWriter Ċ ) Ġ{ ĊĠĠĠ Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠClient Ġhandling ĠIO , Ġpath Ġnormalization Ġand Ġerror Ġreporting . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġclient : ĠL int Cli Client , ĊĠĠĠĠĠĠĠ Ġ/** ĠFile Ġto Ġwrite Ġreport Ġto . Ġ*/ ĊĠĠĠĠĠĠĠ Ġoutput : ĠFile , ĊĠĠĠĠĠĠĠ Ġ/** ĠThe Ġtype Ġof Ġreport Ġto Ġcreate . Ġ*/ ĊĠĠĠĠĠĠĠ Ġtype : ĠXml FileType ĊĠĠĠ Ġ) Ġ: Ġthis ( client , Ġtype , ĠBuffered Writer ( Files . new Writer ( output , ĠUTF _ 8 ))) ĊĊĠĠĠ Ġ/** ĠFlush Ġany Ġbuffered Ġchanges Ġto Ġthe Ġfile . Ġ*/ ĊĠĠĠ Ġfun Ġclose () Ġ{ ĊĠĠĠĠĠĠĠ Ġwriter . close () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠWrites Ġthe Ġpro log Ġof Ġan ĠXML Ġfile . Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġwrite Pro log () Ġ{ ĊĠĠĠĠĠĠĠ Ġwriter . write (" <? xml Ġversion =\" 1 . 0 \" Ġencoding =\" UTF - 8 \" ?> \ n ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠStandard Ġattributes Ġincluded Ġin Ġthe Ġroot Ġtag . Ġ*/ ĊĠĠĠ Ġprivate Ġfun ĠgetDefault Root Attributes (): ĠList < Pair < String , ĠString ? >> Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠFormat Ġ 4 : Ġadded Ġurls = Ġattribute Ġwith Ġall Ġmore Ġinfo Ġlinks , Ġcomma Ġseparated ĊĠĠĠĠĠĠĠ Ġ// ĠUn fortun ate Ġtag Ġname Ġhere ; Ġthis Ġis Ġreally Ġan Ġincident Ġbut Ġh istor ically ĊĠĠĠĠĠĠĠ Ġ// Ġin Ġthe Ġfile Ġformat Ġit Ġwas Ġcalled Ġan Ġissue ĊĠĠĠĠĠĠĠ Ġ// ĠFormat Ġ 6 : Ġsupport Ġfor Ġstoring Ġincident s , Ġlint Ġmaps , Ġand Ġconfigured Ġissues ĊĠĠĠĠĠĠĠ Ġreturn ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠATTR _ FORMAT Ġto Ġ" 6 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" by " Ġto Ġclient . getClient Display Revision ()?. let Ġ{ Ġ" lint Ġ$ it " Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" type " Ġto Ġif Ġ( type Ġ!= ĠXml FileType . REPORT ) Ġtype . name . toLowerCase ( Locale . ROOT ) Ġelse Ġnull , ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠWrites Ġthe Ġgiven Ġtag Ġwith Ġthe Ġgiven Ġset Ġof Ġattributes . Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġwrite Open Tag ( tag : ĠString , Ġattributes : ĠMap < String , ĠString ? >, Ġindent : ĠInt Ġ= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġindent ( indent ) ĊĠĠĠĠĠĠĠ Ġwriter . write ("< $ tag ") ĊĠĠĠĠĠĠĠ Ġif Ġ( attributes . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ(( key , Ġvalue ) Ġin Ġattributes ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ?: Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write (" Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write ( key ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write (" =\" ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write ( Xml Utils . to Xml AttributeValue ( value )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write ("\" ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġwriter . write ( ">\ n ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġwrite Close Tag ( tag : ĠString , Ġindent : ĠInt Ġ= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( indent Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write ("\ n ") ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindent ( indent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġwriter . write ("</ $ tag >\ n ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġwrite Condition ( constraint : ĠConstraint , Ġindent : ĠInt Ġ= Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġindent ( indent ) ĊĠĠĠĠĠĠĠ Ġwriter . write ("< $ TAG _ CONDITION ") ĊĊĠĠĠĠĠĠĠ Ġval Ġind Ġ= Ġindent Ġ+ Ġ 1 ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( constraint ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠMin Sdk At Least Ġ-> Ġwrite Attribute ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter , Ġ- 1 , ĠATTR _ MIN _ GE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconstraint . min Sdk Version . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠTarget Sdk At Least Ġ-> Ġwrite Attribute ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter , Ġ- 1 , ĠATTR _ TARGET _ GE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconstraint . target Sdk Version . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠMin Sdk LessThan Ġ-> Ġwrite Attribute ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter , Ġ- 1 , ĠATTR _ MIN _ LT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconstraint . min Sdk Version . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠTarget Sdk LessThan Ġ-> Ġwrite Attribute ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter , Ġ- 1 , ĠATTR _ TARGET _ LT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconstraint . target Sdk Version . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠIs Library Project Ġ-> Ġwrite Attribute ( writer , Ġ- 1 , ĠATTR _ LIBRARY , ĠVALUE _ TRUE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠNot Library Project Ġ-> Ġwrite Attribute ( writer , Ġ- 1 , ĠATTR _ LIBRARY , ĠVALUE _ FALSE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠIs Android Project Ġ-> Ġwrite Attribute ( writer , Ġ- 1 , ĠATTR _ ANDROID , ĠVALUE _ TRUE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠNot Android Project Ġ-> Ġwrite Attribute ( writer , Ġ- 1 , ĠATTR _ ANDROID , ĠVALUE _ FALSE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( constraint Ġis ĠAll Of Constraint ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Attribute ( writer , Ġind , ĠATTR _ ALL _ OF , ĠVALUE _ TRUE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write ("> ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Condition ( constraint . left , Ġind ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Condition ( constraint . right , Ġind ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write ("\ n ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindent ( indent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write ("</ $ TAG _ CONDITION >") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( constraint Ġis ĠAny Of Constraint ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Attribute ( writer , Ġind , ĠATTR _ ANY _ OF , ĠVALUE _ TRUE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write ("> ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Condition ( constraint . left , Ġind ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Condition ( constraint . right , Ġind ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write ("\ n ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindent ( indent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write ("</ $ TAG _ CONDITION >") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror (" Unexpected Ġcondition Ġ$ constraint : Ġneeds Ġserialization ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġwriter . write (" /> \ n ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġwrite Incident ( incident : ĠInc ident , Ġindent : ĠInt Ġ= Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwriter . write ("\ n ") ĊĠĠĠĠĠĠĠ Ġindent ( indent ) ĊĠĠĠĠĠĠĠ Ġval Ġtag Ġ= Ġif Ġ( type . is Persistence File ()) ĠTAG _ INC IDENT Ġelse ĠTAG _ ISSUE ĊĠĠĠĠĠĠĠ Ġwriter . write ("< $ tag ") ĊĠĠĠĠĠĠĠ Ġval Ġissue Ġ= Ġincident . issue ĊĠĠĠĠĠĠĠ Ġwrite Attribute ( writer , Ġindent Ġ+ Ġ 1 , ĠATTR _ ID , Ġissue . id ) ĊĠĠĠĠĠĠĠ Ġif Ġ( type Ġ!= ĠXml FileType . BASE LINE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Attribute ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter , Ġindent Ġ+ Ġ 1 , ĠATTR _ SEVER ITY , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( type . is Persistence File ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġincident . severity . to Name () Ġelse Ġincident . severity . description ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġwrite Attribute ( writer , Ġindent Ġ+ Ġ 1 , ĠATTR _ MESSAGE , Ġincident . message ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( type . include Issue Metadata ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Attribute ( writer , Ġindent Ġ+ Ġ 1 , ĠATTR _ CATEGORY , Ġissue . category . fullName ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Attribute ( writer , Ġindent Ġ+ Ġ 1 , ĠATTR _ PRIORITY , Ġissue . priority . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWe Ġdon 't Ġneed Ġissue Ġmetadata Ġin Ġbase lines ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Attribute ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter , Ġindent Ġ+ Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠATTR _ SUM MARY , Ġissue . getB rief Description ( Text Format . RAW ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Attribute ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter , Ġindent Ġ+ Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠATTR _ EX PLAN ATION , Ġissue . get Explanation ( Text Format . RAW ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmore Info Ġ= Ġissue . more Info ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( more Info . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCompatibility Ġwith Ġold Ġformat : Ġlist Ġfirst ĠURL ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Attribute ( writer , Ġindent Ġ+ Ġ 1 , ĠATTR _ URL , Ġmore Info [ 0 ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Attribute ( writer , Ġindent Ġ+ Ġ 1 , ĠATTR _ URL S , ĠJoin er . on (',' ). join ( issue . more Info )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( client . flags . is Show Source Lines Ġ&& Ġtype . include Source Lines ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġline Ġ= Ġincident . getError Lines ( text Provider Ġ= Ġ{ Ġclient . getSource Text ( it ) Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( line Ġ!= Ġnull Ġ&& Ġline . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġindex 1 Ġ= Ġline . indexOf ('\ n ') ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index 1 Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġindex 2 Ġ= Ġline . indexOf ('\ n ', Ġindex 1 Ġ+ Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index 2 Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġline 1 Ġ= Ġline . substring ( 0 , Ġindex 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġline 2 Ġ= Ġline . substring ( index 1 Ġ+ Ġ 1 , Ġindex 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Attribute ( writer , Ġindent Ġ+ Ġ 1 , ĠATTR _ ERROR _ LINE 1 , Ġline 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Attribute ( writer , Ġindent Ġ+ Ġ 1 , ĠATTR _ ERROR _ LINE 2 , Ġline 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġapplicable Variants Ġ= Ġincident . applic able Variants ĊĠĠĠĠĠĠĠ Ġif Ġ( applic able Variants Ġ!= Ġnull Ġ&& Ġapplicable Variants . variant Specific ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Attribute ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindent Ġ+ Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠATTR _ INCLUDED _ VARIANT S , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJoin er . on (',' ). join ( applic able Variants . included Variant Names ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Attribute ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindent Ġ+ Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠATTR _ EXCL UDE D _ VARIANT S , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJoin er . on (',' ). join ( applic able Variants . excluded Variant Names ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( type Ġ== ĠXml FileType . REPORT _ WITH _ FIX ES Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( incident . fix Ġ!= Ġnull Ġ|| ĠReport er . has Auto Fix ( issue )) ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Attribute ( writer , Ġindent Ġ+ Ġ 1 , ĠATTR _ QU ICK _ FIX , ĠVALUE _ ST UDIO ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġvar Ġhas Children Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġval Ġfix Data Ġ= Ġincident . fix ĊĠĠĠĠĠĠĠ Ġif Ġ( fix Data Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( type Ġ== ĠXml FileType . REPORT _ WITH _ FIX ES ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write ( ">\ n ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemit Fix Ed its ( incident , Ġfix Data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhas Children Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( type . is Persistence File ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! has Children ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write ( ">\ n ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhas Children Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemit Fix Descriptors ( incident , Ġfix Data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġvar Ġlocation : ĠLocation ? Ġ= Ġincident . location ĊĠĠĠĠĠĠĠ Ġif Ġ( location Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! has Children ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write ( ">\ n ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( location Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Location ( incident . project , Ġlocation ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Ġ= Ġlocation . secondary ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhas Children Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( type . is Persistence File ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġincident . client Properties ?. let Ġ{ Ġmap Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! has Children ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write ( ">\ n ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhas Children Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Lint Map ( map ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( has Children ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindent ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write ("</ $ tag >\ n ") ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write ("\ n ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindent ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write (" /> \ n ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġwrite Lint Map ( map : ĠL int Map , Ġindent : ĠInt Ġ= Ġ 2 , Ġname : ĠString ? Ġ= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġentries Ġ= ĠL int Map . get Internal Map ( map ). entries ĊĠĠĠĠĠĠĠ Ġif Ġ( entries . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġindent ( indent ) ĊĠĠĠĠĠĠĠ Ġwriter . write ("< ") ĊĠĠĠĠĠĠĠ Ġwriter . write ( TAG _ MAP ) ĊĠĠĠĠĠĠĠ Ġif Ġ( name Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write (" Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write ( ATTR _ ID ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write (" =\" ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write ( Xml Utils . to Xml AttributeValue ( name )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write ("\" ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġwriter . write ( ">\ n ") ĊĠĠĠĠĠĠĠ Ġloop @ Ġfor Ġ(( key , Ġvalue ) Ġin Ġentries ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Name Ġ= Ġwhen Ġ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠString Ġ-> ĠATTR _ STRING ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠInt Ġ-> ĠATTR _ INT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠBoolean Ġ-> ĠATTR _ BOOLEAN ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠLocation Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Location ( null , Ġvalue , ĠTAG _ LOCATION , Ġindent Ġ+ Ġ 1 , Ġkey ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue @ loop ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠL int Map Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Lint Map ( value , Ġindent Ġ+ Ġ 2 , Ġkey ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue @ loop ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠInc ident Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Incident ( value , Ġindent Ġ+ Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue @ loop ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠConstraint Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Condition ( value , Ġindent Ġ+ Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue @ loop ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġerror (" Unexpected Ġmap Ġvalue Ġtype Ġ${ value . java Class }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindent ( indent Ġ+ Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write ("< ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write ( TAG _ ENTRY ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Attribute ( writer , Ġindent Ġ+ Ġ 2 , ĠATTR _ NAME , Ġkey ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue String Ġ= Ġvalue . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Attribute ( writer , Ġindent Ġ+ Ġ 2 , Ġvalue Name , Ġvalue String ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write (" /> \ n ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġindent ( indent ) ĊĠĠĠĠĠĠĠ Ġwriter . write ("</ $ TAG _ MAP >\ n ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġwrite Location ( ĊĠĠĠĠĠĠĠ Ġproject : ĠProject ?, ĊĠĠĠĠĠĠĠ Ġlocation : ĠLocation , ĊĠĠĠĠĠĠĠ Ġtag : ĠString Ġ= ĠTAG _ LOCATION , ĊĠĠĠĠĠĠĠ Ġindent : ĠInt Ġ= Ġ 2 , ĊĠĠĠĠĠĠĠ Ġkey : ĠString ? Ġ= Ġnull ĊĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġindent ( indent ) ĊĠĠĠĠĠĠĠ Ġval Ġindent ed Ġ= Ġindent Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠ Ġwriter . write ("< ") ĊĠĠĠĠĠĠĠ Ġwriter . write ( tag ) ĊĠĠĠĠĠĠĠ Ġif Ġ( key Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write (" Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write ( ATTR _ ID ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write (" =\" ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write ( Xml Utils . to Xml AttributeValue ( key )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write ("\" ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġneutral Path Ġ= ĠgetPath ( location . file , Ġproject ) ĊĠĠĠĠĠĠĠ Ġwrite Attribute ( writer , Ġindent Ġ+ Ġ 1 , ĠATTR _ FILE , Ġneutral Path ) ĊĠĠĠĠĠĠĠ Ġval Ġstart Ġ= Ġlocation . start ĊĠĠĠĠĠĠĠ Ġif Ġ( start Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġline Ġ= Ġstart . line ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcolumn Ġ= Ġstart . column ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( line Ġ>= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ+ 1 : ĠLine Ġnumbers Ġinternally Ġare Ġ 0 - based , Ġreport Ġshould Ġbe ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ 1 - based . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Attribute ( writer , Ġindent ed , ĠATTR _ LINE , Ġ( line Ġ+ Ġ 1 ). toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( column Ġ>= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Attribute ( writer , Ġindent ed , ĠATTR _ COLUMN , Ġ( column Ġ+ Ġ 1 ). toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( type . include Offsets ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Attribute ( writer , Ġindent ed , ĠATTR _ START _ OFFSET , Ġstart . offset . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġend Ġ= Ġlocation . end ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( end Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( line Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġend Line Ġ= Ġend . line Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġend Column Ġ= Ġend . column Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Attribute ( writer , Ġindent ed , ĠATTR _ END _ LINE , Ġend Line . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Attribute ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindent ed , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠATTR _ END _ COLUMN , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend Column . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Attribute ( writer , Ġindent ed , ĠATTR _ END _ OFFSET , Ġend . offset . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġlocation . message ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Attribute ( writer , Ġindent ed , ĠATTR _ MESSAGE , Ġit ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġwriter . write (" /> \ n ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠApplies Ġthe Ġquick fixes Ġto Ġa Ġtemporary Ġdoc Ġand Ġwrites Ġout Ġthe ĊĠĠĠĠ Ġ* Ġcumulative Ġset Ġof Ġedits Ġto Ġapply Ġto Ġthe Ġdoc . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġemit Fix Ed its ( incident : ĠInc ident , Ġlint Fix : ĠL int Fix ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfixes Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( lint Fix Ġis ĠL int Fix . Lint Fix Group Ġ&& Ġlint Fix . type Ġ== ĠL int Fix . Group Type . ALTER NAT IV ES ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlint Fix . fixes ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( lint Fix ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfor Ġ( fix Ġin Ġfixes ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġemit Edit ( incident , Ġfix ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠgetPath ( file : ĠFile , Ġproject : ĠProject ?): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpath : ĠString Ġ= Ġif Ġ( type . relative Paths () Ġ&& Ġtype . variables () Ġ&& Ġclient . path Variables . any ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( assertions Enabled ()) Ġassert ( file . is Absolute ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclient . path Variables . to Path String ( file , Ġunix Ġ= Ġtype . unix Paths ()) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġabsolute Ġ= Ġ! type . relative Paths () Ġ&& Ġclient . flags . is FullPath ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclient . getDisplay Path ( project , Ġfile , Ġabsolute ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( type . unix Paths ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpath . replace ('\\ ', Ġ'/') ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpath ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġemit Edit ( incident : ĠInc ident , Ġlint Fix : ĠL int Fix ) Ġ{ ĊĠĠĠĠĠĠĠ Ġindent ( 2 ) ĊĠĠĠĠĠĠĠ Ġwriter . write ("< ") ĊĠĠĠĠĠĠĠ Ġwriter . write ( TAG _ FIX ) ĊĠĠĠĠĠĠĠ Ġlint Fix . get DisplayName ()?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Attribute ( writer , Ġ 3 , ĠATTR _ DESCRIPTION , Ġit ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġwrite Attribute ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter , Ġ 3 , ĠATTR _ AUTO , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠL int Fix Perform er . can Auto Fix ( lint Fix ). toString () ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġvar Ġhave Children Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġval Ġperform er Ġ= ĠL int Fix Perform er ( client , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġval Ġfiles Ġ= Ġperform er . compute Ed its ( incident , Ġlint Fix ) ĊĠĠĠĠĠĠĠ Ġif Ġ( files Ġ!= Ġnull Ġ&& Ġfiles . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhave Children Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write ( ">\ n ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( file Ġin Ġfiles ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( edit Ġin Ġfile . ed its ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindent ( 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write ("< $ TAG _ EDIT ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġneutral Path Ġ= ĠgetPath ( file . file , Ġincident . project ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Attribute ( writer , Ġ 4 , ĠATTR _ FILE , Ġneutral Path ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( edit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġafter Ġ= Ġsource . substring ( max ( start Offset Ġ- Ġ 1 2 , Ġ 0 ), Ġstart Offset ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbefore Ġ= Ġsource . substring ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Offset , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmin ( max ( start Offset Ġ+ Ġ 1 2 , Ġend Offset ), Ġsource . length ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Attribute ( writer , Ġ 4 , ĠATTR _ OFFSET , Ġstart Offset . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Attribute ( writer , Ġ 4 , ĠATTR _ AFTER , Ġafter ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Attribute ( writer , Ġ 4 , ĠATTR _ BEFORE , Ġbefore ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( end Offset Ġ> Ġstart Offset ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Attribute ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter , Ġ 4 , ĠATTR _ DELETE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource . substring ( start Offset , Ġend Offset ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( replacement . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Attribute ( writer , Ġ 4 , ĠATTR _ INSERT , Ġreplacement ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write (" /> \ n ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( have Children ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindent ( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write ("</ $ TAG _ FIX >\ n ") ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write (" /> \ n ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠApplies Ġthe Ġquick fixes Ġto Ġa Ġtemporary Ġdoc Ġand Ġwrites Ġout Ġthe ĊĠĠĠĠ Ġ* Ġcumulative Ġset Ġof Ġedits Ġto Ġapply Ġto Ġthe Ġdoc . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġemit Fix Descriptors ( incident : ĠInc ident , Ġlint Fix : ĠL int Fix , Ġindent : ĠInt Ġ= Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġindent ed Ġ= Ġindent Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠ Ġwhen Ġ( lint Fix ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠL int Fix . Replace String Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindent ( indent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write ("< $ TAG _ FIX _ REPLACE ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemit Fix Shared Attributes ( lint Fix , Ġindent ed ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlint Fix . old String ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Attribute ( writer , Ġindent ed , ĠATTR _ OLD _ STRING , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlint Fix . old Pattern ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Attribute ( writer , Ġindent ed , ĠATTR _ OLD _ PATTERN , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlint Fix . select Pattern ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Attribute ( writer , Ġindent ed , ĠATTR _ SELECT _ PATTERN , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Attribute ( writer , Ġindent ed , ĠATTR _ REPLACE MENT , Ġlint Fix . replacement ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( lint Fix . short en Names ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Attribute ( writer , Ġindent ed , ĠATTR _ SHORT EN _ NAMES , ĠVALUE _ TRUE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( lint Fix . re format ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Attribute ( writer , Ġindent ed , ĠATTR _ REF ORM AT , ĠATTR _ VALUE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrange Ġ= Ġlint Fix . range ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( range Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write ( ">\ n ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Location ( incident . project , Ġrange , ĠTAG _ RANGE , Ġindent ed ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindent ( indent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write ("</ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write ( TAG _ FIX _ REPLACE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write ( ">\ n ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write (" /> \ n ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠL int Fix . Set Attribute Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindent ( indent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write ("< ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write ( TAG _ FIX _ ATTRIBUTE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemit Fix Shared Attributes ( lint Fix , Ġindent ed ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlint Fix . namespace ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Attribute ( writer , Ġindent ed , ĠATTR _ NAMESPACE , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Attribute ( writer , Ġindent ed , ĠATTR _ ATTRIBUTE , Ġlint Fix . attribute ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlint Fix . value ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Attribute ( writer , Ġindent ed , ĠATTR _ VALUE , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( lint Fix . dot Ġ!= ĠInteger . MIN _ VALUE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Attribute ( writer , Ġindent ed , ĠATTR _ DOT , Ġlint Fix . dot . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( lint Fix . mark Ġ!= ĠInteger . MIN _ VALUE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Attribute ( writer , Ġindent ed , ĠATTR _ MARK , Ġlint Fix . mark . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrange Ġ= Ġlint Fix . range ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( range Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write ( ">\ n ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Location ( incident . project , Ġrange , ĠATTR _ RANGE , Ġindent ed ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindent ( indent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write ("</ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write ( TAG _ FIX _ ATTRIBUTE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write ( ">\ n ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write (" /> \ n ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠL int Fix . Lint Fix Group Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindent ( indent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtag Ġ= Ġwhen Ġ( lint Fix . type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠL int Fix . Group Type . ALTER NAT IV ES Ġ-> ĠTAG _ FIX _ ALTER NAT IV ES ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠL int Fix . Group Type . COMP OS ITE Ġ-> ĠTAG _ FIX _ COMP OS ITE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġerror (" Unexpected Ġfix Ġtype Ġ${ lint Fix . type }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write ("< ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write ( tag ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemit Fix Shared Attributes ( lint Fix , Ġindent ed ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write ( ">\ n ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( fix Ġin Ġlint Fix . fixes ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemit Fix Descriptors ( incident , Ġfix , Ġindent ed ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindent ( indent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write ("</ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write ( tag ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write ( ">\ n ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠL int Fix . Show Url Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindent ( indent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write ("< ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write ( TAG _ SHOW _ URL ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemit Fix Shared Attributes ( lint Fix , Ġindent ed ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Attribute ( writer , Ġindent ed , ĠATTR _ URL , Ġlint Fix . url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write (" /> \ n ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠL int Fix . Annot ate Fix Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindent ( indent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write ("< ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write ( TAG _ AN NOT ATE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemit Fix Shared Attributes ( lint Fix , Ġindent ed ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Attribute ( writer , Ġindent ed , ĠATTR _ SOURCE , Ġlint Fix . annotation ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( lint Fix . replace ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Attribute ( writer , Ġindent ed , ĠATTR _ REPLACE , Ġlint Fix . replace . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrange Ġ= Ġlint Fix . range ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( range Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write ( ">\ n ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Location ( incident . project , Ġrange , ĠTAG _ RANGE , Ġindent ed ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindent ( indent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write ("</ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write ( TAG _ AN NOT ATE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write ( ">\ n ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write (" /> \ n ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠL int Fix . Create File Fix Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindent ( indent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write ("< ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write ( TAG _ CREATE _ FILE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemit Fix Shared Attributes ( lint Fix , Ġindent ed ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġneutral Path Ġ= ĠgetPath ( lint Fix . file , Ġincident . project ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Attribute ( writer , Ġindent Ġ+ Ġ 1 , ĠATTR _ FILE , Ġneutral Path ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( lint Fix . delete ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Attribute ( writer , Ġindent ed , ĠATTR _ DELETE , ĠVALUE _ TRUE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlint Fix . select Pattern ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Attribute ( writer , Ġindent ed , ĠATTR _ SELECT _ PATTERN , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlint Fix . text ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Attribute ( writer , Ġindent ed , ĠATTR _ REPLACE MENT , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlint Fix . binary ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Attribute ( writer , Ġindent ed , ĠATTR _ BINARY , ĠBase 6 4 . get Encoder (). encode ToString ( it )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write (" /> \ n ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠL int Fix . DataMap Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindent ( indent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write ("< ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write ( TAG _ FIX _ DATA ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemit Fix Shared Attributes ( lint Fix , Ġindent ed ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( key Ġin Ġlint Fix . keys ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue String Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO : ĠEncode Ġtype Ġhere ? ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( val Ġvalue Ġ= Ġlint Fix . get ( key )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠString Ġ-> Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠBoolean Ġ-> Ġvalue . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠFile Ġ-> ĠgetPath ( value , Ġincident . project ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠList < *> Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠStrings Ġare Ġnot Ġallowed Ġto Ġcontain Ġ, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue . join ToString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġs Ġ= Ġit Ġas ĠString ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// no inspection ĠEx pensive Assertion ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert (! s . contains ("," )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠPsi Method , Ġis ĠThrowable Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠNot Ġsupported Ġfor Ġpersistence ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġerror (" Unexpected Ġfix Ġmap Ġvalue Ġtype Ġ${ value ?. java Class }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ?: Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Attribute ( writer , Ġ- 1 , Ġkey , Ġvalue String ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write (" /> \ n ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġerror (" Unsupported Ġquick fix Ġ${ lint Fix . java Class }") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġemit Fix Shared Attributes ( lint Fix : ĠL int Fix , Ġindent : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlint Fix . get DisplayName ()?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Attribute ( writer , Ġindent , ĠATTR _ DESCRIPTION , Ġit ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġlint Fix . get Family Name ()?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Attribute ( writer , Ġindent , ĠATTR _ FAMILY , Ġit ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( lint Fix . robot ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Attribute ( writer , Ġindent , ĠATTR _ ROBOT , ĠVALUE _ TRUE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( lint Fix . independent ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Attribute ( writer , Ġindent , ĠATTR _ INDEP END ENT , ĠVALUE _ TRUE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġprivate Ġfun Ġwrite Attribute ( writer : ĠWriter , Ġindent : ĠInt , Ġname : ĠString , Ġvalue : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠAllow Ġindent =- 1 Ġto Ġsign ify Ġsingle Ġline Ġattributes ĊĠĠĠĠĠĠĠ Ġif Ġ( indent Ġ>= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write ("\ n ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindent ( indent ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write (" Ġ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġwriter . write ( name ) ĊĠĠĠĠĠĠĠ Ġwriter . write (" =\" ") ĊĠĠĠĠĠĠĠ Ġwriter . write ( Xml Utils . to Xml AttributeValue ( value )) ĊĠĠĠĠĠĠĠ Ġwriter . write ("\" ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġprivate Ġfun Ġindent ( indent : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( level Ġin Ġ 0 Ġuntil Ġindent ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write (" ĠĠĠ Ġ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠWrites Ġthe Ġgiven Ġlist . Ġ*/ ĊĠĠĠ Ġfun Ġwrite Incident s ( ĊĠĠĠĠĠĠĠ Ġincident s : ĠList < Incident >, ĊĠĠĠĠĠĠĠ Ġextra Attributes : ĠList < Pair < String , ĠString ? >> Ġ= Ġempty List () ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwrite Pro log () ĊĠĠĠĠĠĠĠ Ġval Ġroot Tag Ġ= Ġif Ġ( type . is Persistence File ()) ĠTAG _ INC IDENT S Ġelse ĠTAG _ ISS UES ĊĠĠĠĠĠĠĠ Ġval Ġattribute Map Ġ= Ġ( getDefault Root Attributes () Ġ+ Ġextra Attributes ). toMap () ĊĠĠĠĠĠĠĠ Ġwrite Open Tag ( root Tag , Ġattribute Map ) ĊĠĠĠĠĠĠĠ Ġif Ġ( incident s . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( incident Ġin Ġincident s ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Incident ( incident , Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġwrite Close Tag ( root Tag ) ĊĠĠĠĠĠĠĠ Ġclose () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠWrites Ġthe Ġgiven Ġlist . Ġ*/ ĊĠĠĠ Ġfun Ġwrite Partial Results ( result Map : ĠMap < Issue , ĠL int Map >) Ġ{ ĊĠĠĠĠĠĠĠ Ġwrite Pro log () ĊĠĠĠĠĠĠĠ Ġ// ĠTODO : ĠSwitch Ġroot Ġtags ĊĠĠĠĠĠĠĠ Ġwrite Open Tag ( TAG _ INC IDENT S , ĠgetDefault Root Attributes (). toMap ()) ĊĠĠĠĠĠĠĠ Ġif Ġ( result Map . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ(( issue , Ġmap ) Ġin Ġresult Map . entries ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġissue . id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( map . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Lint Map ( map , Ġ 1 , Ġid ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġwrite Close Tag ( TAG _ INC IDENT S ) ĊĠĠĠĠĠĠĠ Ġclose () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠWrites Ġthe Ġgiven Ġlist . Ġ*/ ĊĠĠĠ Ġfun Ġwrite Configured Issues ( severity Map : ĠMap < String , ĠSeverity >) Ġ{ ĊĠĠĠĠĠĠĠ Ġwrite Pro log () ĊĠĠĠĠĠĠĠ Ġ// ĠTODO : ĠSwitch Ġroot Ġtags ĊĠĠĠĠĠĠĠ Ġwrite Open Tag ( TAG _ INC IDENT S , ĠgetDefault Root Attributes (). toMap ()) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( severity Map . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ(( id , Ġseverity ) Ġin Ġseverity Map ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindent ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write ("< $ TAG _ CONFIG Ġid =\" $ id \" Ġseverity =\" ${ severity . to Name ()} \" /> \ n ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġwrite Close Tag ( TAG _ INC IDENT S ) ĊĠĠĠĠĠĠĠ Ġclose () ĊĠĠĠ Ġ} Ċ } Ċ Ċ const Ġval ĠTAG _ INC IDENT S Ġ= Ġ" incident s " Ċ const Ġval ĠTAG _ INC IDENT Ġ= Ġ" incident " Ċ const Ġval ĠTAG _ CONFIG Ġ= Ġ" config " Ċ const Ġval ĠTAG _ FIX Ġ= Ġ" fix " Ċ const Ġval ĠTAG _ FIX _ REPLACE Ġ= Ġ" fix - replace " Ċ const Ġval ĠTAG _ FIX _ DATA Ġ= Ġ" fix - data " Ċ const Ġval ĠTAG _ FIX _ ATTRIBUTE Ġ= Ġ" fix - attribute " Ċ const Ġval ĠTAG _ FIX _ ALTER NAT IV ES Ġ= Ġ" fix - altern atives " Ċ const Ġval ĠTAG _ FIX _ COMP OS ITE Ġ= Ġ" fix - composite " Ċ const Ġval ĠTAG _ RANGE Ġ= Ġ" range " Ċ const Ġval ĠTAG _ EDIT Ġ= Ġ" edit " Ċ const Ġval ĠTAG _ CONDITION Ġ= Ġ" condition " Ċ const Ġval ĠTAG _ MAP Ġ= Ġ" map " Ċ const Ġval ĠTAG _ ENTRY Ġ= Ġ" entry " Ċ const Ġval ĠTAG _ SHOW _ URL Ġ= Ġ" show - url " Ċ const Ġval ĠTAG _ AN NOT ATE Ġ= Ġ" annotate " Ċ const Ġval ĠTAG _ CREATE _ FILE Ġ= Ġ" create - file " Ċ const Ġval ĠATTR _ SEVER ITY Ġ= Ġ" severity " Ċ const Ġval ĠATTR _ INT Ġ= Ġ" int " Ċ const Ġval ĠATTR _ BOOLEAN Ġ= Ġ" boolean " Ċ const Ġval ĠATTR _ STRING Ġ= Ġ" string " Ċ const Ġval ĠATTR _ START _ OFFSET Ġ= Ġ" start Offset " Ċ const Ġval ĠATTR _ END _ OFFSET Ġ= Ġ" end Offset " Ċ const Ġval ĠATTR _ END _ LINE Ġ= Ġ" end Line " Ċ const Ġval ĠATTR _ END _ COLUMN Ġ= Ġ" end Column " Ċ const Ġval ĠATTR _ URL Ġ= Ġ" url " Ċ const Ġval ĠATTR _ URL S Ġ= Ġ" urls " Ċ const Ġval ĠATTR _ ANDROID Ġ= Ġ" android " Ċ const Ġval ĠATTR _ LIBRARY Ġ= Ġ" library " Ċ const Ġval ĠATTR _ CLIENT Ġ= Ġ" client " Ċ const Ġval ĠATTR _ CLIENT _ NAME Ġ= Ġ" name " Ċ const Ġval ĠATTR _ VERSION Ġ= Ġ" version " Ċ const Ġval ĠATTR _ VARIANT Ġ= Ġ" variant " Ċ const Ġval ĠATTR _ ATTRIBUTE Ġ= Ġ" attribute " Ċ const Ġval ĠATTR _ NAMESPACE Ġ= Ġ" namespace " Ċ const Ġval ĠATTR _ RANGE Ġ= Ġ" range " Ċ const Ġval ĠATTR _ DOT Ġ= Ġ" dot " Ċ const Ġval ĠATTR _ MARK Ġ= Ġ" mark " Ċ const Ġval ĠATTR _ SOURCE Ġ= Ġ" source " Ċ const Ġval ĠATTR _ REPLACE Ġ= Ġ" replace " Ċ const Ġval ĠATTR _ DESCRIPTION Ġ= Ġ" description " Ċ const Ġval ĠATTR _ FAMILY Ġ= Ġ" family " Ċ const Ġval ĠATTR _ INDEP END ENT Ġ= Ġ" independent " Ċ const Ġval ĠATTR _ ROBOT Ġ= Ġ" robot " Ċ const Ġval ĠATTR _ OLD _ STRING Ġ= Ġ" old String " Ċ const Ġval ĠATTR _ OLD _ PATTERN Ġ= Ġ" old Pattern " Ċ const Ġval ĠATTR _ SELECT _ PATTERN Ġ= Ġ" select Pattern " Ċ const Ġval ĠATTR _ REPLACE MENT Ġ= Ġ" replacement " Ċ const Ġval ĠATTR _ BINARY Ġ= Ġ" binary " Ċ const Ġval ĠATTR _ SHORT EN _ NAMES Ġ= Ġ" short en Names " Ċ const Ġval ĠATTR _ REF ORM AT Ġ= Ġ" re format " Ċ const Ġval ĠATTR _ OFFSET Ġ= Ġ" offset " Ċ const Ġval ĠATTR _ AFTER Ġ= Ġ" after " Ċ const Ġval ĠATTR _ BEFORE Ġ= Ġ" before " Ċ const Ġval ĠATTR _ DELETE Ġ= Ġ" delete " Ċ const Ġval ĠATTR _ INSERT Ġ= Ġ" insert " Ċ const Ġval ĠATTR _ CATEGORY Ġ= Ġ" category " Ċ const Ġval ĠATTR _ PRIORITY Ġ= Ġ" priority " Ċ const Ġval ĠATTR _ SUM MARY Ġ= Ġ" summary " Ċ const Ġval ĠATTR _ EX PLAN ATION Ġ= Ġ" explanation " Ċ const Ġval ĠATTR _ ERROR _ LINE 1 Ġ= Ġ" error Line 1 " Ċ const Ġval ĠATTR _ ERROR _ LINE 2 Ġ= Ġ" error Line 2 " Ċ const Ġval ĠATTR _ INCLUDED _ VARIANT S Ġ= Ġ" included Variants " Ċ const Ġval ĠATTR _ EXCL UDE D _ VARIANT S Ġ= Ġ" excluded Variants " Ċ const Ġval ĠATTR _ TARGET _ GE Ġ= Ġ" target GE " Ċ const Ġval ĠATTR _ TARGET _ LT Ġ= Ġ" target LT " Ċ const Ġval ĠATTR _ MIN _ GE Ġ= Ġ" min GE " Ċ const Ġval ĠATTR _ MIN _ LT Ġ= Ġ" min LT " Ċ const Ġval ĠATTR _ ALL _ OF Ġ= Ġ" all Of " Ċ const Ġval ĠATTR _ ANY _ OF Ġ= Ġ" any Of " Ċ const Ġval ĠATTR _ QU ICK _ FIX Ġ= Ġ" quick fix " Ċ const Ġval ĠVALUE _ ST UDIO Ġ= Ġ" studio " Ċ const Ġval ĠATTR _ AUTO Ġ= Ġ" auto " Ċ