precio - suzuki swift sport
Swift: equivalente de advertencia (13)
Como alternativa, si desea que se muestre algo en el panel de advertencias, podría escribir algo como:
if (false){
var x = 2;
}
Realmente no puedes mostrar ningún texto, pero al menos es un marcador más visible, especialmente si tiendes a tratar (la mayoría) advertencias como errores.
¿Tiene Swift un equivalente de advertencia? Simplemente se usa para mostrar una advertencia en la propia GUI de Xcode
También estoy interesado en si hay un equivalente de #error.
Apple ha dicho que #pragma mark llegará pronto, posiblemente podría ser lo mismo con esto.
Después de mucha búsqueda y anhelo, estoy convencido de que tal entidad no existe. Todavía tengo esperanzas con las últimas notas de lanzamiento de Xcode que mencionan la continua falta de un mecanismo #pragma mark, #warning y #error también pueden estar llegando.
Como comentario adicional, recomiendo encarecidamente archivar un Radar con Apple en bugreport.apple.com para agregar esta funcionalidad (puede engañar a 17702491).
En Swift usando XCode 6 puedes usar diferentes tipos de puntos de referencia para diferentes propósitos. Esto es lo que dice Apple al respecto:
Xcode ahora es compatible con // MARK :, // TODO: y // FIXME: puntos de referencia para anotar su código y los enumera en la barra de salto.
Entonces, para configurar una advertencia con una descripción, usaría algo como esto:
//TODO: Clean up this code after testing
Si solo desea establecer una marca corta (suponiendo que recuerde qué hacer), use esto:
//FIXME
EDITAR: Sin embargo, estos puntos de referencia solo aparecen en la barra de salto de XCode, que podría no ser lo que usted desea y lo que uno esperaría, especialmente de las marcas // TODO: y // FIXME. He archivado un radar sobre eso: # 17776817. Es de esperar que Apple agregue esto en las próximas compilaciones en XCode 6.
SOLUCIÓN (EDIT 2): Si instala Swift Linter a través de Homebrew (ejecute brew install swiftlint
después de una brew update
) y agregue el guión de compilación sugerido a su proyecto, verá todos sus hitos TODO
y FIXME
aparecer como advertencias dentro de Xcode. SwiftLint incluso agregará más advertencias / errores que puede configure para satisfacer sus necesidades. ¡Solo puedo recomendar el uso de SwiftLint y resuelve este problema de manera excelente!
En el futuro, los desarrolladores de Apple pueden lanzar un //WARNING:
landmark, o proporcionar la funcionalidad para otro hito con nombre.
Sin embargo, para invocar esta funcionalidad con Swift en Xcode, podría hacer lo siguiente como lo describen Ben Dodson y Jeffrey Sambells:
Agregue un nuevo script de ejecución a la pestaña de fases de compilación de su destino (configuración del proyecto> fases de compilación> ''+''> nueva fase de secuencia de comandos de ejecución) y pegue el siguiente código en el cuadro vacío:
TAGS="TODO:|FIXME:"
echo "searching ${SRCROOT} for ${TAGS}"
find "${SRCROOT}" /( -name "*.swift" /) -print0 | xargs -0 egrep --with-filename --line-number --only-matching "($TAGS).*/$" | perl -p -e "s/($TAGS)/ warning: /$1/"
Esto forzará a Xcode a marcar una advertencia en tiempo de compilación para cualquier // TODO:
o // FIXME:
comentarios que // FIXME:
.
Alternativamente, podría enmendar TAGS con una etiqueta personalizada: TAGS="WARNING:"
en el código anterior que mantendría el comportamiento predeterminado para TODO & FIXME y levantaría una advertencia de tiempo de compilación en cualquier comentario marcado como // WARNING:
http://bendodson.com/weblog/2014/10/02/showing-todo-as-warning-in-swift-xcode-project/ http://jeffreysambells.com/2013/01/31/generate-xcode-warnings-from-todo-comments
EDITAR: 18/11/14
@ david-h planteó un buen punto en su comentario. Si solo deseaba plantear estas advertencias en una configuración de compilación específica, podría hacer lo siguiente:
if [ "${CONFIGURATION}" = "Debug" ]; then
TAGS="TODO:|FIXME:"
echo "searching ${SRCROOT} for ${TAGS}"
find "${SRCROOT}" /( -name "*.swift" /) -print0 | xargs -0 egrep --with-filename --line-number --only-matching "($TAGS).*/$" | perl -p -e "s/($TAGS)/ warning: /$1/"
fi
Alternativamente, puede usar "Release" en lugar de "Debug" para orientar las compilaciones de producción solamente.
Escribimos una herramienta configurable que le permite colocar advertencias y errores en Xcode Issue Navigator en función de la etiqueta de comentario y la configuración de compilación: https://github.com/doubleencore/XcodeIssueGenerator
Instalarlo:
brew tap doubleencore/tap
brew install xcodeissuegenerator
Luego ponga una línea en una Fase de compilación Ejecutar script:
# Mark WARNINGs, SERIOUSs, and TODOs as warnings in DEBUG builds excluding the Vendor and Third Party directories.
XcodeIssueGenerator -b DEBUG -w "WARNING, SERIOUS, TODO" -x "Vendor/, Third Party/"
Aquí hay un artículo que describe cómo lo usamos.
Mi respuesta no es del todo satisfactoria para su pregunta, pero si quiere algo fácil, puede usar this complemento de alcatraz que funciona en todos los proyectos sin ninguna preparación adicional. Solo haz lo siguiente:
1) install Alcatraz (Nice package manager for Xcode Plug-ins) by entering this line in terminal:
curl -fsSL https://raw.githubusercontent.com/supermarin/Alcatraz/deploy/Scripts/install.sh | sh
2) Then restart Xcode and on it launch agree to install all bundles not included in Xcode
3) In Xcode select menu item -> Window -> Package manager -> type in search panel XTodo and press install
4) Relaunch Xcode and again agree to install additional bundles
5) From now press Ctrl + T and you will see all Tags in nice window
También tiene preferencias para agregar nuevas etiquetas
Mira este article .
Puede escribir su propio script que resaltará todas las etiquetas.
TAGS="TODO:|FIXME:"
ERRORTAG="ERROR:"
find "${SRCROOT}" /( -name "*.h" -or -name "*.m" -or -name "*.swift" /) -print0 | xargs -0 egrep --with-filename --line-number --only-matching "($TAGS).*/$|($ERRORTAG).*/$" | perl -p -e "s/($TAGS)/ warning: /$1/" | perl -p -e "s/($ERRORTAG)/ error: /$1/"
Rápido, sucio y oh tan elegantemente simple, todo al mismo tiempo.
// Description of what you need to fix
var FIX_ME__🛠🛠🛠: AnyObject
Emite una advertencia de que ''FIX_ME__🛠🛠🛠'' nunca se usó.
Puedes agregar emoticones al nombre de la variable si quieres ... A menudo uso 😱 y 🛠, para algo que realmente necesita ser corregido, incluso lo consideraría 💩. Puedes reemplazar FIX_ME__
con lo que quieras: BugID_148
, JOHNNY_YOU_BROKE_THIS
o JOHNNY_YOU_BROKE_THIS
son algunos ejemplos.
Rápido, sin configuración, conciso, y emoticones pueden incluso agregar humor / personalidad a su código. A veces la solución más simple es la mejor solución.
Si no está dispuesto a ajustar la configuración de su compilación, otro remedio casero simple es colocar un marcador de posición del editor frente al comentario:
<#todo#>// stop and fixme!
Cuando construye obtiene un error de "marcador de posición del editor en el archivo fuente", pero a diferencia de la solución de Jordan, no hay ningún error en tiempo real para molestarlo mientras tipea:
Todavía no agregado por el equipo de Apple todavía. Lo que decidí hacer es probablemente una trampa, pero al menos me muestra un mensaje de FIXME. Entonces lo que hago es declarar la función FIXME () en el archivo Swift:
@availability(iOS, deprecated=1.0, message="I''m not deprecated, please ***FIXME**")
func FIXME()
{
}
y cuando lo llamo desde cualquier otra función, muestra una advertencia, por ejemplo
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
FIXME() // Incomplete method implementation.
return 0
}
Para el uso de Swift 2
@available(iOS, deprecated=1.0, message="I''m not deprecated, please ***FIXME**")
Un CocoaPod que estaba usando tenía .swift
en su nombre, por lo que se devolvió un directorio, lo que provocó que el script de Kyle se bloqueara. Agregar -type f
al comando find
corrige ese problema al solo mirar los archivos que coinciden con *.swift
lugar de devolver directorios que coincidan con el patrón.
Código final que utilicé:
TAGS="TODO:|FIXME:"
echo "searching ${SRCROOT} for ${TAGS}"
find "${SRCROOT}" /( -name "*.swift" /) -type f -print0 | xargs -0 egrep --with-filename --line-number --only-matching "($TAGS).*/$" | perl -p -e "s/($TAGS)/ warning: /$1/"
Ventaja de este fragmento: no muestra advertencias de los Pods:
if [ "${CONFIGURATION}" = "DEBUG" ]; then
TAGS="TODO:|FIXME:|WARNING:|warning:" find "." /( -name "*.swift" /) -not -path "./Pods/*" -print0 | xargs -0 egrep --with-filename --line-number --only-matching "($TAGS).*/$" | perl -p -e "s/($TAGS)/ warning: /$1/"
fi
Cómo instalar:
proposed e implemented esta característica, y se enviará con Swift 4.2. Puede usarlo ahora descargando la cadena de herramientas master
en swift.org .
#if os(macOS)
#error("macOS is not supported")
#endif
#warning("finish this")