Есть ли у Свифта эквивалент #warning? Он просто используется для отображения предупреждения в собственном графическом интерфейсе XCode
Меня также интересует, есть ли эквивалент #error.
Apple заявила, что скоро появится марка #pragma, возможно, с этим может быть то же самое.
//WARNING
же, как #pragma,//MARK
но в настоящее время ни один из них не добавлен в бета-версию XCode.Ответы:
В будущем разработчики Apple вполне могут выпустить
//WARNING:
ориентир или предоставить функциональность другому названному ориентиру.Однако, чтобы сегодня задействовать эту функциональность с помощью Swift в Xcode, вы можете сделать следующее, как обрисовано в общих чертах Беном Додсоном и Джеффри Сэмбелсом:
Добавьте новый сценарий запуска на вкладку этапов сборки целевого объекта (настройки проекта> этапы сборки> '+'> этап создания нового сценария выполнения) и вставьте следующий код в пустое поле:
Это заставит Xcode пометить предупреждение во время компиляции для любой разметки
// TODO:
или// FIXME:
комментариев.В качестве альтернативы, вы можете изменить TAGS с помощью пользовательского тега:
TAGS="WARNING:"
в приведенном выше коде, который сохранит поведение по умолчанию для TODO & FIXME и вызовет предупреждение о времени компиляции для любых комментариев, помеченных как// WARNING:
.http://bendodson.com/weblog/2014/10/02/showing-todo-as-warning-in-swift-xcode-project/ http://jeffreysambells.com/2013/01/31/generate-xcode- предупреждения-из-ToDo-комментарий
РЕДАКТИРОВАТЬ: 18/11/14
@ david-h поднял хорошую мысль в своем комментарии. Если вы хотите выдавать эти предупреждения только в конкретной конфигурации сборки, вы можете сделать следующее:
В качестве альтернативы вы можете использовать «Release» вместо «Debug» только для целевых сборок.
источник
-type f
опцию вfind
команду, чтобы исключить каталоги из результатов поиска. Это не должно быть проблемой для большинства людей, но любой, кто используетR.swift
модуль, столкнется с той же ошибкой, что и я, потому чтоR.swift
это каталогредактировать
Начиная с Swift 4.2, поддержка языкового уровня доступна как для предупреждений сборки, так и для ошибок.
Оригинальный ответ
Быстро, грязно, и о, так элегантно просто все одновременно.
Выдает предупреждение, что 'FIX_ME__🛠🛠🛠' никогда не использовался.
Вы можете добавить смайлики к имени переменной, если хотите ... Я часто использую 😱 и 🛠, для чего-то, что действительно нуждается в исправлении, я бы даже подумал 💩. Вы можете заменить
FIX_ME__
с тем, что вы хотите:ALGORITHM_NEEDS_REVIEW
,BugID_148
илиJOHNNY_YOU_BROKE_THIS
некоторые примеры.Быстрый, без настроек, лаконичных и смайликов может даже добавить юмор / индивидуальность в ваш код. Иногда самое простое решение - лучшее решение.
источник
let fixMeMakeMeNonOptional: Int
даст вамImmutable value fixMeMakeMeNonOptional was never used; consider replacing with _ or removing it
в навигаторе проблемы. Все остальные решения дают вам гораздо более общие сообщения об ошибках.Сообщение WWDC 2018 Обновление
Начиная с Xcode 10 и Swift 4.2, вы теперь сможете
#warning
снова использовать это так:Это будет отображаться как предупреждение в Xcode, как и ожидалось!
Это работает даже в сочетании с
#if
проверками, например, следующее будет отображать предупреждение, только если ваша целевая платформа - iOS:Там также,
#error
если вы хотите, чтобы ваша сборка провалилась.Предварительно WWDC 2018 Ответ
В Swift с использованием XCode 6 вы можете использовать различные виды ориентиров для разных целей. Вот что Apple говорит об этом:
Поэтому для установки предупреждения с описанием вы должны использовать что-то вроде этого:
//TODO: Clean up this code after testing
Если вы просто хотите установить короткую отметку (при условии, что вы помните, что делать), используйте это:
//FIXME
РЕДАКТИРОВАТЬ: Эти ориентиры, однако, появляются только в панели переходов XCode, которая может не соответствовать вашим ожиданиям и ожиданиям, особенно по меткам // TODO: и // FIXME. Я подал радар об этом: # 17776817. Надеюсь, Apple добавит это в ближайшие сборки в XCode 6.
РЕШЕНИЕ (РЕДАКТИРОВАТЬ 2): Если вы установите Swift Linter через Homebrew (запустите
brew install swiftlint
после abrew update
) и добавите предлагаемый сценарий сборки в свой проект, то вы увидите, что все вашиTODO
иFIXME
ориентиры отображаются в виде предупреждений в Xcode. SwiftLint даже добавит еще несколько предупреждений / ошибок, которые вы можете настроить в соответствии со своими потребностями - я могу только рекомендовать использовать SwiftLint, и это решает эту проблему великолепно!источник
Все еще не добавлено командой Apple. То, что я решил сделать, это, вероятно, мошенничество, но, по крайней мере, оно показывает мне сообщение FIXME. Поэтому я объявляю функцию FIXME () в файле Swift:
и когда я вызываю его из любой другой функции, он показывает предупреждение, например
Для Swift 2 используйте
источник
Посмотрите на эту статью .
Вы можете написать свой собственный скрипт, который выделит все теги.
Это приводит к:
источник
egrep --directories='skip'
игнорировать каталоги с именами , как Device.swiftВ качестве альтернативы, если вы хотите, чтобы что-то отображалось на панели предупреждений, вы можете написать что-то вроде:
Вы не можете получить какой-либо текст для отображения, но по крайней мере это более заметный маркер, особенно если вы склонны воспринимать (большинство) предупреждений как ошибки.
источник
Я предложил и реализовал эту функцию, и она будет поставляться с Swift 4.2. Вы можете использовать его сейчас, загрузив
master
набор инструментов на swift.org .источник
Один CocoaPod, который я использовал, имел
.swift
свое имя, поэтому был возвращен каталог, что вызвало сбой скрипта Кайлом. Добавление-type f
кfind
команде устраняет эту проблему, просматривая только совпадающие файлы,*.swift
а также возвращая каталоги, соответствующие шаблону.Окончательный код, который я использовал:
источник
Если вы не хотите корректировать настройку сборки, еще одно простое домашнее средство - вставить заполнитель редактора перед комментарием:
При сборке вы получаете ошибку «Редактор заполнителя в исходном файле», но в отличие от решения Джордана, нет живой ошибки, которая вас раздражала бы при наборе:
источник
После долгих поисков и тоски я убежден, что такой сущности не существует. Я все еще надеюсь, что последние заметки о выпуске Xcode будут содержать упоминание о продолжающемся отсутствии механизма #pragma mark, также могут появиться #warning и #error.
Кроме того, я настоятельно рекомендую зарегистрировать радар в Apple на bugreport.apple.com, чтобы добавить эту функциональность (вы можете обмануть 17702491).
источник
Мы написали настраиваемый инструмент, который позволяет помещать предупреждения и ошибки в Xcode Issue Navigator на основе тега комментария и конфигурации сборки: https://github.com/doubleencore/XcodeIssueGenerator
Установите это:
Затем поместите строку в фазу запуска сценария запуска:
Вот статья, описывающая, как мы ее используем.
источник
Я могу опоздать на вечеринку с Xcode 10, поддерживающим ошибки и предупреждения, но просто помещая строку:
выдаст предупреждение:
String literal is unused
автозаполнение все еще работает, а проект все еще компилируется.источник
Мой ответ не совсем удовлетворит ваш вопрос, но если вы хотите что-то легкое, вы можете использовать этот плагин alcatraz, который работает во всех проектах без каких-либо дополнительных приготовлений. Просто сделайте следующее:
Он также имеет настройки для добавления новых тегов
источник
Преимущество этого фрагмента - он не показывает предупреждения от модулей:
Как установить:
источник