Al momento, non sono a conoscenza di uno strumento che supporti direttamente Linux. Per quello che vale, siamo comunque soddisfatti della nostra soluzione di copertura del codice che supporta il nostro framework Web e il server HTTP che funziona sia su Linux che su macOS.
Il nostro progetto basato su Swift Package Manager, Kitura, utilizza Travis CI per l'integrazione continua. Ogni build compilerà ed eseguirà i test su entrambi Linux e macOS. Eseguiamo anche una build notturna su Travis CI che genera dati di copertura, che vengono poi caricati su codecov.io per generare rapporti come questo.
Dietro le quinte, lo script di compilazione esegue swift package generate-xcodeproj
e poi xcodebuild test
con la copertura del codice abilitata. La copertura del codice viene eseguita solo nell'ambiente di compilazione macOS, che contiene xcodebuild
. Poiché i nostri percorsi di codice Linux e macOS sono molto simili, le statistiche sulla copertura sono abbastanza buone per i nostri scopi e stiamo ancora eseguendo test in modo indipendente per ciascun sistema operativo.
Questo è effettivamente possibile passando --enable-code-coverage
a swift test
$ swift test --enable-code-coverage
Ciò genererà un .xctest
pacchetto in .build/x86_64-unknown-linux/debug/
e un file profdata in .build/x86_64-unknown-linux/debug/codecov/
su Linux che puoi poi passare a llvm-cov
per generare un report.
ad esempio
$ llvm-cov report .build/x86_64-unknown-linux/debug/PredicatePackageTests.xctest -instr-profile=.build/x86_64-unknown-linux/debug/codecov/default.profdata -use-color
Che genererà un report come il seguente report:
Vedi llvm-cov report --help
per ulteriori informazioni, può persino produrre report HTML.