package Ġcom . g ian lu z . danger kotlin . android lint Ċ Ċ import Ġcom . g ian lu z . danger kotlin . android lint . model . domain . Issues Ċ import Ġorg . w 3 c . dom . Element Ċ import Ġorg . w 3 c . dom . Node Ċ import Ġjava . io . File Ċ import Ġjavax . xml . parsers . Document BuilderFactory Ċ Ċ internal Ġobject ĠL int Parser Ġ{ ĊĊĠĠĠ Ġfun Ġparse ( filePath : ĠString ): ĠIssues Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfactory Ġ= ĠDocument BuilderFactory . newInstance () ĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= Ġfactory . new Document Builder () ĊĊĠĠĠĠĠĠĠ Ġval Ġdocument Ġ= Ġbuilder . parse ( File ( filePath )) ĊĠĠĠĠĠĠĠ Ġval Ġroot Element Ġ= Ġdocument . documentElement ĊĠĠĠĠĠĠĠ Ġval Ġissues Ġ= Ġarray ListOf < Issues . Issue >() ĊĠĠĠĠĠĠĠ Ġval Ġlint Version Ġ= Ġroot Element . getAttribute (" by ") ĊĠĠĠĠĠĠĠ Ġval Ġelements Ġ= Ġroot Element . getElementsByTagName (" issue ") ĊĠĠĠĠĠĠĠ Ġfor Ġ( x Ġin Ġ 0 Ġuntil Ġelements . length ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( elements . item ( x ) Ġas ĠElement ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( this . nodeType Ġ== ĠNode . ELEMENT _ NODE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġissue Ġ= ĠIssues . Issue ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġget Attribute (" id "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġseverity Ġ= Ġget Attribute (" severity "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Ġ= Ġget Attribute (" message "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcategory Ġ= Ġget Attribute (" category "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpriority Ġ= Ġget Attribute (" priority "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsummary Ġ= Ġget Attribute (" summary "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexplanation Ġ= Ġget Attribute (" explanation "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġurl Ġ= Ġget Attribute (" url "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġurls Ġ= Ġget Attribute (" urls "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror Line 1 Ġ= Ġget Attribute (" error Line 1 "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror Line 2 Ġ= Ġget Attribute (" error Line 2 "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Ġ= Ġget Location () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġissues . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġissue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠIssues ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġissues , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlint Version ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠElement . getLocation (): ĠIssues . Issue . Location Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ( getElementsByTagName (" location "). item ( 0 ) Ġas ĠElement ). run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIssues . Issue . Location ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile Ġ= Ġget Attribute (" file "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline Ġ= Ġget Attribute (" line "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolumn Ġ= Ġget Attribute (" column ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }