- Extension ID
- What's new?
- Description
- Supported Languages
- Technology support
- Supported iOS and third-party frameworks
- Function Point, Quality and Sizing support
- CAST Imaging Core compatibility
- Dependencies with other extensions
- Download and installation instructions
- Source code discovery
- Analysis configuration
- What results can you expect?
- Structural Rules
- Known Limitations
Summary: This document provides information about the extension supporting iOS mobile applications written in Objective-C/C/C++ built with Xcode.
Extension ID
com.castsoftware.cfamily
What's new?
See iOS - Objective-C - 1.6 - Release Notes.
Description
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 CAST detects XCode projects
The iOS Objective-C extension includes a discoverer that enables Xcode projects to be detected (see com.castsoftware.dmtxcodediscoverer). 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 com.castsoftware.cpp extension 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.
Supported Languages
The following languages used to write iOS mobile applications are supported by this extension:
Technology | Supported |
---|---|
Objective-C | |
C/C++ | |
Storyboard/XIB | |
Plist |
Technology support
Version | Supported |
---|---|
iOS 2/6 | |
iOS 7/10 | |
iOS 11 | |
iOS 12 |
Supported iOS and third-party frameworks
Framework | Supported |
---|---|
AVFoundation | |
AVKit | |
Accelerate | |
Accounts | |
AdSupport | |
AddressBook | |
AddressBookUI | |
AFNetworking | |
AssetsLibrary | |
AudioToolbox | |
AudioUnit | |
AutoLayout | |
CFNetwork | |
CloudKit | |
Contacts | |
CoreAudio | |
CoreAudioKit | |
CoreBluetooth | |
CoreData | |
CoreFoundation | |
CoreGraphics | |
CoreImage | |
CoreLocation | |
CoreMIDI | |
CoreMedia | |
CoreMotion | |
CoreTelephony | |
CoreText | |
CoreVideo | |
EventKit | |
EventKitUI | |
Foundation | |
GLKit | |
GameController | |
GameKit | |
GamePlayKit | |
HealthKit | |
HomeKit | |
iAd | |
ImageIO | |
LocalAuthentication | |
Logging | |
MapKit | |
MediaAccessibility | |
MediaPlayer | |
MessageUI | |
Metal | |
MobileCoreServices | |
OpenGLES | |
QuartzCore | |
QuickLook | |
SafariServices | |
Security | |
Social | |
Starboard | |
StoreKit | |
SystemConfiguration | |
UIKit | |
WebKit |
Function Point, Quality and Sizing support
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. |
Release | Operating System | Supported |
---|---|---|
8.3.x | Microsoft Windows |
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:
- com.castsoftware.dmtxcodediscoverer (to identify Mobile application projects in the CAST Delivery Manager Tool)
- com.castsoftware.wbslinker
Download and installation instructions
The extension will be automatically installed by CAST Imaging Console.
Source code discovery
A discoverer (see com.castsoftware.dmtxcodediscoverer) 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:
Analysis configuration
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?
Example project
Objects
C/C++
Icon | Description |
---|---|
Additional File | |
Class | |
Class Folder | |
Constructor | |
Destructor | |
Directory | |
Enum | |
Enum Item | |
Free Function | |
Global Variable | |
Header File | |
Macro | |
Member Function | |
Member Variable | |
Namespace | |
Parameter | |
Root Directory | |
Source File | |
Template Class | |
Template Class Instance | |
Template Constructor | |
Template Constructor Instance | |
Template Free Function | |
Template Free Function Instance | |
Template Member Function | |
Template Member Function Instance | |
Template Parameter | |
Template Union | |
Template Union Instance | |
Typedef | |
Union |
iOS & Objective-C
Icon | Description |
---|---|
Project | |
Workspace | |
Source File | |
Plist File | |
Story Board File | |
XIB File | |
UIApplication Delegate | |
UIApplication | |
Interface | |
Category | |
Protocol | |
Class Method | |
Method / Block | |
Action | |
Get Resource Service: NSURLConnection NSURLSession NSURLSessionTask NSURLSessionDownloadTask NSURLSessionUploadTaskNSURLSessionDataTask AFURLSessionManager AFHTTPSessionManager UIWebView | |
Post Resource Service: NSURLConnection NSURLSession NSURLSessionTask NSURLSessionDownloadTask NSURLSessionUploadTask NSURLSessionDataTask AFURLSessionManager AFHTTPSessionManager | |
Put Resource Service: NSURLConnection NSURLSession NSURLSessionTask NSURLSessionDownloadTask NSURLSessionUploadTask NSURLSessionDataTask AFURLSessionManager AFHTTPSessionManager | |
Delete Resource Service: NSURLConnection NSURLSession NSURLSessionTask NSURLSessionDownloadTask NSURLSessionUploadTask NSURLSessionDataTask AFURLSessionManager AFHTTPSessionManager | |
Interface Variable | |
Outlet | |
Property | |
Property Getter | |
Property Setter | |
UI Button | |
UI Control | |
UI TextField |
Tip
If your application is supposed to be communicating with services, ensure you have GET, POST, PUT, DELETE Service objects created after the analysis.
Structural Rules
Known Limitations
- 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.