/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 9 Ġ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 . idea . lint Ċ Ċ import Ġcom . android . Sdk Constants . ANDROID _ MAN IFEST _ XML Ċ import Ġcom . android . ide . common . repository . Gradle Coordinate Ċ import Ġcom . android . ide . common . repository . Gradle Version Ċ import Ġcom . android . ide . common . repository . Sdk Maven Repository Ċ import Ġcom . android . tools . idea . flags . Studio Flags Ċ import Ġcom . android . tools . idea . gradle . dependencies . Gradle Dependency Manager Ċ import Ġcom . android . tools . idea . gradle . plugin . Latest Known Plugin Version Provider Ċ import Ġcom . android . tools . idea . gradle . project . model . Android Module Model Ċ import Ġcom . android . tools . idea . gradle . project . upgrade . perform Deprecated Configurations Upgrade Ċ import Ġcom . android . tools . idea . gradle . project . upgrade . perform Recommended Plugin Upgrade Ċ import Ġcom . android . tools . idea . gradle . project . upgrade . should Recommend Plugin Upgrade Ċ import Ġcom . android . tools . idea . gradle . repositories . Repository Url Manager Ċ import Ġcom . android . tools . idea . lint . common . Lint Batch Result Ċ import Ġcom . android . tools . idea . lint . common . Lint Editor Result Ċ import Ġcom . android . tools . idea . lint . common . Lint Ide Client Ċ import Ġcom . android . tools . idea . lint . common . Lint Ide Support Ċ import Ġcom . android . tools . idea . lint . common . Lint Result Ċ import Ġcom . android . tools . idea . lint . common . getModule Dir Ċ import Ġcom . android . tools . idea . project . Android Project Info Ċ import Ġcom . android . tools . idea . res . Android File ChangeListener Ċ import Ġcom . android . tools . idea . sdk . Android Sdk s Ċ import Ġcom . android . tools . idea . sdk . Studio Sdk Util Ċ import Ġcom . android . tools . idea . sdk . progress . Studio Logger Progress Indicator Ċ import Ġcom . android . tools . lint . client . api . Issue Registry Ċ import Ġcom . android . tools . lint . client . api . Lint Driver Ċ import Ġcom . android . tools . lint . detector . api . Issue Ċ import Ġcom . android . tools . lint . detector . api . Platform Ċ import Ġcom . google . wire less . android . sdk . stats . Lint Session Ċ import Ġcom . intellij . code Insight . int ention . Int ention Action Ċ import Ġcom . intellij . code Inspection . Local Quick Fix Ċ import Ġcom . intellij . facet . Project Facet Manager Ċ import Ġcom . intellij . ide . highlighter . Java FileType Ċ import Ġcom . intellij . ide . highlighter . Xml FileType Ċ import Ġcom . intellij . lang . properties . Properties FileType Ċ import Ġcom . intellij . openapi . application . Application Manager Ċ import Ġcom . intellij . openapi . file Types . File Types Ċ import Ġcom . intellij . openapi . module . Module Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . intellij . openapi . ui . Messages Ċ import Ġcom . intellij . openapi . util . Pair Ċ import Ġcom . intellij . openapi . vfs . Virtual File Ċ import Ġcom . intellij . psi . Psi Element Ċ import Ġcom . intellij . psi . Psi File Ċ import Ġcom . intellij . psi . xml . Xml File Ċ import Ġorg . jetbrains . android . facet . Android Facet Ċ import Ġorg . jetbrains . android . resource Managers . Module Resource Managers Ċ import Ġorg . jetbrains . annotations . Visible ForTesting Ċ import Ġorg . jetbrains . kotlin . idea . Kotlin FileType Ċ import Ġorg . jetbrains . plugins . gradle . config . is Gradle File Ċ import Ġjava . io . File Ċ import Ġjava . util .* Ċ Ċ class ĠAndroid Lint Ide Support Ġ: ĠL int Ide Support () Ġ{ ĊĠ Ġoverride Ġfun Ġget Issue Registry (): ĠIssue Registry Ġ{ ĊĠĠĠ Ġreturn ĠAndroid Lint Ide Issue Registry () ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġget Baseline File ( client : ĠL int Ide Client , Ġmodule : ĠModule ): ĠFile ? Ġ{ ĊĠĠĠ Ġval Ġmodel Ġ= ĠAndroid Module Model . get ( module ) Ġ?: Ġreturn Ġnull ĊĠĠĠ Ġval Ġversion Ġ= Ġmodel . model Version Ġ?: Ġreturn Ġnull ĊĠĠĠ Ġif Ġ( version . is At Least ( 2 , Ġ 3 , Ġ 1 )) Ġ{ ĊĠĠĠĠĠ Ġval Ġoptions Ġ= Ġmodel . android Project . lint Options ĊĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbaseline File Ġ= Ġoptions . baseline File ĊĠĠĠĠĠĠĠ Ġif Ġ( baseline File Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġreturn Ġbaseline File ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġcatch Ġ( unsupported : ĠThrowable ) Ġ{ ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠBase lines Ġcan Ġalso Ġbe Ġconfigured Ġvia Ġlint . xml ĊĠĠĠ Ġmodule . getModule Dir ()?. let Ġ{ Ġdir Ġ-> ĊĠĠĠĠĠ Ġclient . getConfiguration ( dir )?. baseline File ?. let Ġ{ Ġbaseline Ġ-> Ġreturn Ġbaseline Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġnull ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġget Severity Overrides ( module : ĠModule ): ĠMap < String , ĠInt >? Ġ{ ĊĠĠĠ Ġval Ġmodel Ġ= ĠAndroid Module Model . get ( module ) Ġ?: Ġreturn Ġnull ĊĠĠĠ Ġval Ġversion Ġ= Ġmodel . model Version Ġ?: Ġreturn Ġnull ĊĠĠĠ Ġif Ġ( version . is At Least ( 2 , Ġ 3 , Ġ 1 )) Ġ{ ĊĠĠĠĠĠ Ġval Ġoptions Ġ= Ġmodel . android Project . lint Options ĊĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoptions . severity Overrides ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġcatch Ġ( unsupported : ĠThrowable ) Ġ{ ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġnull ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġask For AttributeValue ( attribute Name : ĠString , Ġcontext : ĠPsi Element ): ĠString ? Ġ{ ĊĠĠĠ Ġval Ġfacet Ġ= ĠAndroid Facet . getInstance ( context ) ĊĠĠĠ Ġval Ġmessage Ġ= Ġ" Specify Ġvalue Ġof Ġattribute Ġ'$ attribute Name '" ĊĠĠĠ Ġval Ġtitle Ġ= Ġ" Set ĠAttribute ĠValue " ĊĠĠĠ Ġif Ġ( facet Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġval Ġs rm Ġ= ĠModule Resource Managers . getInstance ( facet ). framework ResourceManager ĊĠĠĠĠĠ Ġif Ġ( s rm Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġattr Defs Ġ= Ġs rm . attribute Definitions ĊĠĠĠĠĠĠĠ Ġif Ġ( attr Defs Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġval Ġdef Ġ= Ġattr Defs . get Attr Def ByName ( attribute Name ) ĊĠĠĠĠĠĠĠĠĠ Ġif Ġ( def Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvariants Ġ= Ġdef . values ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( variants . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠMessages . show Editable Choose Dialog ( message , Ġtitle , ĠMessages . get Question Icon (), Ġvariants , Ġvariants [ 0 ], Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn ĠMessages . show Input Dialog ( context . project , Ġmessage , Ġtitle , ĠMessages . get Question Icon ()) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġcan Annot ate ( file : ĠPsi File , Ġmodule : ĠModule ): ĠBoolean Ġ{ ĊĠĠĠ Ġ// ĠLimit Ġchecks Ġto ĠAndroid Ġmodules ĊĠĠĠ Ġval Ġfacet Ġ= ĠAndroid Facet . getInstance ( module ) ĊĠĠĠ Ġif Ġ( facet Ġ== Ġnull Ġ&& Ġ! Android Lint Ide Project . has Android Module ( module . project )) Ġ{ ĊĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĠĠĠ Ġval ĠfileType Ġ= Ġfile . fileType ĊĠĠĠ Ġif Ġ( fileType Ġ=== ĠJava FileType . INSTANCE ĊĠĠĠĠĠĠĠ Ġ|| ĠfileType Ġ=== ĠKotlin FileType . INSTANCE ĊĠĠĠĠĠĠĠ Ġ|| ĠfileType Ġ=== ĠProperties FileType . INSTANCE ) Ġ{ ĊĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( fileType Ġ=== ĠXml FileType . INSTANCE ) Ġ{ ĊĠĠĠĠĠ Ġreturn Ġfacet Ġ!= Ġnull Ġ&& Ġ( Module Resource Managers . getInstance ( ĊĠĠĠĠĠĠĠ Ġfacet ). local ResourceManager . getFile Resource Folder Type ( file ) Ġ!= Ġnull Ġ|| ĠAND ROID _ MAN IFEST _ XML Ġ== Ġfile . name ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġelse Ġif Ġ( fileType Ġ=== ĠFile Types . PLAIN _ TEXT ) Ġ{ ĊĠĠĠĠĠ Ġreturn Ġsuper . can Annot ate ( file , Ġmodule ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġelse Ġif Ġ( file . is Gradle File ()) Ġ{ ĊĠĠĠĠĠ Ġ// ĠEnsure Ġthat Ġwe 're Ġlistening Ġto Ġthe ĠP SI Ġstructure Ġfor ĠGradle Ġfile Ġedit Ġnotifications ĊĠĠĠĠĠ Ġval Ġproject Ġ= Ġfile . project ĊĠĠĠĠĠ Ġif Ġ( Android Project Info . getInstance ( project ). requires Android Model ()) Ġ{ ĊĠĠĠĠĠĠĠ ĠAndroid File ChangeListener . getInstance ( project ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġfalse ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġcan Analyze ( project : ĠProject ): ĠBoolean Ġ{ ĊĠĠĠ Ġ// ĠOnly Ġrun Ġin ĠAndroid Ġprojects . ĠThis Ġis Ġrelevant Ġwhen Ġthe ĠAndroid Ġplugin Ġis ĊĠĠĠ Ġ// Ġenabled Ġin ĠIntelliJ . ĊĠĠĠ Ġif Ġ(! Project Facet Manager . getInstance ( project ). has Fac ets ( Android Facet . ID )) Ġ{ ĊĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġtrue ĊĠ Ġ} ĊĊĠ Ġ// ĠProjects ĊĠ Ġoverride Ġfun Ġcreate Project ( client : ĠL int Ide Client , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfiles : ĠList < Virtual File > ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar arg Ġmodules : ĠModule ): ĠList < com . android . tools . lint . detector . api . Project > Ġ{ ĊĠĠĠ Ġreturn ĠAndroid Lint Ide Project . create ( client , Ġfiles , Ġ* modules ); ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġcreate Project For Single File ( client : ĠL int Ide Client , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile : ĠVirtual File ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodule : ĠModule ): ĠPair < com . android . tools . lint . detector . api . Project , Ġcom . android . tools . lint . detector . api . Project > Ġ{ ĊĠĠĠ Ġreturn ĠAndroid Lint Ide Project . create For Single File ( client , Ġfile , Ġmodule ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġcreate Client ( project : ĠProject , Ġlint Result : ĠL int Result ): ĠL int Ide Client Ġ{ ĊĠĠĠ Ġreturn ĠAndroid Lint Ide Client ( project , Ġlint Result ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġcreate Batch Client ( lint Result : ĠL int Batch Result ): ĠL int Ide Client Ġ{ ĊĠĠĠ Ġreturn ĠAndroid Lint Ide Client ( lint Result . project , Ġlint Result ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġcreate Editor Client ( lint Result : ĠL int Editor Result ): ĠL int Ide Client Ġ{ ĊĠĠĠ Ġreturn ĠAndroid Lint Ide Client ( lint Result . getModule (). project , Ġlint Result ) ĊĠ Ġ} ĊĊĠ Ġ// ĠGradle ĊĠ Ġoverride Ġfun Ġupdate To Latest ( module : ĠModule , Ġgc : ĠGradle Coordinate ) Ġ{ ĊĠĠĠ Ġ// ĠBased Ġon ĠUpgrade Constraint Layout Fix ĊĠĠĠ ĠStudio Sdk Util . reload Remote Sdk With Modal Progress () ĊĠĠĠ Ġval Ġsdk Handler Ġ= ĠAndroid Sdk s . getInstance (). try To Choose Sdk Handler () ĊĠĠĠ Ġval Ġprogress Ġ= ĠStudio Logger Progress Indicator ( Android Lint Missing Constraints Inspection :: class . java ) ĊĠĠĠ Ġval Ġp Ġ= ĠS dk Maven Repository . find Latest Version ( gc , Ġsdk Handler , Ġnull , Ġprogress ) ĊĠĠĠ Ġif Ġ( p Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġval Ġlatest Ġ= ĠS dk Maven Repository . get Coordinate From Sdk Path ( p . path ) ĊĠĠĠĠĠ Ġif Ġ( latest Ġ!= Ġnull ) Ġ{ Ġ// Ġshould Ġalways Ġbe Ġthe Ġcase Ġunless Ġthe Ġversion Ġsuffix Ġis Ġsomehow Ġwrong ĊĠĠĠĠĠĠĠ Ġ// ĠUpdate Ġversion Ġdependency Ġin Ġthe Ġmodule . ĠNote Ġthat Ġthis Ġwill Ġtrigger Ġa Ġsync Ġtoo . ĊĠĠĠĠĠĠĠ Ġval Ġmanager Ġ= ĠGradle Dependency Manager . getInstance ( module . project ) ĊĠĠĠĠĠĠĠ Ġmanager . update Libraries To Version ( module , ĠlistOf ( latest ), Ġnull ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġrecommended Ag p Version ( project : ĠProject ): ĠGradle Version ? Ġ{ ĊĠĠĠ Ġreturn ĠGradle Version . parse ( Latest Known Plugin Version Provider . INSTANCE . get ()) ĊĠ Ġ} ĊĠ Ġoverride Ġfun Ġshould Recommend Update Ag p To Latest ( project : ĠProject ): ĠBoolean Ġ{ ĊĠĠĠ Ġreturn Ġshould Recommend Plugin Upgrade ( project ) ĊĠ Ġ} ĊĠ Ġoverride Ġfun Ġupdate Ag p To Latest ( project : ĠProject ) Ġ{ ĊĠĠĠ ĠApplication Manager . getApplication (). execute On P ooled Thread Ġ{ Ġperform Recommended Plugin Upgrade ( project ) Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġshould Offer Upgrade Assistant For Deprecated Configurations ( project : ĠProject ) Ġ= ĠStudio Flags . AG P _ UP GR ADE _ AS SIST ANT . get () ĊĊĠ Ġoverride Ġfun Ġupdate Deprecated Configurations ( project : ĠProject , Ġelement : ĠPsi Element ) Ġ{ ĊĠĠĠ ĠApplication Manager . getApplication (). execute On P ooled Thread Ġ{ ĊĠĠĠĠĠ Ġperform Deprecated Configurations Upgrade ( project , Ġelement ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġresolve Dynamic ( project : ĠProject , Ġgc : ĠGradle Coordinate ): ĠString ? Ġ{ ĊĠĠĠ Ġval Ġsdk Handler Ġ= ĠAndroid Sdk s . getInstance (). try To Choose Sdk Handler () ĊĠĠĠ Ġreturn ĠRepository Url Manager . get (). resolve Dynamic Coordinate Version ( gc , Ġproject , Ġsdk Handler ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġget Platforms (): ĠEnum Set < Platform > Ġ= ĠPlatform . ANDROID _ SET ĊĊĠ Ġ// ĠAnalytics ĊĠ Ġoverride Ġfun Ġcan Request Feedback (): ĠBoolean Ġ= ĠProvide Lint Feedback Panel . can Request Feedback () ĊĊĠ Ġoverride Ġfun Ġrequest Feedback Fix ( issue : ĠIssue ): ĠLocal Quick Fix Ġ= ĠProvide Lint Feedback Fix ( issue . id ) ĊĠ Ġoverride Ġfun Ġrequest Feedback Int ention Action ( issue : ĠIssue ): ĠInt ention Action Ġ= ĠProvide Lint Feedback Int ention Action ( issue . id ) ĊĊĠ Ġ// ĠRandom Ġnumber Ġgenerator Ġused Ġby Ġlog Session Ġbelow . ĠWe 're Ġusing Ġa Ġseed Ġof Ġ 0 Ġbecause ĊĠ Ġ// Ġwe Ġdon 't Ġneed Ġtrue Ġrandom ness , Ġjust Ġan Ġeven Ġdistribution . ĠThis Ġgenerator Ġis ĊĠ Ġ// Ġvisible Ġsuch Ġthat Ġtests Ġcan Ġreset Ġthe Ġseed Ġeach Ġtime Ġsuch Ġthat Ġthe Ġtest Ġorder ĊĠ Ġ// Ġdoes Ġnot Ġmatter Ġ( and Ġtherefore Ġwe 're Ġusing Ġjava . util . Random Ġinstead Ġof Ġkotlin . Random ĊĠ Ġ// Ġto Ġget Ġaccess Ġto Ġset Seed () ĊĠ Ġ@ Visible ForTesting ĊĠ Ġval Ġrandom : Ġjava . util . Random Ġ= Ġjava . util . Random ( 0 ) ĊĊĠ Ġoverride Ġfun Ġlog Session ( lint : ĠL int Driver , Ġlint Result : ĠL int Editor Result ) Ġ{ ĊĠĠĠ Ġ// ĠL int Ġcreates Ġa ĠL OT Ġof Ġsession Ġdata Ġ( since Ġit Ġruns Ġafter Ġevery Ġedit Ġpause Ġin Ġthe Ġeditor . ĊĠĠĠ Ġ// ĠLet 's Ġonly Ġsubmit Ġ 1 Ġout Ġof Ġevery Ġ 1 0 0 Ġreports ; Ġthe Ġresults Ġwill Ġstill Ġexpress Ġtrend s Ġand ĊĠĠĠ Ġ// Ġrelative Ġimportance Ġof Ġlint Ġchecks . ĊĠĠĠ Ġif Ġ( random . next Double () Ġ< Ġ 0 . 0 1 ) Ġ{ Ġ// Ġnext Double () Ġ~ 2 0 % Ġfaster Ġthan Ġnext Int () ĊĠĠĠĠĠ Ġval Ġanalytics Ġ= ĠL int Ide Analytics ( lint Result . getModule (). project ) ĊĠĠĠĠĠ Ġanalytics . log Session ( Lint Session . Analysis Type . IDE _ FILE , Ġlint , Ġlint Result . getModule (), Ġlint Result . problems , Ġnull ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġlog Session ( lint : ĠL int Driver , Ġmodule : ĠModule ?, Ġlint Result : ĠL int Batch Result ) Ġ{ ĊĠĠĠ Ġval Ġanalytics Ġ= ĠL int Ide Analytics ( lint Result . project ) ĊĠĠĠ Ġanalytics . log Session ( Lint Session . Analysis Type . IDE _ BATCH , Ġlint , Ġmodule , Ġnull , Ġlint Result . problem Map ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġensure Namespace Imported ( file : ĠXml File , Ġnamespace Uri : ĠString , Ġsuggested Prefix : ĠString ?): ĠString Ġ{ ĊĠĠĠ Ġreturn Ġcom . android . tools . idea . res . ensure Namespace Imported ( file , Ġnamespace Uri , Ġsuggested Prefix ) ĊĠ Ġ} Ċ } Ċ