Hat Swift ein #warning-Äquivalent? Es wird einfach verwendet, um eine Warnung in der Xcode-eigenen GUI anzuzeigen
Ich bin auch daran interessiert, ob es ein # Fehler-Äquivalent gibt.
Apple hat gesagt, dass die # Pragma-Marke bald kommt, dies könnte möglicherweise auch so sein.
//WARNING
gehe davon aus, dass es genauso sein wird wie #pragma,//MARK
aber derzeit wird keines von beiden zur XCode-Beta hinzugefügt.Antworten:
In Zukunft werden Apple-Entwickler möglicherweise einen
//WARNING:
Orientierungspunkt veröffentlichen oder die Funktionalität für einen anderen benannten Orientierungspunkt bereitstellen.Um diese Funktionalität heute mit Swift in Xcode aufzurufen, können Sie jedoch die folgenden Schritte ausführen, wie von Ben Dodson & Jeffrey Sambells beschrieben:
Fügen Sie der Registerkarte "Erstellungsphasen" Ihres Ziels ein neues Ausführungsskript hinzu (Projekteinstellungen> Erstellungsphasen> '+'> Neue Ausführungsskriptphase) und fügen Sie den folgenden Code in das leere Feld ein:
Dadurch wird Xcode gezwungen, beim Kompilieren eine Warnung für alle
// TODO:
oder von// FIXME:
Ihnen markierten Kommentare zu kennzeichnen.Alternativ können Sie TAGS mit einem benutzerdefinierten Tag ändern:
TAGS="WARNING:"
im obigen Code, der das Standardverhalten für TODO & FIXME beibehält und eine Warnung zur Kompilierungszeit für alle Kommentare auslöst, die als gekennzeichnet sind// WARNING:
.http://bendodson.com/weblog/2014/10/02/showing-todo-as-warning-in-swift-xcode-project/ http://jeffreysambells.com/2013/01/31/generate-xcode- Warnungen von Aufgabenkommentaren
EDIT: 18/11/14
@ David-h hat in seinem Kommentar einen guten Punkt angesprochen. Wenn Sie diese Warnungen nur in einer bestimmten Build-Konfiguration auslösen möchten, können Sie Folgendes tun:
Alternativ können Sie "Release" anstelle von "Debug" verwenden, um nur auf Produktions-Builds abzuzielen.
quelle
-type f
demfind
Befehl die Option hinzufügen , um Verzeichnisse von den Suchergebnissen auszuschließen. Dies sollte für die meisten Menschen kein Problem sein, aber jeder, der denR.swift
Pod verwendet, wird auf den gleichen Fehler stoßen, den ich hatte, weilR.swift
es sich um ein Verzeichnis handeltBearbeiten
Ab Swift 4.2 ist die Unterstützung auf Sprachebene sowohl für Build-Warnungen als auch für Fehler verfügbar.
Ursprüngliche Antwort
Schnell, schmutzig und ach so elegant einfach zugleich.
Wirft eine Warnung aus, dass 'FIX_ME__🛠🛠🛠' nie verwendet wurde.
Sie können dem Variablennamen Emoticons hinzufügen, wenn Sie möchten ... Ich verwende oft 😱 und 🛠 für etwas, das wirklich repariert werden muss, was ich sogar in Betracht ziehen würde 💩. Sie können ersetzen
FIX_ME__
mit dem, was Sie wollen:ALGORITHM_NEEDS_REVIEW
,BugID_148
oderJOHNNY_YOU_BROKE_THIS
sind einige Beispiele.Schnell, ohne Setup, präzise und Emoticons können Sie Ihrem Code sogar Humor / Persönlichkeit verleihen. Manchmal ist die einfachste Lösung die beste Lösung.
quelle
let fixMeMakeMeNonOptional: Int
Sie werdenImmutable value fixMeMakeMeNonOptional was never used; consider replacing with _ or removing it
im Issue-Navigator angezeigt. Alle anderen Lösungen geben Ihnen viel allgemeinere Fehlermeldungen.Post WWDC 2018 Update
Ab Xcode 10 und Swift 4.2 können Sie nun
#warning
wie folgt wieder verwenden:Dies wird wie erwartet als Warnung in Xcode angezeigt!
Dies funktioniert auch in Kombination mit
#if
Überprüfungen. Im Folgenden wird beispielsweise nur dann eine Warnung angezeigt, wenn Ihre Zielplattform iOS ist:Es gibt auch,
#error
wenn Sie möchten, dass Ihr Build fehlschlägt.Antwort vor WWDC 2018
In Swift mit XCode 6 können Sie verschiedene Arten von Orientierungspunkten für verschiedene Zwecke verwenden. Folgendes sagt Apple dazu:
Zum Setzen einer Warnung mit einer Beschreibung würden Sie also Folgendes verwenden:
//TODO: Clean up this code after testing
Wenn Sie nur eine kurze Markierung setzen möchten (vorausgesetzt, Sie werden sich daran erinnern, was zu tun ist), verwenden Sie Folgendes:
//FIXME
BEARBEITEN: Diese Orientierungspunkte werden jedoch nur in der Sprungleiste von XCode angezeigt. Dies ist möglicherweise nicht das, was Sie sich wünschen und was Sie erwarten würden - insbesondere von den Markierungen // TODO: und // FIXME. Ich habe ein Radar dazu eingereicht: # 17776817. Hoffentlich wird Apple dies in den kommenden Builds in XCode 6 hinzufügen.
LÖSUNG (BEARBEITEN 2): Wenn Sie den Swift Linter über Homebrew installieren (
brew install swiftlint
nach a ausführenbrew update
) und das vorgeschlagene Build-Skript zu Ihrem Projekt hinzufügen , werden alle IhreTODO
undFIXME
Orientierungspunkte als Warnungen in Xcode angezeigt. SwiftLint fügt sogar einige weitere Warnungen / Fehler hinzu, die Sie entsprechend Ihren Anforderungen konfigurieren können. Ich kann die Verwendung von SwiftLint nur empfehlen und es löst dieses Problem auf großartige Weise!quelle
Noch nicht vom Apple-Team hinzugefügt. Was ich beschlossen habe, ist wahrscheinlich ein Betrug, aber zumindest zeigt es mir eine FIXME-Nachricht. Ich deklariere also die Funktion FIXME () in der Swift-Datei:
und wenn ich es von einer anderen Funktion aus aufrufe, wird eine Warnung angezeigt, z
Für Swift 2 verwenden
quelle
Schauen Sie sich diesen Artikel an .
Sie können Ihr eigenes Skript schreiben, das alle Tags hervorhebt.
Dies führt zu:
quelle
egrep --directories='skip'
, um Verzeichnisse mit Namen wie Device.swiftWenn Sie alternativ möchten, dass etwas im Warnfenster angezeigt wird, können Sie Folgendes schreiben:
Sie können nicht wirklich Text anzeigen lassen, aber es ist zumindest eine sichtbarere Markierung, insbesondere wenn Sie dazu neigen, (die meisten) Warnungen wie Fehler zu behandeln.
quelle
Ich habe diese Funktion vorgeschlagen und implementiert und sie wird mit Swift 4.2 ausgeliefert. Sie können es jetzt verwenden, indem Sie die
master
Toolchain auf swift.org herunterladen .quelle
Ein CocoaPod, den ich verwendete, hatte
.swift
seinen Namen, daher wurde ein Verzeichnis zurückgegeben, das das Skript von Kyle zum Absturz brachte. Das Hinzufügen-type f
zumfind
Befehl behebt dieses Problem, indem nur übereinstimmende Dateien angezeigt werden,*.swift
anstatt auch Verzeichnisse zurückzugeben, die dem Muster entsprechen.Letzter Code, den ich verwendet habe:
quelle
Wenn Sie Ihr Build-Setup nicht anpassen möchten, können Sie auch einen Platzhalter für den Editor vor den Kommentar setzen:
Beim Erstellen wird der Fehler "Editor-Platzhalter in Quelldatei" angezeigt. Im Gegensatz zu Jordans Lösung gibt es jedoch keinen Live-Fehler, der Sie beim Tippen stört:
quelle
Nach langem Suchen und Sehnsucht bin ich überzeugt, dass es keine solche Einheit gibt. Ich bin immer noch zuversichtlich, dass die neuesten Xcode-Versionshinweise das anhaltende Fehlen eines # Pragma-Markierungsmechanismus erwähnen. Möglicherweise kommen auch #Warnung und #Fehler hinzu.
Abgesehen davon empfehle ich dringend, ein Radar bei Apple unter bugreport.apple.com einzureichen , um diese Funktionalität hinzuzufügen (Sie können 17702491 betrügen).
quelle
Wir haben ein konfigurierbares Tool geschrieben, mit dem Sie Warnungen und Fehler in Xcode Issue Navigator basierend auf dem Kommentar-Tag und der Build-Konfiguration einfügen können : https://github.com/doubleencore/XcodeIssueGenerator
Es installieren:
Fügen Sie dann eine Zeile in eine Run Script Build-Phase ein:
Hier ist ein Artikel, der beschreibt, wie wir es verwenden.
quelle
Ich komme möglicherweise zu spät zur Party, da Xcode 10 Fehler und Warnungen unterstützt, aber einfach einen String eingefügt:
wird eine Warnung
String literal is unused
ausgeben : Die automatische Vervollständigung funktioniert noch und das Projekt wird noch kompiliert.quelle
Meine Antwort ist nicht ganz zufrieden mit Ihrer Frage, aber wenn Sie etwas Einfaches wollen, können Sie dieses Plugin von alcatraz verwenden, das in allen Projekten ohne zusätzliche Vorbereitungen funktioniert. Gehen Sie einfach wie folgt vor:
Es gibt auch Einstellungen zum Hinzufügen neuer Tags
quelle
Vorteil dieses Snippets - es werden keine Warnungen von Pods angezeigt:
Wie installiert man:
quelle