package Ġcom . ches ire . lin tr ules . xml . detector s Ċ Ċ import Ġcom . android . Sdk Constants . ATTR _ COLOR Ċ import Ġcom . android . tools . lint . detector . api . Resource Xml Detector Ċ import Ġcom . android . tools . lint . detector . api . Xml Context Ċ import Ġcom . android . utils . forEach Ċ import Ġcom . ches ire . lin tr ules . xml . issues . Color C asing Ċ import Ġorg . w 3 c . dom . Attr Ċ import Ġorg . w 3 c . dom . Element Ċ import Ġorg . w 3 c . dom . Node Ċ Ċ /** Ċ Ġ* ĠDetector Ġto Ġfind Ġissue Ġtypes Ġof Ġ[ Color C asing ]. Ċ Ġ*/ Ċ class ĠColor C asing Detector Ġ: ĠResource Xml Detector () Ġ{ ĊĠĠĠ Ġprivate Ġval Ġcolor Regex Ġ= ĠRegex ("# [ a - fA - F \\ d ]{ 3 , 8 }") ĊĊĠĠĠ Ġoverride Ġfun Ġget Applicable Elements (): ĠCollection < String > Ġ= ĠALL ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Element ( context : ĠXml Context , Ġelement : ĠElement ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( element . nodeName Ġ== ĠATTR _ COLOR ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( should Report On ( element . textContent )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColor C asing . report ( context , Ġelement ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelement . attributes . forEach Ġ{ Ġnode Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( should Report On ( node . node Value )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColor C asing . report ( context , Ġnode Ġas ĠAttr ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshould Report On ( value : ĠString ) Ġ= ĊĠĠĠĠĠĠĠ Ġvalue . matches ( color Regex ) Ġ&& Ġvalue . any Ġ{ Ġit . is LowerCase () Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠColor C asing . report ( context : ĠXml Context , Ġnode : ĠNode ) Ġ= ĊĠĠĠĠĠĠĠ Ġcontext . report ( issue , Ġcontext . getLocation ( node ), Ġmessage ) ĊĊĠĠĠ Ġprivate Ġfun ĠColor C asing . report ( context : ĠXml Context , Ġattr : ĠAttr ) Ġ= ĊĠĠĠĠĠĠĠ Ġcontext . report ( issue , Ġcontext . getValue Location ( attr ), Ġmessage ) Ċ } Ċ