Ignore os avisos do Xcode ao usar o Cocoapods

417

Eu uso muitas bibliotecas de terceiros que possuem muitos avisos, após as atualizações mais recentes do Xcode. (por exemplo, o pod do SDK do Facebook) Agora, todos esses avisos são mostrados no meu Xcode no local em que quero ver meus próprios avisos ou erros.

Existe alguma maneira de ignorar esses erros? A correção não ajudará, pois após cada "instalação do pod" as alterações são descartadas.

KrauseFx
fonte

Respostas:

968

Adicione ao seu Podfile:

platform :ios

# ignore all warnings from all pods
inhibit_all_warnings!

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

Em seguida, execute: pod install

Liga
fonte
3
Como incluo isso? Atualmente, uso s.dependency 'Facebook-iOS-SDK' s.inhibit_all_warnings! e recebo o seguinte erro: método indefinido `hibit_all_warnings! ' for # <Pod :: Specification for MyApp (1.0)>
KrauseFx
22
Como posso resolver o seguinte problema: Quero que os avisos sejam ocultados para alguns pods, mas não para todos eles.
precisa saber é o seguinte
3
@krausefx Desculpe, não vi o seu comentário. Por motivos de posteridade, agora você pode desativar os avisos por pod, conforme mostrado nos documentos do Podfile: docs.cocoapods.org/podfile.html#inhibit_all_warnings_bang
alloy
2
@JohanKarlsson Remova a diretiva e execute pod installpara gerar novamente o Pods.xcodeproj.
liga
1
Observe que isso não impede que avisos (problemas) apareçam durante a Analyzefase. Apresentei algumas sugestões para isso em uma resposta diferente.
Jedidja
28

Você pode procurar "inibit_all_warnings" nas configurações de compilação do xcode do PodBundle no seu espaço de trabalho do projeto e defina o valor como "YES" para ocultar todos os avisos de arquivo do Pod.

Se você fizer isso no seu espaço de trabalho, ele também ocultará todo o seu projeto.

Teja Swaroop
fonte
Essa é uma solução mais simples, defina-a no projeto de pods e desabilite apenas avisos relacionados a pods, não os avisos do seu projeto. Não é necessário executar novamente a instalação do pod.
Andres Canella 24/10
28
Não recomendado! Com a próxima, pod installessa configuração é substituída, então é melhor configurá-la no Podfile!
electronix384128
4
Pessoalmente, faço isso para que, a cada atualização, lembre-se de examinar rapidamente todos os avisos e garantir que sejam negligenciáveis.
Andres Canella
e as dependências em um podspec para um pod de desenvolvimento local?
Ari Braginsky
Você também pode definir Swift Compiler - Warnings Policies> Suppress Warningscomo Yes... com inhibit_all_warningso 'characters' is deprecated: Please use String or Substring directly aviso de que ainda estava no Pods. Essa configuração removeu esse aviso.
Tiois
6

Embora essa outra resposta remova os avisos durante a fase de criação, ela não parece consertar completamente a Analyzefase (o que causou problemas na criação do nosso IC).

O que funcionou para mim (além da resposta aceita) foi:

  • Clique no Podsprojeto no Project Navigator
  • Escolha o Pod-alvo real e clique emBuild Settings
  • Filtrar com a frase compiler flags
  • Adicione um novo Other C Flagscom o valor -w -Xanalyzer -analyzer-disable-checker -Xanalyzer core(ou qualquer analisador que você precise desabilitar) - esta resposta fornece a lista completa de sinalizadores para tentar - por favor, vote-o novamente!

    A versão do clangXcode 6.3.1, no entanto, parece não incluir, insecureAPIportanto você pode removê-lo dessa lista. A lista completa "atual" é-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

Observe que definir isso no Podsprojeto ou Podsdestino não funcionará . Não sei por que, mas você deve defini-lo para cada Pod-destino real .

Você também pode definir os sinalizadores do compilador ( -w -Xanalyzer -analyzer-disable-checker -Xanalyzer coreetc.) por arquivo .

Eu também tentei alguns outros métodos (que podem ou não ser necessários além dos itens acima). Eles foram realizados no Podspróprio projeto.


[1]

  • Filtrar com a frase analyzer
  • Verifique se Analyze During 'Build'está definido como NO.
  • Altere todas as configurações para NO(inclusive Improper Memory Management)

[2]

  • Filtrar com a frase warnings
  • Mude inhibit all warningsparaYES

Por alguma razão, nem mesmo desativar a Analyzeetapa do esquema parece funcionar.

Vá para a Product > Scheme > Manage Schemesjanela, clique em cada um Pod-*da lista e clique no Editbotão Clique Buildna lista à esquerda e desmarque Analyze à direita o Podalvo.

Ainda estou confuso sobre o motivo pelo qual não posso desativar completamente os Pods de serem analisados, embora eu espere que isso tenha a ver com "Localizar dependências implícitas" verificadas nas configurações de compilação do esquema. Se isso não foi verificado, parece que algo mais precisaria acontecer para o aplicativo vincular aos pods.

Jedidja
fonte
1
Nota: Infelizmente, isso não ajuda no IC se você excluir Pods e .xcworkspace do seu repositório - usando seu .gitignore.
RileyE
@RileyE interessante - existe um bom motivo para excluir aqueles de um repo? Em caso afirmativo, a outra técnica nesta página funciona para você? (Eu ainda sou um novato em relação ao desenvolvimento iOS modo bastante curioso para saber mais)
Jedidja
Há uma grande divergência em incluir ou não . Não gosto de incluí-lo, pois prefiro garantir que meu podfile esteja sempre preciso e encontrei alguns conflitos entre os diferentes arquivos Podfile.lock e .xcworkspaces de diferentes usuários. É simplesmente uma preferência para usuários com prós e contras fortemente discutíveis.
RileyE
@RileyE obrigado pela informação! Portanto, se excluímos Pods / .xcworkspace, não há solução alternativa para o problema de problemas?
Jedidja 16/05
Infelizmente não. É por isso que tenho pressionado por sinalizações adicionais pod install.
RileyE
5

Etapa: 1 Coloque o script abaixo no seu 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

Etapa 2. Faça pod install.

Toseef Khilji
fonte
2
Também tive que adicionar o seguinte para os Swift Pods:config.build_settings['SWIFT_SUPPRESS_WARNINGS'] = "YES"
pstoppani 19/09/1919