Pregunta

Estoy tratando de utilizar sonido metálico al perfil de un proyecto que estoy trabajando. El proyecto incluye una bastante grande biblioteca estática que se incluye en Xcode como dependencia.

Me gusta mucho ruido metálico no analizar archivos de las dependencias, ya que parece hacer ruido metálico falle. es posible? He estado leyendo la documentación sonido metálico, y yo no lo he encontrado.

¿Fue útil?

Solución 2

Por lo tanto, esto no es realmente una respuesta, pero funcionó bastante bien.

Lo que terminé haciendo fue la construcción de la biblioteca estática antes de tiempo, y luego la construcción del proyecto mediante la exploración y construcción. Puesto que ya existía una acumulación de hasta al día de la biblioteca estática, no fue reconstruido y por lo tanto no se escaneó.

Me encanta tener todavía una respuesta real para esto, sin embargo.

Otros consejos

Como último recurso, hay una opción de fuerza bruta.

Esto, unido al principio de un archivo:

// Omit from static analysis.
#ifndef __clang_analyzer__

Esto, unido al extremo:

#endif // not __clang_analyzer__

y sonido metálico --analyze no verá el contenido del archivo.

referencia: Controlar estáticas Analizador de Diagnóstico

Yo no uso XCode, pero el uso de exploración y construcción de las siguientes obras Linux para mí. Yo mi caso, quiero correr el análisis estático en todo el primer partido, el código no generado. Sin embargo, quiero evitar ejecutarlo en THIRD_PARTY código y el código generado.

En la línea de comandos, sonido metálico analizador se engancha en la generación cuando la exploración y construcción establece las variables de entorno CC y CXX a ccc-analizador y C ++ - ubicaciones analizador. Escribí dos guiones simples llamadas ccc-analyzer.py y C ++ - analyzer.py y les enganchado en la compilación en lugar del defecto. En estos scripts envoltura, simplemente miraba la ruta del archivo que se está compilando y luego ejecutar el compilador ya sea cruda directamente (si lo deseo de evitar el análisis estático) o el c * -analyzer (si lo deseo para el análisis estático que ocurra). Mi escritura es en python y atado a mi sistema de construcción específica, sino como un ejemplo que necesita modificación:

import subprocess
import sys

def main(argv):
  is_third_party_code = False
  for i in range(len(argv)):
    arg = argv[i]
    if arg == '-c':
      file_to_compile = argv[i + 1]
      if '/third_party/' in file_to_compile or \
            file_to_compile.startswith('gen/'):
        is_third_party_code = True
      break
  if is_third_party_code:
    argv[0] = '/samegoal/bin/clang++'
  else:
    argv[0] = '/samegoal/scan-build/c++-analyzer'
  return subprocess.call(argv)

if __name__ == '__main__':
  sys.exit(main(sys.argv))
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top