Apakah Swift setara dengan #warning? Ini hanya digunakan untuk menampilkan peringatan di GUI Xcode sendiri
Saya juga tertarik pada apakah ada yang setara dengan #error.
Apple mengatakan tanda #pragma akan segera hadir, mungkin bisa sama dengan ini.
//WARNING
seperti #pragma akan//MARK
tetapi saat ini keduanya tidak ditambahkan ke XCode beta.Jawaban:
Di masa depan, Apple devs mungkin akan merilis
//WARNING:
landmark, atau menyediakan fungsionalitas untuk landmark lain.Untuk meningkatkan fungsi ini dengan Swift di Xcode hari ini, Anda dapat melakukan hal berikut seperti yang dijelaskan oleh Ben Dodson & Jeffrey Sambells:
Tambahkan Run Script baru ke tab fase pembuatan target Anda (pengaturan proyek> build fase> '+'> fase skrip jalankan baru), dan rekatkan kode berikut dalam kotak kosong:
Ini akan memaksa Xcode untuk menandai peringatan pada waktu kompilasi untuk setiap
// TODO:
atau// FIXME:
komentar yang Anda markup.Atau, Anda dapat mengubah TAG dengan tag khusus:
TAGS="WARNING:"
dalam kode di atas yang akan menjaga perilaku default untuk TODO & FIXME dan akan meningkatkan waktu kompilasi peringatan pada setiap komentar yang ditandai sebagai komentar// WARNING:
.http://bendodson.com/weblog/2014/10/02/showing-todo-as-warning-in-swift-xcode-project/ http://jeffreysambells.com/2013/01/31/generate-xcode- peringatan-dari-todo-komentar
EDIT: 18/11/14
@ david-h mengangkat poin yang baik dalam komentarnya. Jika Anda hanya ingin meningkatkan peringatan ini dalam konfigurasi bangunan tertentu, Anda dapat melakukan hal berikut:
Atau, Anda bisa menggunakan "Rilis" daripada "Debug" untuk hanya menargetkan membangun produksi.
sumber
-type f
opsi kefind
perintah untuk mengecualikan direktori dari hasil pencarian. Ini seharusnya tidak menjadi masalah bagi kebanyakan orang, tetapi siapa pun yang menggunakanR.swift
pod akan mengalami kesalahan yang sama dengan yang saya miliki karenaR.swift
merupakan direktoriEdit
Pada Swift 4.2, dukungan tingkat bahasa tersedia untuk peringatan dan kesalahan bangun.
Jawaban Asli
Cepat, kotor, dan oh begitu sederhana dan elegan sekaligus.
Melemparkan peringatan bahwa 'FIX_ME__🛠🛠🛠' tidak pernah digunakan.
Anda dapat menambahkan emotikon ke nama variabel jika Anda suka ... Saya sering menggunakan 😱 dan 🛠, untuk sesuatu yang benar-benar perlu diperbaiki, saya bahkan mempertimbangkannya 💩. Anda dapat mengganti
FIX_ME__
dengan apa pun yang Anda inginkan:ALGORITHM_NEEDS_REVIEW
,BugID_148
, atauJOHNNY_YOU_BROKE_THIS
adalah beberapa contoh.Cepat, tanpa pengaturan, ringkas, dan emotikon bahkan dapat menambahkan humor / kepribadian pada kode Anda. Terkadang solusi yang paling sederhana adalah solusi terbaik.
sumber
let fixMeMakeMeNonOptional: Int
memberi AndaImmutable value fixMeMakeMeNonOptional was never used; consider replacing with _ or removing it
di navigator masalah. Semua solusi lain memberi Anda lebih banyak pesan kesalahan umum.Posting Pembaruan WWDC 2018
Dimulai dengan Xcode 10 dan Swift 4.2 Anda sekarang dapat menggunakan
#warning
lagi seperti:Ini akan muncul sebagai peringatan di Xcode seperti yang diharapkan!
Ini berfungsi bahkan dalam kombinasi dengan
#if
cek, misalnya yang berikut ini hanya akan menampilkan peringatan jika platform target Anda adalah iOS:Ada juga
#error
jika Anda ingin bangunan Anda gagal.Pra WWDC 2018 Jawaban
Di Swift menggunakan XCode 6 Anda dapat menggunakan berbagai jenis landmark untuk tujuan yang berbeda. Inilah yang dikatakan Apple tentang hal itu:
Jadi untuk mengatur peringatan dengan deskripsi, Anda akan menggunakan sesuatu seperti ini:
//TODO: Clean up this code after testing
Jika Anda hanya ingin menetapkan tanda pendek (dengan asumsi Anda akan ingat apa yang harus dilakukan), gunakan ini:
//FIXME
EDIT: Namun landmark ini hanya muncul di bar lompat XCode yang mungkin bukan yang Anda inginkan dan apa yang diharapkan - terutama dari tanda // TODO: dan // FIXME. Saya telah mengajukan radar tentang itu: # 17776817. Semoga Apple akan menambahkan ini di build mendatang di XCode 6.
SOLUSI (EDIT 2): Jika Anda menginstal Swift Linter via Homebrew (jalankan
brew install swiftlint
setelah abrew update
) dan menambahkan skrip build yang disarankan ke proyek Anda, maka Anda akan melihat semua landmark AndaTODO
danFIXME
muncul sebagai peringatan dalam Xcode. SwiftLint bahkan akan menambahkan lebih banyak peringatan / kesalahan yang dapat Anda konfigurasi agar sesuai dengan kebutuhan Anda - saya hanya dapat merekomendasikan menggunakan SwiftLint dan itu memecahkan masalah ini dengan cara yang hebat!sumber
Masih belum ditambahkan oleh tim Apple. Apa yang saya putuskan untuk lakukan mungkin curang, tetapi setidaknya itu menunjukkan kepada saya pesan FIXME. Jadi yang saya lakukan adalah mendeklarasikan fungsi FIXME () dalam file Swift:
dan ketika saya memanggilnya dari fungsi lain itu tidak menunjukkan peringatan, misalnya
Untuk penggunaan Swift 2
sumber
Lihatlah artikel ini .
Anda dapat menulis skrip Anda sendiri yang akan menyorot semua tag.
Ini menghasilkan:
sumber
egrep --directories='skip'
untuk mengabaikan direktori dengan nama-nama seperti Device.swiftSebagai alternatif, jika Anda ingin sesuatu muncul di panel peringatan, Anda dapat menulis sesuatu seperti:
Anda tidak dapat menampilkan teks apa pun, tetapi setidaknya itu adalah penanda yang lebih terlihat, terutama jika Anda cenderung memperlakukan (kebanyakan) peringatan seperti kesalahan.
sumber
Saya mengusulkan dan mengimplementasikan fitur ini, dan fitur ini akan dikirimkan bersama Swift 4.2. Anda dapat menggunakannya sekarang dengan mengunduh
master
toolchain di swift.org .sumber
Satu CocoaPod yang saya gunakan ada
.swift
di namanya, jadi direktori dikembalikan, yang menyebabkan script oleh Kyle mogok. Menambahkan-type f
kefind
perintah memperbaiki masalah itu dengan hanya melihat file yang cocok*.swift
bukan juga kembali direktori yang cocok dengan pola.Kode terakhir yang saya gunakan:
sumber
Jika Anda enggan untuk menyesuaikan pengaturan bangunan Anda, obat rumah sederhana lainnya adalah menempelkan placeholder editor di depan komentar:
Anda mendapatkan kesalahan "Editor placeholder dalam file sumber" saat membuat, tetapi tidak seperti solusi Jordan, tidak ada kesalahan langsung yang mengganggu Anda saat mengetik:
sumber
Setelah banyak pencarian dan kerinduan, saya yakin tidak ada entitas seperti itu. Saya masih berharap dengan catatan rilis Xcode terbaru yang menyebutkan masih kurangnya mekanisme tanda #pragma, #warning dan #error juga akan datang.
Selain itu, saya sangat merekomendasikan pengarsipan Radar dengan Apple di bugreport.apple.com untuk menambahkan fungsi ini (Anda dapat menipu 17702491).
sumber
Kami menulis alat yang dapat dikonfigurasi yang memungkinkan Anda menaruh peringatan dan kesalahan di Xcode Issue Navigator berdasarkan tag komentar dan membangun konfigurasi: https://github.com/doubleencore/XcodeIssueGenerator
Pasang itu:
Kemudian masukkan baris dalam Fase Pembuatan Skrip Run:
Inilah artikel yang menjelaskan bagaimana kami menggunakannya.
sumber
Saya mungkin terlambat ke pesta dengan Xcode 10 mendukung kesalahan dan peringatan, tetapi hanya meletakkan String:
akan menghasilkan peringatan:
String literal is unused
dengan pelengkapan otomatis masih berfungsi dan proyek masih dikompilasi.sumber
Jawaban saya tidak cukup memuaskan pertanyaan Anda, tetapi jika Anda ingin sesuatu yang mudah Anda dapat menggunakan ini plugin alcatraz yang bekerja di semua proyek tanpa persiapan tambahan. Lakukan saja yang berikut ini:
Itu juga memiliki preferensi untuk menambahkan tag baru
sumber
Keuntungan potongan ini - tidak menunjukkan peringatan dari Pods:
Bagaimana cara meng-install:
sumber