Outils de couverture de code pour Scala

Quels sont les outils de couverture de code disponibles pour Scala?

J’ai des tests de spécification Scala et une configuration d’continuous integration Hudson. Y a-t-il quelque chose que je peux connecter à cette configuration pour mesurer et suivre la couverture du code?

SCCT est un plugin de compilateur qui instruit les classes pour collecter des données de couverture:

http://mtkopone.github.com/scct/

J’utilise Cobertura . Cependant, tout outil de couverture Java devrait fonctionner correctement. Le seul problème est que vous allez vous retrouver avec un grand nombre de classes générées automatiquement dans votre liste de couverture. En effet, bien que Scala se comstack en un bytecode JVM très naturel, il est obligé de produire un nombre anormalement élevé de classes pour prendre en charge les fonctionnalités fonctionnelles communes telles que l’évaluation différée.

Undercover est un peu mieux.

L’un des problèmes des langues non traditionnelles (telles que Scala) est que les outils sont difficiles à trouver, car ils sont difficiles à créer.

Ce document technique Couverture des langues arbitraires rendues faciles (je suis l’auteur) décrit comment créer des outils de couverture de test pour les langages de manière systématique afin de contourner ce problème, en utilisant une infrastructure générique de création d’outils.

Nous avons implémenté des outils de couverture de test pour Java, C #, COBOL, C, C ++, PL / SQL, de cette manière, y compris les instruments, la collecte de données et l’affichage de couverture de test. Il serait simple d’implémenter Scala comme ceci.

Les solutions apscopes par d’autres réponses produisent des informations confuses à partir de la mise en œuvre de Scala (“classes auto-génésées”). Ce que les développeurs veulent voir, ce sont les données de couverture en termes de code. L’approche que nous utilisons d’instruments le code source, de sorte que les résultats sont énoncés entièrement et uniquement en termes de code source; Même le visualiseur de couverture de test affiche le code source couvert par les informations de couverture.

J’ai mis en place un plugin SBT appelé xsbt-coveralls-plugin qui utilise scct sous le capot, mais publie les résultats sur http://coveralls.io .

Clause de non-responsabilité: je viens juste de construire ce plugin hier (10 mars 2013), alors ne vous attendez pas à ce qu’il soit parfait, mais envoyez des requêtes de bogues et de fonctionnalités à la page github.

Cependant, il est bon que vous souhaitiez que les rapports de couverture soient visibles publiquement. Découvrez un exemple des résultats ici

J’utilise le jacoco. Il ne nécessite pas de dépendance à la compilation ou à l’exécution, des classes d’instruments à la volée sans phase d’instrumentation spéciale.

Il a également intégré avec Sonar et publié sur Maven Central.

Voici l’exemple: https://github.com/Godin/sonar-experiments/tree/master/jacoco-examples/scala-example

Je voudrais append de meilleurs rapports: makrup de couverture de succursale plus détaillée, à l’exclusion des classes / méthodes générées, et pour être pratique comme ScalaDoc (voir les rapports SCCT par exemple)