GNU/Linux >> Tutoriels Linux >  >> Linux

Comment puis-je générer une couverture de code pour les packages Swift sous Linux ou OS X ?

Pour le moment, je ne connais pas d'outil prenant directement en charge Linux. Pour ce que ça vaut, nous sommes toujours satisfaits de notre solution de couverture de code qui prend en charge notre infrastructure Web et notre serveur HTTP qui s'exécute à la fois sur Linux et macOS.

Notre projet basé sur Swift Package Manager, Kitura, utilise Travis CI pour une intégration continue. Chaque build compilera et exécutera des tests sur les deux Linux et macOS. Nous exécutons également une version nocturne sur Travis CI qui génère des données de couverture, qui sont ensuite téléchargées sur codecov.io pour générer des rapports comme celui-ci.

Sous les couvertures, le script de construction exécute swift package generate-xcodeproj puis xcodebuild test avec la couverture de code activée. La couverture de code ne s'exécute que sur l'environnement de construction macOS, qui contient xcodebuild . Étant donné que nos chemins de code Linux et macOS sont très similaires, les statistiques de couverture sont suffisamment bonnes pour nos besoins, et nous exécutons toujours des tests indépendamment pour chaque système d'exploitation.


Ceci est en fait possible en passant --enable-code-coverage à swift test

$ swift test --enable-code-coverage

Cela générera un .xctest bundle en .build/x86_64-unknown-linux/debug/ et un fichier profdata en .build/x86_64-unknown-linux/debug/codecov/ sous Linux que vous pouvez ensuite transmettre à llvm-cov pour générer un rapport.

ex.

$ llvm-cov report .build/x86_64-unknown-linux/debug/PredicatePackageTests.xctest -instr-profile=.build/x86_64-unknown-linux/debug/codecov/default.profdata -use-color

Ce qui générera un rapport comme le rapport suivant :

Voir llvm-cov report --help pour plus d'informations, il peut même produire des rapports HTML.


Linux
  1. Trouver des packages pour Kali Linux

  2. Comment puis-je générer une liste de fichiers avec leur chemin absolu sous Linux ?

  3. Comment puis-je reprendre une tâche arrêtée sous Linux ?

  4. Comment un noyau Linux peut-il être si petit ?

  5. Comment puis-je rechercher un nom d'utilisateur par identifiant sous Linux?

Comment installer Anaconda sur Linux

Comment répertorier les packages installés sous Linux

Comment installer Setuptools pour Python sur Linux

10 exemples d'exclusion Yum pour ignorer les packages pour la mise à jour Linux Yum (Comment exclure les mises à jour du noyau Yum)

Comment puis-je profiler du code C++ exécuté sous Linux ?

Comment générer des données netflow sous Linux