Page tree
Skip to end of metadata
Go to start of metadata

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?

Please see iOS - Objective-C - 1.6 - Release Notes for information about new features/changes, fixed bugs, changes that will impact results etc.

Description

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-EndiOS 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.

Supported Languages

The following languages used to write iOS mobile applications are supported by this extension:

TechnologySupported
Objective-C(tick)
C/C++(tick)
Storyboard/XIB(tick)
Plist

(tick)

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 Versions

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

Supported iOS and third-party frameworks

FrameworkSupported
AVFoundation(tick)
AVKit(tick)
Accelerate(tick)
Accounts(tick)
AdSupport(tick)
AddressBook(tick)
AddressBookUI(tick)
AFNetworking(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)
Facebook(error)
Foundation(tick)
GLKit(tick)
GameController(tick)
GameKit(tick)
GamePlayKit(tick)
HealthKit(tick)
HomeKit(tick)
iAd(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)

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)

AIP Core compatibility

This extension is compatible with:

CAST AIP release
Supported
8.3.x(tick)

Supported DBMS servers

This extension is compatible with the following DBMS servers:

DBMS

Supported

CSS / PostgreSQL(tick)

Prerequisites

(tick)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:

  • Objective-C Analyzer (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

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:

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:

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?

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

CAST Enlighten

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
  • 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.

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.
  • No labels