2010-02-11 19 views
36

Al ejecutar xcodebuild desde la consola, obtendrá una salida muy detallada y no pude encontrar ninguna opción para limitar su salida a fin de mostrar solo advertencias y errores.Cómo filtrar el resultado de la línea de comando xcodebuild?

Estoy buscando una forma de capturar la salida xcodebuild y filtrarla. Preferiría una solución de Python que funcione con las tuberías, pero estoy abierto a otros enfoques siempre que sean soluciones basadas en línea de comandos.

¿Hay alguna herramienta que ya sea capaz de hacer esto?

Respuesta

17

sólo para ver los mensajes de salida de error, redirigir la salida estándar a/dev/null (un archivo especial que funciona como un agujero negro) así:

xcodebuild > /dev/null

Si desea capturar la salida de error en un archivo, puede hacer:

xcodebuild 2> ./build_errors.log
35

Esto no es suficiente para mí. La canalización a/dev/null solo le mostrará que una construcción ha fallado, pero no ve la (s) razón (es) por las cuales. Idealmente, podríamos ver solo los errores y/o advertencias sin todos los comandos del compilador exitosos.

Esto básicamente se encarga del trabajo:

xcodebuild | grep -A 5 error: 
+19

o 'xcodebuild | egrep -A 5 "(error | advertencia):" ' – v01pe

+10

o' egrep '^ (/.+: [0-9 +: [0-9] + :. (error | advertencia): | fatal | ===) '-' también para obtener líneas que dicen lo que xcodebuild está a punto de hacer. – PatchyFog

33

Hay una gema de rubíes llamada xcpretty.

Filtra la salida de xcodebuild y también proporciona diferentes formateadores y colores.

+2

por favor vote esta respuesta, esta herramienta es increíble y resuelve el problema mucho mejor que grep – hariseldon78

+1

¡Esta herramienta es fantástica!¿Por qué no lo he descubierto antes? –

+0

xcpretty es una herramienta útil para usar junto con xcodebuild. – AhiyaHiya

0

Me encanta xcpretty por mirar como un humano, pero tenía la necesidad de encontrar errores de compilación en una configuración automatizada para la propagación en otro lugar, y quería estar seguro de haber capturado solo la información relevante. El siguiente comando sed sirve a ese propósito:

xcodebuild | sed -nE '/error:/,/^[[:digit:]] errors? generated/ p' 

Salida:

main.c:16:5: error: use of undeclared identifier 'x' 
    x = 5; 
    ^
main.c:17:5: error: use of undeclared identifier 'y' 
    y = 3; 
    ^
2 errors generated. 
24

Uso xcodebuild -quiet.

De acuerdo con la página del manual xcodebuild:

-quiet: No imprimir cualquier salida a excepción de avisos y errores.

¡Bonificación: no es necesario tener otras herramientas! (Aunque también me gusta xcodebuild | xcpretty)

Creo con Travis CI, que se queja después de 4 MB de registros. Este argumento resolvió el problema.

+1

Esto debe marcarse como la respuesta correcta. ¡Gracias! – Ruenzuo

+0

Desafortunadamente, funciona solo para Xcode 8+. Para Xcodes anteriores ver respuesta por @rosejn. – kambala

1

enter image description here

-quiet es la mejor manera de hacerlo en este momento.

Cuestiones relacionadas