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.