package Ġcom . p interest . kt lint . reporter . check style Ċ Ċ import Ġcom . p interest . kt lint . core . Lint Error Ċ import Ġcom . p interest . kt lint . core . Reporter Ċ import Ġjava . io . Print Stream Ċ import Ġjava . util . ArrayList Ċ import Ġjava . util . concurrent . Concurrent HashMap Ċ Ċ class ĠCheck Style Reporter ( val Ġout : ĠPrint Stream ) Ġ: ĠReport er Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġacc Ġ= ĠConcurrent HashMap < String , ĠMutable List < Lint Error >>() ĊĊĠĠĠ Ġoverride Ġfun Ġon Lint Error ( file : ĠString , Ġerr : ĠL int Error , Ġcorrected : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! corrected ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġacc . get Or Put ( file ) Ġ{ ĠArrayList < Lint Error >() Ġ}. add ( err ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġafter All () Ġ{ ĊĠĠĠĠĠĠĠ Ġout . println (""" <? xml Ġversion =" 1 . 0 " Ġencoding =" utf - 8 "?> """) ĊĠĠĠĠĠĠĠ Ġout . println (""" < check style Ġversion =" 8 . 0 "> """) ĊĠĠĠĠĠĠĠ Ġfor Ġ(( file , Ġerr List ) Ġin Ġacc . entries . sorted By Ġ{ Ġit . key Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġout . println (""" ĠĠĠ Ġ< file Ġname ="${ file . escape XML Attr Value ()} "> """) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ(( line , Ġcol , Ġrule Id , Ġdetail ) Ġin Ġerr List ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġout . println ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĠĠĠĠĠĠĠ Ġ< error Ġline ="$ line " Ġcolumn ="$ col " Ġseverity =" error " Ġmessage ="${ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdetail . escape XML Attr Value () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}" Ġsource ="$ rule Id " Ġ/> """ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġout . println (""" ĠĠĠ Ġ</ file > """) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġout . println (""" </ check style > """) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠString . escape XML Attr Value () Ġ= ĊĠĠĠĠĠĠĠ Ġthis . replace ("& ", Ġ"& amp ; "). replace (" \"", Ġ"& quot ; "). replace (" '", Ġ"& apos ; ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ("< ", Ġ"& lt ; "). replace ("> ", Ġ"& gt ; ") Ċ } Ċ