Come posso velocizzare l'analisi del design del pacchetto di Sonar?
-
26-09-2019 - |
Domanda
Mantengo il processo di compilazione per un progetto Java di grandi dimensioni (> 500.000 LOC).Ho appena aggiunto una fase di analisi del sonar alla fine delle build notturne.Ma ci vogliono più di tre ore per eseguirlo...Questo non è un problema grave (succede dall'oggi al domani), ma mi piacerebbe sapere se posso accelerarlo (in modo da poterlo eseguire manualmente durante l'orario di lavoro, se lo si desidera).
Posso modificare qualche opzione Sonar, Hudson, Maven o JDK che potrebbe migliorare la situazione?
[INFO] ------------- Analyzing Monolith
[INFO] Selected quality profile : Sonar way, language=java
[INFO] Configure maven plugins...
[INFO] Sensor SquidSensor...
[INFO] Java AST scan...
[INFO] Java AST scan done: 103189 ms
[INFO] Java bytecode scan...
... (snip)
[INFO] Java bytecode scan done: 19159 ms
[INFO] Squid extraction...
[INFO] Package design analysis...
... (over three hour wait here)
[INFO] Package design analysis done: 12000771 ms
[INFO] Squid extraction done: 12277075 ms
[INFO] Sensor SquidSensor done: 12404793 ms
12 milioni di millisecondi = 200 minuti.È molto tempo!In confronto, le fasi di compilazione e test prima della fase sonar richiedono meno di 10 minuti.Da quello che posso dire, il processo è legato alla CPU;un mucchio più grande non ha alcun effetto.Forse deve essere così a causa dell'analisi dei grovigli/duplicazioni, non lo so.Naturalmente so che dividere il progetto è la soluzione migliore!Ma ciò richiederà una discreta quantità di lavoro;se nel frattempo potessi modificare qualche configurazione, sarebbe carino.
Qualche idea?
Soluzione 2
Da Freddy Mallet nella lista:
"...il problema non viene dal DB ma dall'algoritmo per identificare tutte le dipendenze del pacchetto da tagliare....Se riesci a tagliare questo progetto in più moduli, il tuo problema svanirà."
Ho testato questa teoria escludendo un pacchetto relativamente grande e, come previsto, il suo calo è stato drammatico.In teoria il numero di connessioni potrebbe crescere in modo quadratico con il numero di pacchetti, quindi questo approccio è probabilmente il migliore possibile con una codebase così ampia.
Altri suggerimenti
Ho camminato nei tuoi panni:su un progetto da oltre 2 milioni di loc (che avrebbe dovuto essere suddiviso in sottoprogetti anni fa, in effetti), non ho mai visto l'analisi della progettazione del pacchetto essere completata entro 4 giorni dal calcolo...
Come di SONAR-2164 (Aggiungere un'opzione per saltare la fase quadratica "Analisi della progettazione del pacchetto"), ho inviato una patch che consentirebbe agli utenti di impostare true nel file di progetto Maven in modo che l'analisi della progettazione del pacchetto venga saltata.Questa patch è in attesa di approvazione e al momento è prevista l'inclusione nella versione 2.7.