Ignore Xcode warnings when using Cocoapods
Solution 1
Add to your Podfile:
platform :ios
# ignore all warnings from all pods
inhibit_all_warnings!
# ignore warnings from a specific pod
pod 'FBSDKCoreKit', :inhibit_warnings => true
Then execute: pod install
Solution 2
You can search for "inhibit_all_warnings" in your Xcode build settings of the PodBundle in your project-workspace. Set the value to "YES" and it will hide all your Pod file warnings.
If you do it to your workspace it will hide all your project warnings also.
Solution 3
Step: 1 Put the below script in your 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
Step 2. Do pod install
.
Solution 4
Although this other answer will remove warnings during the build phase, it doesn't appear to completely fix the Analyze
phase (which caused our CI build to still have issues).
What worked for me (in addition to the accepted answer) was:
-
Click on the
Pods
project from the Project Navigator -
Choose the actual
Pod-
Target and click onBuild Settings
-
Filter with the phrase
compiler flags
-
Add a new
Other C Flags
with the value-w -Xanalyzer -analyzer-disable-checker -Xanalyzer core
(or whichever analyzers you need disabled) - this answer provides the full list of flags to try -- please upvote it!The version of
clang
in Xcode 6.3.1, though, doesn't seem to includeinsecureAPI
so you can remove it from that list. The "current" full list is-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
Note that setting this on the Pods
Project or Pods
Target will not work. I'm not sure why, but you have to set it for each actual Pod-
target.
You can also set the compiler flags (-w -Xanalyzer -analyzer-disable-checker -Xanalyzer core
etc.) on a per-file basis.
I also tried a couple other methods (which may or may not be required in addition to the above). They were performed on the Pods
Project itself.
[1]
- Filter with the phrase
analyzer
- Make sure
Analyze During 'Build'
is set toNO
. - Change all the settings to
NO
(includingImproper Memory Management
)
[2]
- Filter with the phrase
warnings
- Change
inhibit all warnings
toYES
For some reason, even disabling the Analyze
step in the scheme doesn't seem to work.
Go to the Product > Scheme > Manage Schemes
window, click on each Pod-*
from the list and click the Edit
button. Click Build
on the left-hand list, and then uncheck Analyze
on the right-hand side for the Pod
target.
I am still confused as to why I can't completely disable the Pods from being analyzed, although I expect it might have to do with the "Find implicit dependencies" checked in the scheme's build settings. If that was unchecked, though, it looks like something else would need to happen for the app to link to the pods.
KrauseFx
iOS/Ruby Developer Twitter: https://twitter.com/KrauseFx fastlane: https://fastlane.tools Website: https://krausefx.com
Updated on July 12, 2021Comments
-
KrauseFx almost 3 years
I use quite a lot third party libraries which have many warnings in it, after the latest Xcode updates. (for example the Facebook SDK pod) Now all these warnings are shown in my Xcode on the place I want to see my own warnings or errors.
Is there any way to ignore these errors? Fixing them won't help, since after every "pod install" the changes are discarded.
-
KrauseFx over 11 yearsHow do I include that? Currently I use s.dependency 'Facebook-iOS-SDK' s.inhibit_all_warnings! and I get the following error: undefined method `inhibit_all_warnings!' for #<Pod::Specification for MyApp(1.0)>
-
alloy over 11 yearsI’ve expanded the example a bit to make the intent more clear.
-
KrauseFx over 11 yearsHow can I solve the following problem: I want the warnings to be hidden for some pods, but not for all of them.
-
alloy almost 11 years@krausefx Sorry, didn’t see your comment. For posterity sake, you can now disable warnings on a per-pod basis, as shown in the Podfile docs: docs.cocoapods.org/podfile.html#inhibit_all_warnings_bang
-
Yas Tabasam about 10 yearsRebuild pods after adding this line. i.e. pod update
-
Johan Karlsson about 10 yearsWhat if I want to enable warnings again?
-
alloy about 10 years@JohanKarlsson Remove the directive and run
pod install
to regenerate the Pods.xcodeproj. -
Ricardo Sanchez-Saez almost 10 yearsWhat does the
inhibit_all_warnings!
command translates into on Xocde? "Inhibit all warnings" on Xcode seems to be disabled for the generalPods
and the individualPods-Foo
targets. I cannot find the Xcode build settings that makes the Cocoapods subproject ignore warnings. I want to enableinhibit_all_warnings!
on the Podfile and then disable warnings for just one pod on the Xcode subproject. -
Andres Canella over 9 yearsThis is a simpler solution, set this on the pods project and it only disables pod related warnings, not your project warnings. No need to re execute the pod install.
-
electronix384128 over 9 yearsNot recommended! With the next
pod install
this setting is overridden, so better set it in Podfile! -
Andres Canella about 9 yearsPersonally I do like this so that every update I remember to take a quick look that all warnings and make sure they are neglectable.
-
RileyE about 9 yearsNote: Unfortunately, this doesn't help with CI if you exclude Pods and .xcworkspace from your repository - using your .gitignore.
-
jazzy about 9 years@RileyE interesting - is there a good reason to exclude those from a repo? If so, does the other technique on this page work for you? (I'm still a relative newbie to iOS development so quite curious to learn more)
-
jazzy about 9 yearsNote that this doesn't preclude warnings (issues) from appearing during the
Analyze
phase. I've offered some suggestions for that in a different answer. -
RileyE about 9 yearsThere is a large divide on whether to include it or not. I don't like including it as I prefer to make sure my podfile is always accurate and I've found some conflicts between different user's Podfile.lock and .xcworkspaces. It's simply a preference to users with strongly debatable pros and cons.
-
jazzy about 9 years@RileyE thanks for the information! So if we did exclude Pods/.xcworkspace there is no workaround for the issues problem?
-
RileyE about 9 yearsUnfortunately not. Which is why I've been pushing for additional flags on
pod install
. -
infinity26 over 8 yearswhat about for dependencies in a podspec for a local dev pod?
-
heading_to_tahiti over 8 years@teja has posted the correct answer below --> Much simpler and cleaner
-
Brynjar about 7 yearsAlso, if you only want to disable the warnings from a certain Pod, and that pod has dependencies that it pulls it, then any warnings from those pods don't get hidden. You have to explicitly put the dependency in your podfile too, so you can set the :inhibit_warnings => true part on it.
-
Tiois over 6 yearsYou may also set
Swift Compiler - Warnings Policies
>Suppress Warnings
toYes
... with theinhibit_all_warnings
I still had the'characters' is deprecated: Please use String or Substring directly
warning in Pods. This setting removed this warning. -
pstoppani over 4 yearsI also had to add the following for Swift Pods:
config.build_settings['SWIFT_SUPPRESS_WARNINGS'] = "YES"
-
konekoya almost 3 yearsAfter adding this line, you need to run
pod install
and build the project again. This should remove all warnings from pods