<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Xcode on Nabeel's - iOS Developer Blog</title><link>https://nabeelarif.github.io/categories/xcode/</link><description>Recent content in Xcode on Nabeel's - iOS Developer Blog</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Wed, 07 Dec 2016 00:00:00 +0000</lastBuildDate><atom:link href="https://nabeelarif.github.io/categories/xcode/index.xml" rel="self" type="application/rss+xml"/><item><title>Downgrade UI Files from XCode 8 to XCode 7</title><link>https://nabeelarif.github.io/p/downgrade-ui-files-from-xcode-8-to-xcode-7/</link><pubDate>Wed, 07 Dec 2016 00:00:00 +0000</pubDate><guid>https://nabeelarif.github.io/p/downgrade-ui-files-from-xcode-8-to-xcode-7/</guid><description>&lt;p&gt;In one of my recent project I developed a module in XCode 8 as I had upgraded to it. Later I came to know that our team is currently working on XCode 7. So if we integrate XCode 8 UI files i.e .storyboard &amp;amp; .xib, the main project will not compile and will show following error.&lt;/p&gt;
&lt;p&gt;&lt;img alt="UI Files of XCode 8 opened in XCode 7" class="gallery-image" data-flex-basis="647px" data-flex-grow="269" height="712" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://nabeelarif.github.io/p/downgrade-ui-files-from-xcode-8-to-xcode-7/ErrorOnXCode7ForXCode8Project.png" srcset="https://nabeelarif.github.io/p/downgrade-ui-files-from-xcode-8-to-xcode-7/ErrorOnXCode7ForXCode8Project_hu_81ec24db7b36c718.png 800w, https://nabeelarif.github.io/p/downgrade-ui-files-from-xcode-8-to-xcode-7/ErrorOnXCode7ForXCode8Project_hu_920df4157212a46c.png 1600w, https://nabeelarif.github.io/p/downgrade-ui-files-from-xcode-8-to-xcode-7/ErrorOnXCode7ForXCode8Project.png 1922w" width="1922"&gt;
&lt;img alt="UI Files of XCode 8 opened in XCode 7 (2)" class="gallery-image" data-flex-basis="674px" data-flex-grow="280" height="682" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://nabeelarif.github.io/p/downgrade-ui-files-from-xcode-8-to-xcode-7/ErrorOnXCode7ForXCode8Project2.png" srcset="https://nabeelarif.github.io/p/downgrade-ui-files-from-xcode-8-to-xcode-7/ErrorOnXCode7ForXCode8Project2_hu_798e35bfad1a40d8.png 800w, https://nabeelarif.github.io/p/downgrade-ui-files-from-xcode-8-to-xcode-7/ErrorOnXCode7ForXCode8Project2_hu_6957aaaa6ab5b26.png 1600w, https://nabeelarif.github.io/p/downgrade-ui-files-from-xcode-8-to-xcode-7/ErrorOnXCode7ForXCode8Project2.png 1916w" width="1916"&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;The document &amp;#34;Main.storyboard&amp;#34; requires XCode 8.0 or later.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;This version does not support documents saved in XCode 8 format. Open this document with XCode 8.0 or later.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;The document &amp;#34;(null)&amp;#34; requires XCode 8.0 or later.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Although it is strongly recommended to upgrade your XCode as soon as some stable version arrives, there can come certain situations where you have to downgrade it. If you are a developer like me who is trying to downgrade his project to support XCode 7 here are two simple ways.&lt;/p&gt;
&lt;h1 id="using-xcode-8"&gt;Using XCode 8:
&lt;/h1&gt;&lt;p&gt;If you have XCode 8 installed on your system, you can use this method to downgrade your storyboard files.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Open .storyboard/.xib file in XCode 8.0&lt;/li&gt;
&lt;li&gt;On right side: Utility Area &amp;gt; File Inspecter &amp;gt; Interface Builder Document&lt;/li&gt;
&lt;li&gt;Choose &amp;lsquo;XCode 7.x&amp;rsquo; for &amp;lsquo;Opens in&amp;rsquo;s&amp;rsquo; value. The process is shown in GIF below:&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img alt="Downgrade to XCode 7 using XCode 8" class="gallery-image" data-flex-basis="338px" data-flex-grow="141" height="340" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://nabeelarif.github.io/p/downgrade-ui-files-from-xcode-8-to-xcode-7/DowngradeToXCode7.gif" width="480"&gt;&lt;/p&gt;
&lt;h1 id="using-any-text-editor"&gt;Using any text Editor
&lt;/h1&gt;&lt;p&gt;If you do not have access to XCode 8 at the moment you can use any of the text editors available to downgrade to XCode 7. So that you have no more build errors.&lt;/p&gt;
&lt;p&gt;Just open your .storyboard/.xib file in a text editor of your choice and remove following line:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;capability name=&amp;#34;Document saved in the Xcode 8 format&amp;#34; minToolVersion=&amp;#34;8.0&amp;#34;/&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;img alt="Downgrade to XCode 7 using text editor" class="gallery-image" data-flex-basis="461px" data-flex-grow="192" height="920" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://nabeelarif.github.io/p/downgrade-ui-files-from-xcode-8-to-xcode-7/ManuallyDowngradeToXCode7.png" srcset="https://nabeelarif.github.io/p/downgrade-ui-files-from-xcode-8-to-xcode-7/ManuallyDowngradeToXCode7_hu_ca4c46121aa4ca69.png 800w, https://nabeelarif.github.io/p/downgrade-ui-files-from-xcode-8-to-xcode-7/ManuallyDowngradeToXCode7_hu_4cc0582373b7bb4e.png 1600w, https://nabeelarif.github.io/p/downgrade-ui-files-from-xcode-8-to-xcode-7/ManuallyDowngradeToXCode7.png 1770w" width="1770"&gt;&lt;/p&gt;
&lt;p&gt;After removing this line you will be able to compile your project successfully.&lt;/p&gt;
&lt;p&gt;To understand why we removed above line you can explore the changes once a UI file is saved in Xcode 8 format. If you will open .storyboard or .xib file on XCode 8 first time. It will show you a dialog as shown below to make these files compatible with XCode 8 document format.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Dialog to make storyboard file XCode8 compatible" class="gallery-image" data-flex-basis="588px" data-flex-grow="245" height="784" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://nabeelarif.github.io/p/downgrade-ui-files-from-xcode-8-to-xcode-7/StoryboardUpgradedToXCode8.png" srcset="https://nabeelarif.github.io/p/downgrade-ui-files-from-xcode-8-to-xcode-7/StoryboardUpgradedToXCode8_hu_f8918747d608ad3d.png 800w, https://nabeelarif.github.io/p/downgrade-ui-files-from-xcode-8-to-xcode-7/StoryboardUpgradedToXCode8_hu_2b793e25052b4dad.png 1600w, https://nabeelarif.github.io/p/downgrade-ui-files-from-xcode-8-to-xcode-7/StoryboardUpgradedToXCode8.png 1922w" width="1922"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="Git Diff of storyboard file after upgrade to XCode 8" class="gallery-image" data-flex-basis="1183px" data-flex-grow="493" height="288" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://nabeelarif.github.io/p/downgrade-ui-files-from-xcode-8-to-xcode-7/GitDiffAfterUpgradeToXCode8.png" srcset="https://nabeelarif.github.io/p/downgrade-ui-files-from-xcode-8-to-xcode-7/GitDiffAfterUpgradeToXCode8_hu_49e75aa250f7f56a.png 800w, https://nabeelarif.github.io/p/downgrade-ui-files-from-xcode-8-to-xcode-7/GitDiffAfterUpgradeToXCode8.png 1420w" width="1420"&gt;&lt;/p&gt;</description></item><item><title>OCLint integration in XCode with xctool</title><link>https://nabeelarif.github.io/p/oclint-integration-in-xcode-with-xctool/</link><pubDate>Mon, 28 Mar 2016 00:00:00 +0000</pubDate><guid>https://nabeelarif.github.io/p/oclint-integration-in-xcode-with-xctool/</guid><description>&lt;p&gt;In a hurry to do things fast and meet monster deadlines, developers keep the book of best practices aside and start coding. The result can lead to unexpected behavior in your project along with highly unmanaged code. Start following best practices of coding, with time it will become a habit.&lt;/p&gt;
&lt;p&gt;Even the experienced programmers sometimes can&amp;rsquo;t foresee the issues embedded in their code.&lt;/p&gt;
&lt;p&gt;OCLint comes with a huge list of options which are way too lengthy anc can&amp;rsquo;t be covered in a single reading. In this tutorial we will cover best configurations suggested by OCLint documentation for XCode project.&lt;/p&gt;
&lt;h2 id="about-oclint"&gt;About OCLint
&lt;/h2&gt;&lt;!--OCLInt stands for ??, developed by person company.--&gt;
&lt;p&gt;&lt;a class="link" href="http://oclint.org/" target="_blank" rel="noopener"
 &gt;OCLint&lt;/a&gt; is a static analyzer for C, C++ and objective c. The &lt;a class="link" href="http://docs.oclint.org/en/stable/" target="_blank" rel="noopener"
 &gt;documentation&lt;/a&gt; to kick off your relationship with OCLint is huge and you will be jumping from one page to another in pursuit of something, something digestible. In this tutorial our goal is to Install, Integrate &amp;amp; View Analysis report of OCLint in XCode objective-c project.&lt;/p&gt;
&lt;h2 id="prerequisite"&gt;Prerequisite
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="http://brew.sh/" target="_blank" rel="noopener"
 &gt;Homebrew&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/facebook/xctool" target="_blank" rel="noopener"
 &gt;xctool&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;XCode&lt;/li&gt;
&lt;li&gt;OSX&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="installation"&gt;Installation
&lt;/h2&gt;&lt;h3 id="1-homebrew-easy-and-recommended"&gt;1. Homebrew, Easy and Recommended
&lt;/h3&gt;&lt;p&gt;If &lt;a class="link" href="http://brew.sh/" target="_blank" rel="noopener"
 &gt;homebrew&lt;/a&gt; is configured on your system, you can use &lt;a class="link" href="https://github.com/oclint/homebrew-formulae" target="_blank" rel="noopener"
 &gt;homebrew tap&lt;/a&gt; for oclint.&lt;/p&gt;
&lt;p&gt;{% highlight text %}
$ brew tap oclint/formulae
$ brew install oclint
{% endhighlight %}&lt;/p&gt;
&lt;p&gt;And can be simplified to&lt;/p&gt;
&lt;p&gt;{% highlight text %}
$ brew install oclint/formulae/oclint
{% endhighlight %}&lt;/p&gt;
&lt;p&gt;Use following commands to update to latest version&lt;/p&gt;
&lt;p&gt;{% highlight text %}
$ brew update
$ brew upgrade oclint
{% endhighlight %}&lt;/p&gt;
&lt;h3 id="2-download"&gt;2. Download
&lt;/h3&gt;&lt;p&gt;Ignore it if you have completed installation via Homebrew.&lt;/p&gt;
&lt;p&gt;Go to &lt;a class="link" href="https://github.com/oclint/oclint/releases" target="_blank" rel="noopener"
 &gt;OCLint Releases&lt;/a&gt; on github and download latest oclint-{versionno-architecture-OS}.zip/.tar.zip. Extract the files.&lt;/p&gt;
&lt;p&gt;{% highlight text %}
-oclint-x.y.z
|&amp;ndash;LICENSE
|&amp;ndash;bin (Contains OCLint commands, from here you can execute it)
|&amp;ndash;lib (Contains clang static analyzer, reporters and rules library)
{% endhighlight %}&lt;/p&gt;
&lt;h3 id="set-path"&gt;Set Path
&lt;/h3&gt;&lt;p&gt;Once installation is complete you can set path in terminal&lt;/p&gt;
&lt;p&gt;{% highlight text %}
OCLINT_HOME=/path/to/oclint-x.y.z
export PATH=$OCLINT_HOME/bin:$PATH
{% endhighlight %}&lt;/p&gt;
&lt;h3 id="verify-installation"&gt;Verify Installation
&lt;/h3&gt;&lt;p&gt;Check whether installation is successful. If you see the output listed below, congratulations you did it.&lt;/p&gt;
&lt;p&gt;{% highlight text %}
$ oclint
oclint: Not enough positional command line arguments specified!
Must specify at least 1 positional arguments: See: oclint -help
{% endhighlight %}&lt;/p&gt;
&lt;h2 id="oclint-commands"&gt;OCLint Commands
&lt;/h2&gt;&lt;h3 id="1-oclint"&gt;1. oclint
&lt;/h3&gt;&lt;p&gt;OCLint comes with rich set of options which you can use with &amp;lsquo;oclint&amp;rsquo; command. In terminal type &lt;code&gt;$ ocline --help&lt;/code&gt; to get detailed list of configurations.&lt;/p&gt;
&lt;h3 id="2-oclint-json-compilation-database"&gt;2. oclint-json-compilation-database
&lt;/h3&gt;&lt;p&gt;It is great that OCLint provides us options to specify each file&amp;rsquo;s configurations. But in practical life our projects contains hundreds of files and it will give you a headache to do this manually. Here comes the solution &lt;code&gt;oclint-json-compilation-database&lt;/code&gt;&lt;/p&gt;
&lt;h2 id="integration-with-xcode"&gt;Integration with XCode
&lt;/h2&gt;&lt;p&gt;&lt;img alt="1. Create a new aggregate Target" class="gallery-image" data-flex-basis="466px" data-flex-grow="194" height="1172" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://nabeelarif.github.io/p/oclint-integration-in-xcode-with-xctool/XCodeNewAggregateTarget.png" srcset="https://nabeelarif.github.io/p/oclint-integration-in-xcode-with-xctool/XCodeNewAggregateTarget_hu_1297f44b26557aaf.png 800w, https://nabeelarif.github.io/p/oclint-integration-in-xcode-with-xctool/XCodeNewAggregateTarget_hu_ac25edc7adf2fb0b.png 1600w, https://nabeelarif.github.io/p/oclint-integration-in-xcode-with-xctool/XCodeNewAggregateTarget.png 2280w" width="2280"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="Name the target OCLint." class="gallery-image" data-flex-basis="466px" data-flex-grow="194" height="1172" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://nabeelarif.github.io/p/oclint-integration-in-xcode-with-xctool/XCodeNewAggregateTarget2.png" srcset="https://nabeelarif.github.io/p/oclint-integration-in-xcode-with-xctool/XCodeNewAggregateTarget2_hu_d635f17b4c3f6368.png 800w, https://nabeelarif.github.io/p/oclint-integration-in-xcode-with-xctool/XCodeNewAggregateTarget2_hu_466f2fbde46c4937.png 1600w, https://nabeelarif.github.io/p/oclint-integration-in-xcode-with-xctool/XCodeNewAggregateTarget2.png 2278w" width="2278"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="Add new runscript." class="gallery-image" data-flex-basis="466px" data-flex-grow="194" height="1024" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://nabeelarif.github.io/p/oclint-integration-in-xcode-with-xctool/AddNewRunScript.png" srcset="https://nabeelarif.github.io/p/oclint-integration-in-xcode-with-xctool/AddNewRunScript_hu_6e44c9cf3cd60c20.png 800w, https://nabeelarif.github.io/p/oclint-integration-in-xcode-with-xctool/AddNewRunScript_hu_cc062baa33d0ecc5.png 1600w, https://nabeelarif.github.io/p/oclint-integration-in-xcode-with-xctool/AddNewRunScript.png 1990w" width="1990"&gt;&lt;/p&gt;
&lt;p&gt;Add the following script to new run script.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;span class="lnt"&gt;21
&lt;/span&gt;&lt;span class="lnt"&gt;22
&lt;/span&gt;&lt;span class="lnt"&gt;23
&lt;/span&gt;&lt;span class="lnt"&gt;24
&lt;/span&gt;&lt;span class="lnt"&gt;25
&lt;/span&gt;&lt;span class="lnt"&gt;26
&lt;/span&gt;&lt;span class="lnt"&gt;27
&lt;/span&gt;&lt;span class="lnt"&gt;28
&lt;/span&gt;&lt;span class="lnt"&gt;29
&lt;/span&gt;&lt;span class="lnt"&gt;30
&lt;/span&gt;&lt;span class="lnt"&gt;31
&lt;/span&gt;&lt;span class="lnt"&gt;32
&lt;/span&gt;&lt;span class="lnt"&gt;33
&lt;/span&gt;&lt;span class="lnt"&gt;34
&lt;/span&gt;&lt;span class="lnt"&gt;35
&lt;/span&gt;&lt;span class="lnt"&gt;36
&lt;/span&gt;&lt;span class="lnt"&gt;37
&lt;/span&gt;&lt;span class="lnt"&gt;38
&lt;/span&gt;&lt;span class="lnt"&gt;39
&lt;/span&gt;&lt;span class="lnt"&gt;40
&lt;/span&gt;&lt;span class="lnt"&gt;41
&lt;/span&gt;&lt;span class="lnt"&gt;42
&lt;/span&gt;&lt;span class="lnt"&gt;43
&lt;/span&gt;&lt;span class="lnt"&gt;44
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Building &lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;TARGET_NAME&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;maxPriority&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;15000&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#Add OCLint bin directory to PATH&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;export&lt;/span&gt; &lt;span class="nv"&gt;PATH&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/usr/local/Cellar/oclint/0.10.2/bin:&lt;span class="nv"&gt;$PATH&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#Set Build path&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;BUILD_PATH&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;TARGET_TEMP_DIR&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#Check whether OCLint exists or not&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;hash&lt;/span&gt; oclint &lt;span class="p"&gt;&amp;amp;&lt;/span&gt;&amp;gt; /dev/null
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="nv"&gt;$?&lt;/span&gt; -eq &lt;span class="m"&gt;1&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;OCLint not found, analyzing stopped&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;exit&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;else&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;OCLint is installed&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#Navigate to build path directory&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; &lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;BUILD_PATH&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; ! -f compile_commands.json &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;compile_commands.json not found, possibly clean was performed&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;else&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Removing compile_commands.json&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;rm compile_commands.json
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# clean previous output&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; -f xcodebuild.log &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Removing xcodebuild.log&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;rm xcodebuild.log
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; &lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;SRCROOT&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#Clean, Build and generate compile_commands.json project&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;xctool -project DemoOCLintTargetInProject.xcodeproj &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;-configuration Debug -scheme DemoOCLintTargetInProject &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;-sdk iphonesimulator &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;-reporter json-compilation-database:&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;BUILD_PATH&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;/compile_commands.json clean build
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Starting analyzing&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; &lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;BUILD_PATH&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;oclint-json-compilation-database -v -e Pods oclint_args &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;&amp;#34;-max-priority-1=&lt;/span&gt;&lt;span class="nv"&gt;$maxPriority&lt;/span&gt;&lt;span class="s2"&gt; -max-priority-2=&lt;/span&gt;&lt;span class="nv"&gt;$maxPriority&lt;/span&gt;&lt;span class="s2"&gt; \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;-max-priority-3=&lt;/span&gt;&lt;span class="nv"&gt;$maxPriority&lt;/span&gt;&lt;span class="s2"&gt; -rc LONG_LINE=500 \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;-rc LONG_VARIABLE_NAME=100 -disable-rule=UnusedMethodParameter&amp;#34;&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;|&lt;/span&gt; sed &lt;span class="s1"&gt;&amp;#39;s/\(.*\.\m\{1,2\}:[0-9]*:[0-9]*:\)/\1 warning:/&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="sample-project"&gt;Sample project
&lt;/h2&gt;&lt;p&gt;&lt;a class="link" href="https://github.com/nabeelarif/DemoOCLintTargetInProject" target="_blank" rel="noopener"
 &gt;DemoOCLintTargetInProject&lt;/a&gt; is the project we used for above demo and is published on git.&lt;/p&gt;
&lt;!--#Where to go from here?--&gt;
&lt;!----&gt;
&lt;!--#Wanna Master OCLint?--&gt;
&lt;!----&gt;
&lt;!--#TODO--&gt;
&lt;!--- http://codingfingers.com/index.html%3Fp=11065.html--&gt;
&lt;!--- https://gavrix.wordpress.com/2013/02/28/integrating-oclint-in-xcode/--&gt;</description></item></channel></rss>