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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top