2012-11-22 12 views
9

Il nostro progetto Android dipende da alcuni progetti esterni su cui non abbiamo il controllo. Pertanto sto cercando di installare il file lint.xml personalizzato in modo che possiamo aggiungere regole di ignoranza per loro. Come scenario di partenza ho cercato di rimuovere le avvertenze da ActionBarSherlock (senza offesa Jake)Scrittura personalizzata lint.xml

<?xml version="1.0" encoding="UTF-8"?> 
<lint> 
    <issue id="FloatMath"> 
    <ignore path="app/target/classes/com/actionbarsherlock/*" /> 
    </issue> 
    <issue id="DefaultLocale"> 
    <ignore path="app/target/classes/com/actionbarsherlock/*" /> 
    </issue> 
    <issue id="ViewConstructor"> 
    <ignore path="app/target/classes/com/actionbarsherlock/*" /> 
    </issue> 
</lint> 

con seguente comando in

lint app --disable FloatMath,DefaultLocale,ViewConstructor --xml lint-result.xml 

Tuttavia prodotta rapporto ancora incluso messaggi da ABS.

Aggiornamento ho cambiato comando per

lint --disable FloatMath,DefaultLocale,ViewConstructor --xml lint-result.xml app 

Non ha alcun cambiamento per Jenkins ancora produrre stesso rapporto, non importa ciò che è in ignorare, se eseguito in linea di comando lo fa ignora tutti i problemi elencati dopo la disattivazione. Vorrei che ci fosse un modo semplice per dire, hey ignorare/escludere le cose in un certo senso Maven lo fa ...

+0

ho messo il 'lint.xml' della tua risposta nella radice del mio progetto. Nessun cambiamento però. Stai usando 'mvn android: lint' per eseguire Lint o hai configurato' maven-compiler-plugin' per eseguire Lint all'interno del processo di compilazione come [descritto qui] (http://blog.octo.com/en/add- lint controlli-to-android-maven-build /)? Per favore aggiungi la tua configurazione. – JJD

+0

Sto richiamando filaccia dalla shell su Jenkins come 'lint --config lint.xml --xml lint-result.xml.' oppure 'lint --config lint.xml' se lo si esegue localmente. In questo modo esegui direttamente lo strumento lint di Android. Non l'ho provato con il plugin Android Maven, ma mi aspetto che ci debba essere un posto nella configurazione per aggiungere il file lint di esclusione –

risposta

8

Ancora una volta rispondendo alla mia stessa domanda ... lint.xml sembra ora così e ignorerà qualsiasi ActionBarSherlock riporta su ASB 4.2.0

<?xml version="1.0" encoding="UTF-8"?> 
<lint> 
    <issue id="NewApi"> 
    <ignore path="target/classes/com/actionbarsherlock/internal/ActionBarSherlockNative.class" /> 
    <ignore path="target/classes/com/actionbarsherlock/internal/ActionBarSherlockNative$ActionModeWrapper.class" /> 
    <ignore path="target/classes/com/actionbarsherlock/internal/app/ActionBarWrapper.class" /> 
    <ignore path="target/classes/com/actionbarsherlock/internal/app/ActionBarWrapper$TabWrapper.class" /> 
    <ignore path="target/classes/com/actionbarsherlock/internal/view/ActionProviderWrapper.class" /> 
    <ignore path="target/classes/com/actionbarsherlock/internal/view/menu/ActionMenuItemView.class" /> 
    <ignore path="target/classes/com/actionbarsherlock/internal/view/menu/MenuItemWrapper.class" /> 
    <ignore path="target/classes/com/actionbarsherlock/internal/view/menu/ActionMenuPresenter$HasPermanentMenuKey.class" /> 
    <ignore path="target/classes/com/actionbarsherlock/internal/widget/IcsAdapterView.class" /> 
    <ignore path="target/classes/com/actionbarsherlock/internal/widget/IcsProgressBar.class" /> 
    <ignore path="target/classes/com/actionbarsherlock/internal/widget/ActionBarView$HomeView.class" /> 
    <ignore path="target/classes/com/actionbarsherlock/widget/SearchView.class" /> 
    <ignore path="target/classes/com/actionbarsherlock/internal/nineoldandroids/widget/NineFrameLayout.class" /> 
    <ignore path="target/classes/com/actionbarsherlock/internal/nineoldandroids/widget/NineHorizontalScrollView.class" /> 
    <ignore path="target/classes/com/actionbarsherlock/internal/nineoldandroids/widget/NineLinearLayout.class" /> 
    <ignore path="target/classes/com/actionbarsherlock/internal/nineoldandroids/view/NineViewGroup.class" /> 
    <ignore path="target/classes/com/actionbarsherlock/internal/view/menu/BaseMenuPresenter.class" /> 
    <ignore path="target/classes/com/actionbarsherlock/internal/widget/AbsActionBarView.class" /> 
    <ignore path="target/classes/com/actionbarsherlock/internal/widget/ActionBarContextView.class" /> 
    <ignore path="target/classes/com/actionbarsherlock/internal/widget/ActionBarView.class" /> 
    <ignore path="target/classes/com/actionbarsherlock/internal/widget/CapitalizingButton.class" /> 
    <ignore path="target/classes/com/actionbarsherlock/internal/widget/CapitalizingTextView.class" /> 
    <ignore path="target/classes/com/actionbarsherlock/internal/widget/IcsAbsSpinner.class" /> 
    <ignore path="target/classes/com/actionbarsherlock/internal/widget/IcsLinearLayout.class" /> 
    <ignore path="target/classes/com/actionbarsherlock/internal/widget/IcsListPopupWindow.class" /> 
    <ignore path="target/classes/com/actionbarsherlock/internal/widget/ScrollingTabContainerView.class" /> 
    <ignore path="target/classes/com/actionbarsherlock/widget/ActivityChooserView$SetActivated.class" /> 
    <ignore path="target/classes/com/actionbarsherlock/app/SherlockActivity.class" /> 
    <ignore path="target/classes/com/actionbarsherlock/app/SherlockExpandableListActivity.class" /> 
    <ignore path="target/classes/com/actionbarsherlock/app/SherlockListActivity.class" /> 
    <ignore path="target/classes/com/actionbarsherlock/app/SherlockPreferenceActivity.class" /> 
    <ignore path="target/classes/com/actionbarsherlock/internal/ActionBarSherlockNative$ActionModeCallbackWrapper.class" /> 
    <ignore path="target/classes/com/actionbarsherlock/internal/app/ActionBarImpl$1.class" /> 
    <ignore path="target/classes/com/actionbarsherlock/internal/app/ActionBarImpl.class" /> 
    </issue> 

    <issue id="FloatMath"> 
    <ignore path="target/classes/com/actionbarsherlock/internal/nineoldandroids/view/animation/AnimatorProxy.class" /> 
    </issue> 

    <issue id="DefaultLocale"> 
    <ignore path="target/classes/com/actionbarsherlock/internal/widget/CapitalizingTextView.class" /> 
    <ignore path="target/classes/com/actionbarsherlock/internal/widget/CapitalizingButton.class" /> 
    </issue> 

    <issue id="ViewConstructor"> 
    <ignore path="target/classes/com/actionbarsherlock/internal/widget/CollapsibleActionViewWrapper.class" /> 
    </issue> 

    <issue id="WrongCall"> 
    <ignore path="target/classes/com/actionbarsherlock/internal/widget/IcsAdapterView.class" /> 
    </issue> 
</lint> 

comando di esecuzione di Shell che ora usiamo è

lint --config lint.xml --xml lint-results.xml .; 

PS: si prega di essere consapevoli che questo non rimuoverà tutte le segnalazioni di esclusi APKLIB come in questo caso, come ABS finora non c'è modo di escludere i report risorse inutilizzate di R.class. Sul processo di compilazione R.class della libreria collegata e il tuo progetto vengono uniti e Lint non ha modo di saperlo. Riesce a vedere solo R.class con alcuni riferimenti che non vengono utilizzati e li segnala.

+0

Grande, ma incompleto. Lint dovrebbe avere un meccanismo per escludere le classi ... – Snicolas

+0

Snicolas Sono d'accordo, Google ha bisogno di lucidarlo di più perché elencare tutte le classi per le librerie del progetto "add-on" è solo una casa pazza. In secondo luogo, ciò non risolve il problema dei rapporti di R. Class sulla risorsa inutilizzata che è stata portata dalla biblioteca –

1

Ho completato il file lint.xml per escludere altri errori di actionbarsherlock. Tuttavia, sarebbe bello avere un meccanismo di pacchetto di esclusione.

<?xml version="1.0" encoding="UTF-8"?> 
<lint> 
    <issue id="NewApi"> 
    <ignore path="target/classes/com/actionbarsherlock/internal/ActionBarSherlockNative.class"/> 
    <ignore path="target/classes/com/actionbarsherlock/internal/ActionBarSherlockNative$ActionModeWrapper.class"/> 
    <ignore path="target/classes/com/actionbarsherlock/internal/app/ActionBarWrapper.class"/> 
    <ignore path="target/classes/com/actionbarsherlock/internal/app/ActionBarWrapper$TabWrapper.class"/> 
    <ignore path="target/classes/com/actionbarsherlock/internal/view/ActionProviderWrapper.class"/> 
    <ignore path="target/classes/com/actionbarsherlock/internal/view/menu/ActionMenuItemView.class"/> 
    <ignore path="target/classes/com/actionbarsherlock/internal/view/menu/MenuItemWrapper.class"/> 
    <ignore path="target/classes/com/actionbarsherlock/internal/view/menu/ActionMenuPresenter$HasPermanentMenuKey.class"/> 
    <ignore path="target/classes/com/actionbarsherlock/internal/widget/IcsAdapterView.class"/> 
    <ignore path="target/classes/com/actionbarsherlock/internal/widget/IcsProgressBar.class"/> 
    <ignore path="target/classes/com/actionbarsherlock/internal/widget/ActionBarView$HomeView.class"/> 
    <ignore path="target/classes/com/actionbarsherlock/widget/SearchView.class"/> 
    <ignore path="target/classes/com/actionbarsherlock/internal/widget/AbsActionBarView.class"/> 
    <ignore path="target/classes/com/actionbarsherlock/internal/widget/ActionBarContextView.class"/> 
    <ignore path="target/classes/com/actionbarsherlock/internal/app/ActionBarImpl$1.class"/> 
    <ignore path="target/classes/com/actionbarsherlock/internal/app/ActionBarImpl.class"/> 
    <ignore path="target/classes/com/actionbarsherlock/internal/ActionBarSherlockNative$ActionModeCallbackWrapper.class"/> 
    <ignore path="target/classes/com/actionbarsherlock/internal/widget/ActionBarView.class"/> 
    <ignore path="target/classes/com/actionbarsherlock/widget/ActivityChooserView$SetActivated.class"/> 
    <ignore path="target/classes/com/actionbarsherlock/internal/view/menu/BaseMenuPresenter.class"/> 
    <ignore path="target/classes/com/actionbarsherlock/internal/widget/CapitalizingButton.class"/> 
    <ignore path="target/classes/com/actionbarsherlock/internal/widget/CapitalizingTextView.class"/> 
    <ignore path="target/classes/com/actionbarsherlock/internal/widget/IcsAbsSpinner.class"/> 
    <ignore path="target/classes/com/actionbarsherlock/internal/widget/IcsLinearLayout.class"/> 
    <ignore path="target/classes/com/actionbarsherlock/internal/widget/IcsListPopupWindow.class"/> 
    <ignore path="target/classes/com/actionbarsherlock/internal/nineoldandroids/widget/NineHorizontalScrollView.class"/> 
    <ignore path="target/classes/com/actionbarsherlock/internal/nineoldandroids/widget/NineLinearLayout.class"/> 
    <ignore path="target/classes/com/actionbarsherlock/internal/nineoldandroids/view/NineViewGroup.class"/> 
    <ignore path="target/classes/com/actionbarsherlock/internal/widget/ScrollingTabContainerView.class"/> 
    <ignore path="target/classes/com/actionbarsherlock/app/SherlockActivity.class"/> 
    <ignore path="target/classes/com/actionbarsherlock/app/SherlockExpandableListActivity.class"/> 
    <ignore path="target/classes/com/actionbarsherlock/app/SherlockListActivity.class"/> 
    <ignore path="target/classes/com/actionbarsherlock/app/SherlockPreferenceActivity.class"/> 
    <ignore path="target/classes/com/actionbarsherlock/internal/nineoldandroids/widget/NineFrameLayout.class"/> 
    <ignore path="target/classes/com/viewpagerindicator/IcsLinearLayout.class"/> 
</issue> 

<issue id="FloatMath"> 
    <ignore path="target/classes/com/actionbarsherlock/internal/nineoldandroids/view/animation/AnimatorProxy.class"/> 
</issue> 

<issue id="DefaultLocale"> 
    <ignore path="target/classes/com/actionbarsherlock/internal/widget/CapitalizingTextView.class"/> 
    <ignore path="target/classes/com/actionbarsherlock/internal/widget/CapitalizingButton.class"/> 
</issue> 

<issue id="ViewConstructor"> 
    <ignore path="target/classes/com/actionbarsherlock/internal/widget/CollapsibleActionViewWrapper.class"/> 
</issue> 
</lint> 
+0

come ho detto, questo si occupa solo delle classi. Se si controlla il report dei risultati del lint, troverete molte risorse inutilizzate collegate alla classe R –

9

Ora è possibile farlo:

<?xml version="1.0" encoding="UTF-8"?> 
<lint> 
    <issue id="all"> 
     <ignore regexp="target/classes/com/actionbarsherlock/.*[.]class" /> 
    </issue> 
</lint> 
Problemi correlati