Question

Y a-t-il des outils pour effectuer une analyse statique du code Scala, semblable à FindBugs et PMD pour Java ou Splint pour C / C ++? Je sais que fonctionne FindBugs sur le bytecode produit par la compilation de Java, donc je suis curieux de savoir comment cela fonctionnerait sur Scala.

recherches Google (au 27 Octobre 2009) révèlent très peu.

recherches Google (01 Février en date du 2010) révèlent cette question.

Était-ce utile?

La solution

analyse FindBugs codes d'octets JVM, quel que soit l'outil qui les a générés. Je l'ai essayé d'utiliser FindBugs pour vérifier les fichiers .class générés par Scala. Malheureusement, FindBugs produit de nombreux avertissements, même pour les programmes triviales Scala.

Autres conseils

Il est maintenant Scalastyle qui fait le travail que fait Checkstyle pour Java. Cela inclut non seulement le formatage des chèques, mais aussi des contrôles pour les sources connues de bugs, comme une classe qui implémente hashCode () mais pas égale.

Il y a actuellement environ 40 chèques, mais nous les ajouter tout le temps.

Pour plus d'informations, consultez www.scalastyle.org .

Il y a des travaux en cours dans cette direction. Quelques liens:

Il y a aussi une discussion sur la liste de courrier scala, archive disponible ici .

Voici une réponse mise à jour en date du Août 2014 pour certains qui ont pour but ou bien travailler avec Scala.

Personnellement, je pense que les JVM Java ou finissent avec beaucoup trop de faux positifs ou des inspections qui sont destinés principalement aux classes Java spécifiques. Par exemple, puisque dans Scala nous tendance à ne pas utiliser les collections Java, toutes les inspections portant sur la collecte de findbugs ne sont pas nécessaires. Un autre exemple est le contrôle de l'utilisation des champs statiques qui ne sont pas pertinents dans Scala.

Findbugs et d'autres outils qui sont basés bytecode fonctionnera, dans le sens où ils trouveront des défauts dans votre code. Malheureusement, les approches fondées sur bytecode ont été réglés avec la sortie des compilateurs javac, ce qui signifie qu'ils sont susceptibles de produire des taux de faux positifs très élevés, et de manquer des questions de base, parce que Scala produira différents idiomes que le compilateur javac.

Je vais avoir beaucoup de plaisir avec Codacy (par exemple https: // www. codacy.com/app/hejfelix/Frase/dashboard ) pour les projets Open Source

Il existe un plugin pour SBT PMD copie DPC détecteur de pâte.

https://github.com/sbt/cpd4sbt

scala détecteur de copier coller, sur la base AST. Vous cherchez des sous-arbres collé-copie / RSHS, et en informer.

Il est plug-in pour SBT.

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

Je ne sais pas grand-chose à propos de Scala, mais si le produit est Solo Java compatible Klocwork pourrait fonctionner. Vous pouvez le trouver ici Klocwork Solo

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top