2011-06-02 15 views
18

(he encontrado la respuesta a esto en otro lugar mientras se escribe la pregunta, pero pensé que podría ser útil a los demás si lo publicado ya que no pude encontrar nada aquí.)¿Puede agregar advertencias de compilador personalizadas en Objective-C?

Quiero marcar métodos que necesita un mejor manejo de errores Me gustaría que se muestren como advertencias del compilador para que otros desarrolladores (que pueden ser responsables de esa área) lo noten y, con suerte, lo solucionen cuando lo deseen.

(Otros enfoques dan la bienvenida, miré a __attribute__((warning)) pero no pude conseguir que funcione.)

Respuesta

43

Es muy fácil de hacer:

#warning Needs better error handling, please. 
+8

También puede usar '#error Mensaje' para desencadenar errores de compilación. – ughoavgfhw

+2

Esto no es realmente una buena idea, ya que hace que las advertencias sean una parte regular de la construcción en lugar de las indicaciones de posibles errores. Sería mejor utilizar // FIXME o // TODO, que muchos IDE recogen automáticamente, para marcar secciones de código que necesitan trabajo. –

+2

@jshier Considero que es un error del desarrollador (o al menos solo marcaría aquellos que considero un error del desarrollador). La idea es ayudar a otros (y a mí) a mejorar el manejo de errores para hacer lo correcto en el futuro. Las advertencias desaparecerán cuando se aborden, y creo que deben abordarse. No creo que // FIXME y // TODO sean lo suficientemente fuertes. – zekel

2

Seleccione su objetivo y luego seleccione la construcción Pestaña Fases. En la parte inferior de la ventana, verá una opción para agregar fase de compilación en la parte inferior de la pantalla. Puede usar la fase Agregar compilación para agregar una fase de compilación Ejecutar script. La opción Ejecutar script le permite seleccionar un shell y ejecutar código arbitrario contra el proyecto.

para advertir sobre TODO & ARREGLAME comentarios, utilice/bin/sh como la cáscara y pegue en este script:

TAGS="TODO:|FIXME:" 
echo "searching ${SRCROOT} for ${TAGS}" 
find "${SRCROOT}" \(-name "*.h" -or -name "*.m" \) -print0 | xargs -0 egrep --with-filename --line-number --only-matching "($TAGS).*\$" | perl -p -e "s/($TAGS)/ warning: \$1/" 

Fuente: Generate Xcode Warnings from TODO Comments

Cuestiones relacionadas