This documentation is not maintained. Please refer to doc.castsoftware.com/technologies to find the latest updates.

Summary: This document provides information about the extension supporting iOS mobile applications written in Objective-C/C/C++ made with Xcode.

What's new?

  • Better support of web services call with NSURLSessionTask, NSURLSessionDownloadTask, NSURLSessionUploadTask, NSURLSessionDataTask

Description

This extension provides support for iOS mobile applications written in Objective-C/C/C++ made with Xcode.

In what situation should you install this extension?

If you have an iOS mobile application written in Objective-C/C/C++ and made 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 do support the following cross-technology stacks:

iOS Front-End connected JEE Back-EndiOS Front-End connected Node.js Back-End

How the CAST Delivery Manager Tool detects XCode projects

The iOS extension includes a CAST Delivery Manager Tool (DMT) "plugin" that enables Xcode projects to be detected (see Xcode Discoverer). The DMT 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 CAST AIP extension for C Family?

The CAST AIP extension for C Family also supports C/C++/Objective-C, however, the iOS extension has built in support for discovering (in the CAST Delivery Manager Tool) 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 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:

TechnologySupported
Objective-C(tick)
C/C++(tick)
Swift(error)

Supported Versions

VersionSupported
iOS 2/6(error)
iOS 7/10(tick)
iOS 11(error)

Supported iOS and third-party frameworks

FrameworkSupported
AVFoundation(tick)
AVKit(tick)
Accelerate(tick)
Accounts(tick)
AdSupport(tick)
AddressBook(tick)
AddressBookUI(tick)
AssetsLibrary(tick)
AudioToolbox(tick)
AudioUnit(tick)
AutoLayout(tick)
CFNetwork(tick)
CloudKit(tick)
Contacts(tick)
CoreAudio(tick)
CoreAudioKit(tick)
CoreBluetooth(tick)
CoreData(tick)
CoreFoundation(tick)
CoreGraphics(tick)
CoreImage(tick)
CoreLocation(tick)
CoreMIDI(tick)
CoreMedia(tick)
CoreMotion(tick)
CoreTelephony(tick)
CoreText(tick)
CoreVideo(tick)
EventKit(tick)
EventKitUI(tick)
Foundation(tick)
GLKit(tick)
GameController(tick)
GameKit(tick)
GamePlayKit(tick)
HealthKit(tick)
HomeKit(tick)
ImageIO(tick)
LocalAuthentication(tick)
Logging(tick)
MapKit(tick)
MediaAccessibility(tick)
MediaPlayer(tick)
MessageUI(tick)
Metal(tick)
MobileCoreServices(tick)
OpenGLES(tick)
QuartzCore(tick)
QuickLook(tick)
SafariServices(tick)
Security(tick)
Social(tick)
Starboard(tick)
StoreKit(tick)
SystemConfiguration(tick)
Twitter(tick)
UIKit(tick)
WebKit(tick)
iAd(tick)
Facebook(error)
AFNetworking(error)

Function Point, Quality and Sizing support

This extension provides the following 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
Function Points
(transactions)
Quality and SizingSecurity
(tick)(tick)(tick)

CAST AIP compatibility

This extension is compatible with:

CAST AIP release
Supported
8.3.x(error)
8.2.x(tick)
8.1.x(tick)
8.0.x(error)
7.3.x(error)

Supported DBMS servers

This extension is compatible with the following DBMS servers:

CAST AIP releaseCSS2OracleMicrosoft
All supported releases(tick)(tick)(tick)

Prerequisites

(tick)An installation of any compatible release of CAST AIP (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:

  •  C Family (to analyze the source code)
  • Xcode project discoverer (to identify Mobile application projects in the CAST Delivery Manager Tool)
  • Web services linker service (internal technical extension)
Note that when using the CAST Extension Downloader to download the extension and the Manage Extensions interface in CAST Server Manager to install the extension, any dependent extensions are automatically downloaded and installed for you. You do not need to do anything.

Download and installation instructions

Please see:

The latest release status of this extension can be seen when downloading it from the CAST Extend server.

Packaging, delivering and analyzing your source code

Once the extension is installed, no further configuration changes are required before you can package your source code and run an analysis. The process of packaging, delivering and analyzing your source code is as follows:

Packaging and delivery

Using the CAST Delivery Manager Tool:

  • create a new Version
  • create a new Package for your Xcode application source code using the Files on your file system option:

  • Define the root folder of your Application source code:

  • Run the Package action: if your source code is a genuine Xcode project, then the CAST Delivery Manager Tool will discover the project(s) as shown below:

  • Deliver the Version

Analyzing

Using the CAST Management Studio:

  • Accept and deploy the Version in the CAST Management Studio.
  • An Analysis Unit will have been automatically created in the Current Version tab for each Xcode project discovered by the CAST Delivery Manager Tool and you do not need to do anything further (unless you need to perform some advanced configuration):

Note that in each Analysis Unit created for an Xcode project discovered by the CAST Delivery Manager Tool, the following two options should be set as shown below:

Analysis/snapshot generation

  • Run a test analysis on the Analysis Units
  • Make sure you have manually run the Import Assessment Models option.
  • Generate a new snapshot.

What results can you expect?

Once the analysis/snapshot generation has completed, you can view the results in the normal manner:

CAST Enlighten

CAST Management Studio analysis content

Objects

The following objects are displayed in CAST Enlighten:

C/C++

IconDescription
Constructor
Class
Class Folder
Destructor
Directory
Enum
Enum Item
Free Function
Global Variable
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
Additional File

iOS & Objective-C

IconDescription
Project
Workspace
Source File
Plist File
Story Board File
XIB File
UIApplication Delegate

UIApplication
Interface
Category
Protocol
Class Method
Method
Action
Get Resource Service (NSURLConnection, NSURLSession, NSURLSessionTask, NSURLSessionDownloadTask, NSURLSessionUploadTask, NSURLSessionDataTask)
Post Resource Service (NSURLConnection, NSURLSession, NSURLSessionTask, NSURLSessionDownloadTask, NSURLSessionUploadTask, NSURLSessionDataTask)
Put Resource Service (NSURLConnection, NSURLSession, NSURLSessionTask, NSURLSessionDownloadTask, NSURLSessionUploadTask, NSURLSessionDataTask)
Delete Resource Service (NSURLConnection, NSURLSession, NSURLSessionTask, NSURLSessionDownloadTask, NSURLSessionUploadTask, NSURLSessionDataTask)
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.

Rules

You can find a full list of rules delivered with this extension here:

https://technologies.castsoftware.com/rules?rlH=AIP/extensions/com.castsoftware.cfamily/versions/1.3.0-funcrel/quality-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.

Some other limitations come from the CFamily anayzer, please refer to the CFamily documentation.