Ignorar las advertencias de Xcode al usar Cocoapods

417

Utilizo muchas bibliotecas de terceros que tienen muchas advertencias, después de las últimas actualizaciones de Xcode. (por ejemplo, el pod de Facebook SDK) Ahora todas estas advertencias se muestran en mi Xcode en el lugar donde quiero ver mis propias advertencias o errores.

¿Hay alguna forma de ignorar estos errores? Arreglarlos no ayudará, ya que después de cada "instalación de pod" los cambios se descartan.

KrauseFx
fuente

Respuestas:

968

Añadir a su Podfile:

platform :ios

# ignore all warnings from all pods
inhibit_all_warnings!

# ignore warnings from a specific pod
pod 'FBSDKCoreKit', :inhibit_warnings => true

Luego ejecuta: pod install

aleación
fuente
3
¿Cómo incluyo eso? Actualmente uso s.dependency 'Facebook-iOS-SDK' s.inhibit_all_warnings! y aparece el siguiente error: método indefinido `inhibit_all_warnings! ' para # <Pod :: Especificación para MyApp (1.0)>
KrauseFx
22
¿Cómo puedo resolver el siguiente problema? Quiero que las advertencias se oculten para algunos pods, pero no para todos.
KrauseFx
3
@krausefx Lo siento, no vi tu comentario. Por el bien de la posteridad, ahora puede deshabilitar las advertencias por pod, como se muestra en los documentos de Podfile
aleación
2
@JohanKarlsson Elimina la directiva y ejecuta pod installpara regenerar Pods.xcodeproj.
aleación
1
Tenga en cuenta que esto no impide que aparezcan advertencias (problemas) durante la Analyzefase. He ofrecido algunas sugerencias para eso en una respuesta diferente.
Jedidja
28

Puede buscar "inhibit_all_warnings" en la configuración de compilación de xcode del PodBundle en su espacio de trabajo de proyecto, establezca el valor en "SÍ" y ocultará todas las advertencias del archivo Pod.

Si lo hace en su espacio de trabajo, también ocultará todo su proyecto.

Teja Swaroop
fuente
Esta es una solución más simple, configúrela en el proyecto de pods y solo deshabilita las advertencias relacionadas con el pod, no las advertencias de su proyecto. No es necesario volver a ejecutar la instalación del pod.
Andres Canella
28
¡No recomendado! Con la siguiente, pod installesta configuración se anula, ¡así que mejor configúrela en Podfile!
electronix384128
44
Personalmente, me gusta esto para que cada actualización recuerde echar un vistazo rápido a todas las advertencias y asegurarme de que sean descuidadas.
Andres Canella
¿Qué pasa con las dependencias en un podspec para un pod de desarrollo local?
Ari Braginsky
También puede configurar Swift Compiler - Warnings Policies> Suppress Warningsa Yes... con el inhibit_all_warningsque todavía tenía la 'characters' is deprecated: Please use String or Substring directly advertencia en Pods. Esta configuración eliminó esta advertencia.
Tiois
6

Aunque esta otra respuesta eliminará las advertencias durante la fase de compilación, no parece corregir completamente la Analyzefase (lo que causó que nuestra compilación de CI aún tenga problemas).

Lo que funcionó para mí (además de la respuesta aceptada) fue:

  • Haga clic en el Podsproyecto desde el Navegador de proyectos
  • Elija el Pod-objetivo real y haga clic enBuild Settings
  • Filtrar con la frase compiler flags
  • Agregue una nueva Other C Flagscon el valor -w -Xanalyzer -analyzer-disable-checker -Xanalyzer core(o los analizadores que necesite deshabilitar). Esta respuesta proporciona la lista completa de indicadores para probar. ¡Por favor, vótelo!

    Sin clangembargo, la versión de Xcode 6.3.1 no parece incluir, insecureAPIpor lo que puede eliminarla de esa lista. La lista completa "actual" es-w -Xanalyzer -analyzer-disable-checker -Xanalyzer alpha -Xanalyzer -analyzer-disable-checker -Xanalyzer core -Xanalyzer -analyzer-disable-checker -Xanalyzer cplusplus -Xanalyzer -analyzer-disable-checker -Xanalyzer deadcode -Xanalyzer -analyzer-disable-checker -Xanalyzer debug -Xanalyzer -analyzer-disable-checker -Xanalyzer llvm -Xanalyzer -analyzer-disable-checker -Xanalyzer osx -Xanalyzer -analyzer-disable-checker -Xanalyzer security -Xanalyzer -analyzer-disable-checker -Xanalyzer unix

Tenga en cuenta que configurar esto en el PodsProyecto o en el PodsDestino no funcionará . No estoy seguro de por qué, pero debes configurarlo para cada Pod-objetivo real .

También puede establecer los indicadores del compilador ( -w -Xanalyzer -analyzer-disable-checker -Xanalyzer coreetc.) por archivo .

También probé un par de otros métodos (que pueden o no ser necesarios además de los anteriores). Se realizaron en el Podspropio proyecto.


[1]

  • Filtrar con la frase analyzer
  • Asegúrese de que Analyze During 'Build'esté configurado en NO.
  • Cambie todos los ajustes a NO(incluido Improper Memory Management)

[2]

  • Filtrar con la frase warnings
  • Cambiar inhibit all warningsaYES

Por alguna razón, incluso deshabilitar el Analyzepaso en el esquema no parece funcionar.

Vaya a la Product > Scheme > Manage Schemesventana, haga clic en cada uno Pod-*de la lista y haga clic en el Editbotón. Haga clic Builden la lista de la izquierda y luego desmarque Analyze en el lado derecho para el Podobjetivo.

Todavía estoy confundido sobre por qué no puedo deshabilitar por completo el análisis de los Pods, aunque espero que tenga que ver con la opción "Buscar dependencias implícitas" marcada en la configuración de compilación del esquema. Sin embargo, si eso no estaba marcado, parece que algo más tendría que suceder para que la aplicación se vincule a los pods.

Jedidja
fuente
1
Nota: Desafortunadamente, esto no ayuda con CI si excluye Pods y .xcworkspace de su repositorio, utilizando su .gitignore.
RileyE
@RileyE interesante: ¿hay alguna buena razón para excluirlos de un repositorio? Si es así, ¿la otra técnica en esta página funciona para usted? (Todavía soy un novato relativo al desarrollo de iOS, así que tengo mucha curiosidad por saber más)
Jedidja
Hay una gran división sobre si incluirlo o no . No me gusta incluirlo, ya que prefiero asegurarme de que mi archivo de pods sea siempre exacto y he encontrado algunos conflictos entre Podfile.lock y .xcworkspaces de diferentes usuarios. Es simplemente una preferencia para los usuarios con pros y contras muy discutibles.
RileyE
@RileyE gracias por la información! Entonces, si excluimos Pods / .xcworkspace, ¿no hay solución para el problema?
Jedidja
Lamentablemente no. Es por eso que he estado presionando para obtener banderas adicionales pod install.
RileyE
5

Paso: 1 Ponga el siguiente script en su Podfile.

post_install do |installer|
    installer.pods_project.targets.each do |target|
        target.build_configurations.each do |config|
            config.build_settings['GCC_WARN_INHIBIT_ALL_WARNINGS'] = "YES"
        end
    end
end

Paso 2. Hazlo pod install.

Toseef Khilji
fuente
2
También tuve que agregar lo siguiente para Swift Pods:config.build_settings['SWIFT_SUPPRESS_WARNINGS'] = "YES"
pstoppani