2015-12-03 12 views
19

Con SonarQube 5.2 quando analizzo lo stesso progetto come ho fatto con SonarQube 5.1.2 Vedo molti di questi messaggi di errore nel registro quando analizza le origini Java:ERRORE - Impossibile completare l'esecuzione simbolica: raggiunto il limite di 10000 passi

ERROR - Could not complete symbolic execution: reached limit of 10000 steps for method updateAll in class DefaultTypeDefinitions 

Questi messaggi di errore non sono stati visualizzati nella versione precedente di SonarQube 5.1.2.

Tuttavia, il risultato dell'analisi sembra essere corretto per SonarQube 5.2 alla fine.

Ma questi messaggi di errore mi allarmano. Non capisco cosa c'è di sbagliato. Puoi per favore aiutare a chiarirlo?

+1

Vediamo lo stesso dopo aver aggiornato il plug-in java a 3.8 oggi. Sonar 4.5.6 LTS –

+0

Lo stesso qui con _5.1.2_ dopo l'aggiornamento del plug-in java su _3.8_ –

+1

Poiché questo è qualcosa registrato da java plugin 3.8, si verificherà su ogni versione della piattaforma SonarQube in cui viene utilizzata questa versione. – benzonico

risposta

27

Questo messaggio di errore è in realtà completamente normale e previsto quando si esegue l'analisi con il plugin sonar-java 3.8 a causa del nuovo motore di esecuzione simbolico introdotto con questa versione.

(Quindi alla fine questo non dovrebbe essere un messaggio di errore ma piuttosto qualcosa visibile solo in modalità debug: https://jira.sonarsource.com/browse/SONARJAVA-1406 dovrebbe essere corretto nella prossima versione del plugin java).

Questo è innocuo per la tua analisi.

Che cosa significa?

Per due regole (S2259 sulle eccezioni nullpointer e S2583 sulle condizioni sempre vere o false) che usiamo esecuzione simbolica che esplorano tutti i possibili stati di un metodo per trovare i problemi. Questo finisce per esplorare un grande grafico di possibili stati (qui è semplificato, ma sufficiente per spiegazioni).

Questa esplorazione può essere enorme e come tale vi è un limite arbitrario: 10 000 passi. Quindi, quando non possiamo completare l'esecuzione simbolica, registriamo questo messaggio.

Concretamente: questo è un modo piuttosto indiretto per avvisare circa potenziali negativi su queste due regole su questo metodo.

+0

Grazie per la risposta! Tuttavia, la regola "condizioni sempre vere o false" sembra creare molti falsi positivi. Purtroppo non posso pubblicare un esempio qui poiché questo forum lo impedisce. –

+1

Potete raggiungerci su [email protected] per discutere di falsi positivi. Se coinvolge try/catch/finally: ne siamo già a conoscenza: http://stackoverflow.com/questions/34063605/java-plugin-3-8-s2583-false-positive/34068371?noredirect=1#comment55891107_34068371 e https://jira.sonarsource.com/browse/SONARJAVA-1295 – benzonico

+0

Ho dimenticato ieri dove si trova il pulsante di risposta accetta, ora l'ho trovato. Sì, almeno molti di questi falsi positivi sembrano essere correlati a try/catch/finally. Questa è una regola davvero interessante, quindi se funzionasse perfettamente dopo la correzione sarebbe fantastico. –

Problemi correlati