On this page:
- Description
- Supported Languages
- Supported Versions
- Supported iOS and third-party frameworks
- Function Point, Quality and Sizing support
- CAST AIP compatibility
- Supported DBMS servers
- Prerequisites
- Dependencies with other extensions
- Download and installation instructions
- Packaging, delivering and analyzing your source code
- What results can you expect?
- Known Limitations
Target audience:
Users of the extension supporting iOS mobile applications written in Objective-C/C/C++ made with Xcode.
Summary: This document provides information about the extension supporting iOS mobile applications written in Objective-C/C/C++ made with Xcode.
What's new?
Five new quality rules covering security checks for cryptography/encryption:
- Avoid synchronizing the credentials with iCloud
- Avoid weak encryption providing sufficient key size
- Avoid creating file without protection
- Avoid Weak Encryption Algorithm
- Avoid using cryptography hash without salt
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-End | iOS 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:
Technology | Supported |
---|---|
Objective-C | |
C/C++ | |
Swift |
Supported Versions
Version | Supported |
---|---|
iOS 2/6 | |
iOS 7/10 | |
iOS 11 |
Supported iOS and third-party frameworks
Framework | Supported |
---|---|
AVFoundation | |
AVKit | |
Accelerate | |
Accounts | |
AdSupport | |
AddressBook | |
AddressBookUI | |
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 | |
ImageIO | |
LocalAuthentication | |
Logging | |
MapKit | |
MediaAccessibility | |
MediaPlayer | |
MessageUI | |
Metal | |
MobileCoreServices | |
OpenGLES | |
QuartzCore | |
QuickLook | |
SafariServices | |
Security | |
Social | |
Starboard | |
StoreKit | |
SystemConfiguration | |
UIKit | |
WebKit | |
iAd | |
AFNetworking |
- 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 Sizing | Security |
---|---|---|
CAST AIP release | Supported |
---|---|
8.3.x | |
8.2.x | |
8.1.x | |
8.0.x | |
7.3.x |
Supported DBMS servers
This extension is compatible with the following DBMS servers:
CAST AIP release | CSS2 | Oracle | Microsoft |
---|---|---|---|
8.1.x - 8.2.x |
Prerequisites
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)
Download and installation instructions
Please see:
- http://doc.castsoftware.com/display/EXTEND/Download+an+extension
- http://doc.castsoftware.com/display/EXTEND/Install+an+extension
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
- You can refer to the existing official CAST documentation for more information about the CAST Delivery Manager Tool packaging and delivery process - see: http://doc.castsoftware.com/display/DOC82/Source+Code+Delivery+Guide+for+Application+Teams.
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++
Icon | Description |
---|---|
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
Icon | Description |
---|---|
Project | |
Workspace | |
Source File | |
Plist File | |
Story Board File | |
XIB File | |
UIApplication Delegate | |
UIApplication | |
Interface | |
Category | |
Protocol | |
Class Method | |
Method | |
Action | |
Get Resource Service | |
Post Resource Service | |
Put Resource Service | |
Delete Resource Service | |
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.
Quality Rules
You can find a full list of rules delivered with this extension here:
https://technologies.castsoftware.com/?rlH=extensions/com.castsoftware.cfamily/1.2.0-funcrel.json
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.