¿Swift tiene un equivalente de # advertencia? Simplemente se usa para mostrar una advertencia en la propia GUI de Xcode
También me interesa saber si hay un #error equivalente.
Apple ha dicho que la marca #pragma llegará pronto, posiblemente podría ser lo mismo con esto.
//WARNING
como #pragma,//MARK
pero actualmente ninguno de ellos se agrega a XCode beta.Respuestas:
En el futuro, los desarrolladores de Apple pueden lanzar un
//WARNING:
hito o proporcionar la funcionalidad para otro hito con nombre.Sin embargo, para invocar esta funcionalidad con Swift en Xcode hoy, puede hacer lo siguiente, tal 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 script de ejecución) y pegue el siguiente código en el cuadro vacío:
Esto obligará a Xcode para marcar un aviso en tiempo de compilación para cualquier
// TODO:
o// FIXME:
comentario que de marcado.Alternativamente, puede modificar TAGS con una etiqueta personalizada:
TAGS="WARNING:"
en el código anterior, que mantendría el comportamiento predeterminado para TODO y FIXME y generarí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- advertencias de todo-comentarios
EDITAR: 18/11/14
@ david-h planteó un buen punto en su comentario. Si solo desea generar estas advertencias en una configuración de compilación específica, puede hacer lo siguiente:
Alternativamente, puede usar "Release" en lugar de "Debug" para apuntar solo a las compilaciones de producción.
fuente
-type f
opción alfind
comando para excluir directorios de los resultados de búsqueda. Esto no debería ser un problema para la mayoría de las personas, pero cualquiera que use elR.swift
pod se encontrará con el mismo error que tuve porqueR.swift
es un directorioEditar
A partir de Swift 4.2, el soporte de nivel de idioma está disponible tanto para advertencias de compilación como para errores.
Respuesta original
Rápido, sucio y tan elegante y simple al mismo tiempo.
Lanza una advertencia de que 'FIX_ME__🛠🛠🛠' nunca se usó.
Puede agregar emoticones al nombre de la variable si lo desea ... A menudo uso 😱 y 🛠, para algo que realmente necesita reparación, incluso consideraría 💩. Se puede reemplazar
FIX_ME__
con lo que quieras:ALGORITHM_NEEDS_REVIEW
,BugID_148
oJOHNNY_YOU_BROKE_THIS
son algunos ejemplos.Rápido, sin configuración, conciso, y los emoticones pueden incluso agregar humor / personalidad a su código. A veces la solución más simple es la mejor solución.
fuente
let fixMeMakeMeNonOptional: Int
te daImmutable value fixMeMakeMeNonOptional was never used; consider replacing with _ or removing it
en el navegador de problemas. Todas las otras soluciones le dan mensajes de error mucho más genéricos.Actualización posterior a WWDC 2018
Comenzando con Xcode 10 y Swift 4.2, ahora podrá volver a usarlo
#warning
así:¡Esto aparecerá como una advertencia en Xcode tal como se esperaba!
Esto funciona incluso en combinación con
#if
controles, por ejemplo, lo siguiente solo mostrará una advertencia si su plataforma de destino es iOS:También hay
#error
si quieres que tu construcción falle.Respuesta previa a WWDC 2018
En Swift usando XCode 6, puede usar diferentes tipos de puntos de referencia para diferentes propósitos. Esto es lo que Apple dice al respecto:
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 recordará qué hacer), use esto:
//FIXME
EDITAR: Sin embargo, estos puntos de referencia solo aparecen en la barra de salto de XCode, que puede no ser lo que desea y lo que uno esperaría, especialmente de las marcas // TODO: y // FIXME. He archivado un radar sobre eso: # 17776817. Esperemos que Apple agregue esto en las próximas versiones en XCode 6.
SOLUCIÓN (EDIT 2): Si instala el Swift Linter través Homebrew (correr
brew install swiftlint
después de unabrew update
) y añadir el script de construcción sugerido a su proyecto, a continuación, podrás ver todos tusTODO
eFIXME
hitos aparecen como advertencias dentro de Xcode. SwiftLint incluso agregará más advertencias / errores que puede configurar para satisfacer sus necesidades. ¡Solo puedo recomendarle usar SwiftLint y resuelve este problema de una manera excelente!fuente
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 FIXME. Entonces, lo que hago es declarar la función FIXME () en el archivo Swift:
y cuando lo llamo desde cualquier otra función, muestra una advertencia, por ejemplo
Para uso Swift 2
fuente
Mira este artículo .
Puede escribir su propio script que resaltará todas las etiquetas.
Esto da como resultado:
fuente
egrep --directories='skip'
para ignorar directorios con nombres como Device.swiftComo alternativa, si desea que aparezca algo en el panel de advertencias, puede escribir algo como:
Realmente no puede aparecer ningún texto, pero al menos es un marcador más visible, especialmente si tiende a tratar (la mayoría) de las advertencias como errores.
fuente
Me propuse y implementado esta característica, y se venderá con Swift 4.2. Puede usarlo ahora descargando la
master
cadena de herramientas en swift.org .fuente
Un CocoaPod que estaba usando tenía
.swift
su nombre, por lo que se devolvió un directorio, lo que provocó que Kyle se bloqueara. Agregar-type f
alfind
comando corrige ese problema al mirar solo los archivos que coinciden en*.swift
lugar de devolver directorios que coinciden con el patrón.Código final que usé:
fuente
Si no desea ajustar la configuración de su compilación, otro remedio casero simple es colocar un marcador de posición de editor delante del comentario:
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 vivo que lo moleste mientras escribe:
fuente
Después de mucha búsqueda y anhelo, estoy convencido de que no existe tal entidad. Todavía tengo esperanzas con las últimas notas de lanzamiento de Xcode que mencionan la falta continua de un mecanismo de marca #pragma, también pueden aparecer #warning y #error.
Como comentario aparte, recomiendo presentar un radar con Apple en bugreport.apple.com para agregar esta funcionalidad (puede engañar a 17702491).
fuente
Escribimos una herramienta configurable que le permite poner 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:
Luego ponga una línea en una Fase de Ejecución del Script de Ejecución
Aquí hay un artículo que describe cómo lo usamos.
fuente
Es posible que llegue tarde a la fiesta con Xcode 10 que admite errores y advertencias, pero simplemente poniendo una Cadena:
generará una advertencia:
String literal is unused
con la función de autocompletar aún funcionando y el proyecto aún compilándosefuente
Mi respuesta no es satisfacer su pregunta, pero si quiere algo fácil, puede usar este complemento de alcatraz que funciona en todos los proyectos sin ninguna preparación adicional. Solo haz lo siguiente:
También tiene preferencias para agregar nuevas etiquetas
fuente
Ventaja de este fragmento: no muestra advertencias de Pods:
Cómo instalar:
fuente