2009-10-21 11 views
46

Esistono strumenti per eseguire analisi statiche del codice Scala, simili a FindBugs e PMD per Java o Splint per C/C++? So che FindBugs funziona sul bytecode prodotto dalla compilazione di Java, quindi sono curioso di sapere come funziona su Scala.Esistono strumenti per eseguire analisi statiche del codice Scala?

Le ricerche Google (a partire dal 27 ottobre 2009) rivelano molto poco.

Le ricerche di Google (al 1 ° febbraio 2010) rivelano questa domanda.

+1

Che tipo di insetti, oltre a quelli che il compilatore è già alla ricerca di? –

+1

Non proprio - ciò che il compilatore può trovare lo posso trovare facilmente anche. Quello che sto cercando è "codice morto", variabili inizializzate non necessarie, ecc. Per ulteriori analisi statiche date un'occhiata a http://findbugs.sourceforge.net/ –

+1

Buona fortuna nella vostra ricerca, ma analizzatori del tipo di FindBugs rappresentano un sacco di lavoro e Scala potrebbe essere una lingua troppo giovane per averne ancora. –

risposta

20

FindBugs analizza i codici byte JVM, indipendentemente dallo strumento che li ha generati. Ho provato a usare FindBugs per controllare i file .class generati da Scala. Sfortunatamente, FindBugs ha prodotto molti avvertimenti, anche per programmi di Scala banali.

+1

Non è adatto per Scala a causa della concentrazione sugli aspetti specifici dell'SDK Java, sebbene con l'enorme quantità di falsi positivi (tutti in IMO) – monkjack

-2

Non so molto di Scala, ma se è prodotto solo Java compatibile del Klocwork potrebbe funzionare. Puoi trovarlo qui Klocwork Solo

+2

perché questa è la risposta accettata? Non riesco a trovare alcuna prova che Klocwork 'risolva' i problemi che hai avuto con Findbugs ...? – p3t0r

7

Findbugs e altri strumenti che sono bytecode base funziona, nel senso che essi trovare difetti nel codice. Sfortunatamente, gli approcci basati su bytecode sono stati messi a confronto con l'output dei compilatori javac, il che significa che potrebbero produrre percentuali di falsi positivi molto alti e mancare di problemi di base, perché Scala produrrà diversi idiomi rispetto al compilatore javac.

17

Ora c'è Scalastyle che fa il lavoro che fa per Checkstyle Java. Questo include non solo i controlli di formattazione, ma anche alcuni controlli per le fonti conosciute di bug, come una classe che implementa hashCode() ma non è uguale.

Al momento non ci sono circa 40 controlli, ma stiamo aggiungendo loro tutto il tempo.

Per ulteriori informazioni, vedere www.scalastyle.org.

8

Qui è una risposta aggiornata a partire da agosto 2014 per alcuni che hanno lo scopo o funziona bene con Scala.

Personalmente penso che quelli JVM o Java finiscano con troppi falsi positivi, o che abbiano ispezioni rivolte principalmente a classi specifiche di Java. Ad esempio, poiché in Scala non tendiamo ad utilizzare le Collezioni Java, non sono necessarie tutte le ispezioni basate sulla raccolta di findbugs. Un altro esempio sono le ispezioni per l'uso di campi statici che sono irrilevanti in Scala.

Problemi correlati