2016-01-05 14 views
8

Ich habe eine Swift-Funktion, für die Xcode 0 Passes in Code Coverage zeigt. Die Linie ist eine schließende Klammer (unten rot hervorgehoben).Warum zeigt eine schließende Klammer keine Codeabdeckung?

Ist das ein Fehler in Xcode? Wenn nicht, welche Bedingung muss ich treffen, um diese Linie zu führen? Ich dachte, ich würde alle Wege durch diese Methode abdecken.

Code with un-covered line

+0

Haben Sie jemals einen Weg gefunden, dieses Xcode-Problem zum Schweigen zu bringen? –

+0

@AdamJohns Ich habe es in letzter Zeit nicht gesehen - aber ich habe seit einiger Zeit nicht mehr an diesem Code gearbeitet. Sie sehen es immer noch mit Xcode 8? – Dov

Antwort

0

xcode Berichte beinhalten Messungen für die Beendigung Klammern, die nicht üblicherweise erwünscht ist. Es gibt nichts, was Sie in der Konfiguration tun können, um das zu beheben (soweit ich weiß).

(FD Ich arbeite bei Codecov) Sie können Codecov, eine gehostete Lösung verwenden, die diese zusätzlichen Zeilen automatisch entfernt. Erfahren Sie mehr unter https://github.com/codecov/example-xcode. Danke :)

+3

Aber warum passiert das nicht überall? Die meisten meiner Klassen und Funktionen sind bei 100% abgedeckt. – Dov

+2

Ausgezeichnete Frage, leider habe ich keine Antwort. –

+0

Ich bin auch darüber neugierig. – JerryZhou

0

Ziemlich sicher, das ist ein Fehler (Feature?) Von Xcode Code Coverage. Das Problem läuft darauf hinaus, dass die return-Anweisung es nicht erlaubt, auf die leere else-Anweisung zu fallen, wodurch angezeigt wird, dass der Code nicht ausgeführt wird. Die Return-Anweisungen werfen einen Haken in das, was sie tun, um die Codezeilen zu zählen.

In der Instanz Ihres try/catch-Blocks haben Sie nicht wirklich viel Auswahl, um die leere Ausführung zu verhindern.

Als ein Experiment, entfernen Sie die return-Anweisung und finden Sie eine bessere Möglichkeit, die writeToURL-Anweisung abzufangen, so dass sie nicht in einer error/catch-Anweisung ausgeführt wird. Dadurch erhalten Sie wahrscheinlich eine saubere Codeabdeckung für diese Leitung.

Verwandte Themen