J'ai vu une question StackOverflow concernant l'analyse statique dans Scala, mais celle-ci a été répondue en 2009. Comme vous le savez, les outils Scala changent très rapidement.
Je me demandais donc si quelqu'un connaissant l'état actuel des outils d'analyse statique dans Scala pourrait me dire s'il y a, par exemple, un équivalent de Findbugs pour Scala. J'ai trouvé que Findbugs émet de nombreux avertissements inutiles pour Scala , probablement en rapport avec la façon dont le singleton "objet" se compile en bytecode, en raison de traits, etc. J'ai entendu dire que Scalastyle n'est pas seulement une version Scala de CheckStyle de Java, qu'il inclut également des morceaux de Findbugs et PMD. Mais s'il n'implémente pas tous les Findbugs et/ou PMD, y a-t-il d'autres outils qui le complètent? Ou, Scalastyle est-il bon non seulement pour la vérification de style, mais est-il bon pour améliorer la qualité du code?
Et qu'en est-il de l'intégration de Scala avec, disons, Sonar? Le plug-in Scala Sonar (qui fonctionne avec Scalastyle) est-il fiable?
Voici une réponse mise à jour en août 2014 pour certains qui visent ou fonctionnent bien avec Scala.
Personnellement, je pense que la JVM ou les Java uns finissent avec beaucoup trop de faux positifs, ou ont des inspections qui visent principalement Java des classes spécifiques. Par exemple, car dans Scala nous n'avons pas tendance à utiliser les collections Java, toutes les inspections basées sur la collection findbugs ne sont pas nécessaires. Un autre exemple est les inspections pour l'utilisation de champs statiques non pertinents dans Scala.
Le wartremover serait-il considéré comme une alternative? Aussi -Xlint
et -Ywarn-adapted-args
Les paramètres de ligne de commande de scalac peuvent aider à détecter certains types de bogues.
Codacy a développé un outil facile à personnaliser - scala-meta: https://github.com/codacy/codacy-scalameta
regarde
et je pense find-sec-bugs a un certain support pour scala
Selon Codacy, voici les outils (mis à jour jusqu'en octobre 2015)
Pourquoi n'aimez-vous pas utiliser un compilateur Scalac très puissant? Par exemple. il a quelques options utiles, par exemple.
...etc.