Summary: This document provides information about the extension supporting iOS mobile applications written in Objective-C/C/C++ built with Xcode.
Please see iOS - Objective-C - 1.6 - Release Notes for information about new features/changes, fixed bugs, changes that will impact results etc.
This extension provides support for iOS mobile applications written in Objective-C built with Xcode.
In what situation should you install this extension?
If you have an iOS mobile application written in Objective-C and built with Xcode and you want to view the source code object types and their links with other objects, then you should install this extension. Regarding Front-End to Back-End connections, we support the following cross-technology stacks:
|iOS Front-End connected JEE Back-End||iOS Front-End connected Node.js Back-End|
How the CAST Delivery Manager Tool detects XCode projects
The iOS Objective-C extension includes a discoverer that enables Xcode projects to be detected (see Xcode Discoverer). CAST will search for the project.pbxproj (or a .pbxproj file) - when one is found, the contents are inspected and are used to determine the list of projects present in the root folder.
What are the differences with the extensions for Objective-C and C/C++?
The iOS Objective-C extension supports Objective-C and the C and Cpp Analyzer supports C/C++, however, the iOS Objective-C extension has built in support for discovering Xcode projects that are primarily used to build Mobile applications for the iOS Operating System. Therefore, if your project is an Xcode project, you should use the iOS Objective-C extension to take advantage of the built in discovery feature.
The following languages used to write iOS mobile applications are supported by this extension:
Analysis with Swift
When analysing application with mixed code Objective-C/Swift, links will be created between methods from Objective-C and methods from Swift on both directions.
Supported iOS and third-party frameworks
- Function Points (transactions): a green tick indicates that OMG Function Point counting and Transaction Risk Index are supported
- Quality and Sizing: a green tick indicates that CAST can measure size and that a minimum set of Quality Rules exist
|Quality and Sizing||Security|
CAST AIP release
Supported DBMS servers
This extension is compatible with the following DBMS servers:
|CSS / PostgreSQL|
|An installation of any compatible release of AIP Core (see table above)|
Dependencies with other extensions
Some CAST extensions require the presence of other CAST extensions in order to function correctly. The iOS extension requires that the following other CAST extensions are also installed:
- Web services linker service (internal technical extension)
Download and installation instructions
The extension will be automatically downloaded and installed in AIP Console. You can also manually install the extension using the Application - Extensions interface. When installed, follow the instructions below to run a new analysis/snapshot to generate new results:
- Advanced onboarding - run and validate the initial analysis
- Advanced onboarding - snapshot generation and validation
Source code discovery
A discoverer (see Xcode Discoverer) is provided with the extension to automatically detect Xcode code: CAST will search for the project.pbxproj (or a .pbxproj file) - when one is found, the contents are inspected and are used to determine the list of projects present in the root folder. For every Xcode project located, one C/C++ Technology Analysis Unit will be created:
For each C/C++ Technology Analysis Unit created for an Xcode project discovered by CAST, the following options should be set as shown below:
What results can you expect?
Once the analysis/snapshot generation has completed, you can view the results in the normal manner:
The following objects are displayed in CAST Enlighten:
|Template Class Instance|
|Template Constructor Instance|
|Template Free Function|
|Template Free Function Instance|
|Template Member Function|
|Template Member Function Instance|
|Template Union Instance|
iOS & Objective-C
|Story Board File|
Get Resource Service:
Post Resource Service:
Put Resource Service:
Delete Resource Service:
If your application is supposed to be communicating with services, ensure you have GET, POST, PUT, DELETE Service objects created after the analysis.
- awakeFromNib() method will be linked to NSObject and not the class instance that overwrites this method.
- "id" object does not guarantee we could find the real Class object.