Frage

Gibt es irgendwelche Werkzeuge zur Durchführung einer statischen Analyse von Scala-Code, ähnlich wie FindBugs und PMD für Java oder Splint für C / C ++? Ich weiß, dass FindBugs Arbeiten an der Bytecode durch Kompilieren Java produziert, also bin ich gespannt, wie es auf Scala funktionieren würde.

Google-Suchen (Stand: 27. Oktober 2009) zeigen sehr wenig.

Google-Suchen (Stand: 1. Februar 2010) offenbaren diese Frage.

War es hilfreich?

Lösung

FindBugs Analysen JVM Bytecode, unabhängig von dem Werkzeug, das sie erzeugt. Ich habe versucht, FindBugs mit Dateien, die von Scala erzeugt überprüfen .class-. Leider FindBugs produziert viele Warnungen, auch für triviale Scala-Programme.

Andere Tipps

Es gibt jetzt Scalastyle, die die Arbeit erledigt, dass Check für Java tut. Dazu gehört nicht nur überprüft die Formatierung, sondern auch einige Prüfungen für bekannte Quellen von Fehlern, wie eine Klasse, die implementiert hashCode (), aber nicht gleich.

Es gibt zur Zeit etwa 40 Kontrollen, aber wir fügen sie die ganze Zeit.

Weitere Informationen finden Sie unter www.scalastyle.org .

Es gibt einige Arbeiten in diese Richtung geht. Einige Links:

Es gibt auch eine Diskussion über die scala Mail-Liste, verfügbar Archiv hier .

Hier ist eine aktualisierte Antwort ab August 2014 für einige, die zum Ziel haben oder arbeiten gut mit Scala.

Ich persönlich denke, die JVM oder Java solche mit viel zu viele Fehlalarme am Ende, oder haben Kontrollen, die vor allem auf Java spezifische Klassen ausgerichtet sind. Da zum Beispiel in Scala wir die Java Collections, alle die findbugs Sammlung bezogene Inspektionen nicht dazu neigen, zu verwenden ist nicht erforderlich. Ein weiteres Beispiel ist die Kontrollen für den Einsatz von statischen Feldern, die in Scala irrelevant sind.

Findbugs und andere Tools, die Bytecode basieren funktionieren wird, in dem Sinne, dass sie Fehler im Code finden. Leider haben die Bytecode-basierte Ansätze gegen den Ausgang der javac Compiler abgestimmt worden ist, das heißt, sie sind wahrscheinlich sehr hohe falsch positiven Raten zu produzieren, und verpassen grundlegenden Fragen, weil Scala werden verschiedene Idiome als der javac Compiler produzieren.

Ich habe viel Spaß mit Codacy (zB https: // www. codacy.com/app/hejfelix/Frase/dashboard ) für Open-Source-Projekte

Es gibt einen SBT für PMD-Plugin kopieren Detektor CPD einfügen.

https://github.com/sbt/cpd4sbt

scala Kopie Paste Detektor, basierend auf AST. Such nach copy-klebte Teilbäumen / Ästen und informiert darüber.

Es ist Plugin für SBT.

https://github.com/ajtkulov/scala-cpd

Ich weiß nicht viel über Scala, aber wenn ist Java kompatibel Klocwork Solo Produkt funktionieren könnte. Sie können es hier finden Klocwork Solo

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top