2015-09-01 13 views
6

Quello che voglio ottenere:configurazione corretta per "sonar.libraries" in un moderno progetto Gradle Android

In sonar è possibile tenere traccia delle dipendenze di terzi utilizzati in tutto Progetti impostando la proprietà "sonar.libraries "e forse ci sono più vantaggi

Quello che ho cercato di fare (come la rivelazione che le violazioni sono causati da librerie esterne?):

ho impostato il valore a build/intermediates/pre-dexed/debug/*.jar ma questo sembra avere poco ef fect.

Domanda:

Since it is no longer needed to use the "libs" folder for third party dependencies, qual è la raccomandazione per la proprietà denominata "sonar.libraries"?

risposta

4

Abbiamo bisogno di implementare un'elaborazione speciale quando viene rilevato un progetto Android. Impostare correttamente sonar.java.libraries è uno dei requisiti. Un biglietto esiste già, non esitate a votare o fornire una richiesta di pull. https://jira.sonarsource.com/browse/SONARGRADL-6

Aggiornamento: è stata rilasciata la versione 2.1 del plug-in (currently RC2) che supporta nativamente i progetti Android. Le proprietà sonar.java.[test.]binaries e sonar.java.[test.]libraries verranno popolate automaticamente.

+0

Ottimo! Che dire della proprietà 'sonar.java.test.binaries' e' sonar.java.version'? – Alix

+0

@Alix Sono supportati, aggiornerò la mia risposta. –

+0

Quindi non è più necessario specificare sonar.java.version? – Alix

1

Anche la cartella pre-dex mi è sembrata la candidata perfetta. Sfortunatamente, se guardi i vasi in questa cartella, vedrai che non contengono classi compilate, ma file dex. Un file dex è un "eseguibile dalvik", è un materiale Android e Sonar non può fare nulla di ciò.

sono riuscito a fare riferimento alcuni delle mie dipendenze, dichiarando build/intermediates/exploded-aar/**/*.jar nella proprietà sonar.libraries.

Con questa linea vedrai tutte le "android librairies" (aar) da cui dipende il tuo progetto. Non sono ancora riuscito a rintracciare tutti gli altri semplici java libraires (jar)

+0

i file di aar dovrebbero avere un classes.jar al livello di root, nulla dovrebbe essere dexato. – bmg

+0

@bmg: amico, leggi la domanda e la risposta prima di ricordarci che un aar contiene una .jar e una res/cartella;) – ldavin

+0

Lol my bad; un'alternativa potrebbe essere estrarre tutte le dipendenze di aar e aggiungere i file jar estratti alla proprietà 'sonar.java.libraries'. – bmg