Umfassende Code-Abdeckungsberichte in Go
In der Go-Entwicklung ist das Abrufen einzelner Paketabdeckungsberichte mithilfe des Flags -cover ganz einfach. Es kann jedoch schwierig sein, einen ganzheitlichen Überblick über die Abdeckung über mehrere Pakete hinweg zu erhalten.
Um dieses Problem zu beheben, wurde mit Go 1.10 eine deutliche Verbesserung bei der Codeabdeckungsberichterstattung eingeführt. Das Flag -coverpkg akzeptiert jetzt eine durch Kommas getrennte Liste von Mustern, die mit Paketabhängigkeiten abgeglichen werden sollen, sodass Sie bestimmte Bereiche für die Abdeckungsanalyse gezielt ansprechen können.
Um einen umfassenden Abdeckungsbericht zu erstellen, können Sie jetzt die folgenden Befehle ausführen:
go test -v -coverpkg=./... -coverprofile=profile.cov ./... go tool cover -func profile.cov
Dieser Ansatz sammelt Abdeckungsdaten für alle Pakete, die dem ./...-Muster entsprechen, und generiert einen konsolidierten Bericht, der eine detaillierte Abdeckung enthält Informationen.
Legacy-Lösung für ältere Go-Versionen
Vor Go 1.10 erforderte das Erhalten umfassender Abdeckungsberichte einen anderen Ansatz. Eine solche in Bash implementierte Lösung finden Sie im Gosweep-Projekt auf GitHub:
#!/bin/bash set -e echo 'mode: count' > profile.cov for dir in $(find . -maxdepth 10 -not -path './.git*' -not -path '*/_*' -type d); do if ls $dir/*.go > /dev/null; then go test -short -covermode=count -coverprofile=$dir/profile.tmp $dir if [ -f $dir/profile.tmp ] then cat $dir/profile.tmp | tail -n +2 >> profile.cov rm $dir/profile.tmp fi fi done go tool cover -func profile.cov
Dieses Skript sucht rekursiv nach Verzeichnissen, die Go-Pakete enthalten, führt Go-Tests mit aktivierter Abdeckung aus und aggregiert die einzelnen Abdeckungsberichte in eine einzelne Datei „profile.cov“ umwandeln. Nachdem Sie die Abdeckungsdaten generiert haben, können Sie mit go tool cover -func profile.cov einen detaillierten Bericht anzeigen.
Das obige ist der detaillierte Inhalt vonWie kann ich in Go umfassende Code-Coverage-Berichte erstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!