2-7 -
The informational material contained in this section is provided as a courtesy for use by CAST’s clients. Licensing details are documented on this page: https://www.gnu.org/licenses/lgpl-3.0.en.html
The official CAST AIP technologies documentation is published here
Introduction
Recommendation :
The delivery structure must correspond to your project structure and must be reproducible in order to allow for consistency during subsequent analysis.
Ask your development team to get a standard export from the code repository (example: git clone ).
CAST AIP analysis platform performs a static analysis of the source code and builds a model of the application to verify its structural quality.
To perform the analysis, you must deliver all the elements necessary for compilation for the code generated upstream for the application.
- Files written by developers or generated by the IDE (project file, source, ...),
- The code files that are generated during compilation (eg: generated services), in order to have all the components of the system in production.
- The generated code must be structured at the time of delivery and the identification methods defined (naming rule, directory, etc.)
- Third-party libraries and referencing files for these libraries (pom.xml, ....)
- NOTE: CAST will not retrieve third-party libraries in public/private repositories (maven, npm, pip, nuggets ...) and the code will not be compiled by CAST.
It is important to exclude files that should not be scanned, for example:
- Test code
- HTML / JS files generated by documentation generation or analysis tools
- Large data files included in your deployment, but not required for the structure of the application (example: video included in a CRM, images)
For SQL databases only one DDL script per schema must be provided
- Incremental database definitions are not supported.
- Each file must start with the instruction to create the schema with a name specific to the schema (identifiable by the developers)
- The script must contain all the elements that make up the schema (Tables, fields, integrity constraints, indexes, stored procedures, etc.) but no data (no INSERT or UPDATE)
- (Optional) you may be asked for the size statistics of the tables in production in order to modulate the recommendations according to the volumes of data stored
- (Optional) you may be asked to deliver unit test code coverage reports
The delivery should consist of one zip file, with a structure similar to the one in this illustration.
Details per technology
The section below details the files expected for an analysis. Please contact the project manager in case of doubt whether a type of file is suitable or not to perform static analysis.
Note: For JavaScript and HTML5, please send the files in a "normal" format rather than a minified or bundled format (minified files i.e. *.min.js files or bundled files containing one or a few very long lines javascript files being automatically excluded from the analysis)
C C++
Requirement | CAST Comment | |||
All source files of the application, including project files. Typical extensions are .c, .cpp, .cxx, .pc… and for include : .h, .hh, .hpp, .tpp, .inl, .inc,… |
| |||
The system headers of the Operating System and compiler with which the source code is compiled. | ||||
The external (i.e third-party) libraries headers |
| |||
All makefiles |
| |||
Build log files |
| |||
Include path | ||||
Set of hard-coded macros defined by the compiler |
| |||
Macros passed as compiler or build options |
| |||
Executables and libraries organisation |
| |||
Database access API |
| |||
Dynamic code |
|
Adobe (Flex)
Requirement | Comment | ||||||
Flex | The source code must be in a file/folder structure that is able to be complied. Allowable file extensions are: *.as , *.mxml | Source code often refers to include files or other layer's executable with the relative path, hence the relative paths must be respected in the delivery folder structure. |
Fortran
Requirement | Comment | |||
The source code must be in a file/folder structure that is able to be complied. |
| |||
The allowed extensions for FORTRAN files are: |
Java JEE
Requirement | Comment | |||
All the source files of the application (all .java files), including project files and configuration files for example
| All the source code must be encoded in ASCII or in a supported Unicode encoding (UTF-8, …) Supported encoding/character sets are listed Supported Character Sets. When collecting application source code, ensure that you will have the .java files and not .class or .jar files for source code within the scope of the analysis. .class and .jar files are decompiled only to extract the signature. | |||
Build configuration files : Maven and/or Eclipse project files : *.pom, *.project, *.classpath Gradle, for information purpose Ant, Ivy scripts should be delivered but will not be analyzed automatically | Including complete hierarchy of ALL .pom and parent .pom files. These files will allow the automated discovery and analysis configuration. | |||
All libraries (.JAR) required to build the application including JDK, JEE, related libraries e.g. application server, 3rd party, framework, presentation, persistence, etc.. In the case of a maven project: Provide a copy of the local maven repository | Custom JAR files, included e.g. custom J2EE.JAR, used for Presentation and Persistence should be delivered with the source code. Failure to do so will prevent transaction identification and all depending metrics. | |||
.JAR files .WAR or .EAR should not be delivered | Required to reproduce the real production structure with the sources. | |||
If some SQL files remain in the source delivery, you must explain how to deal with them. | Normally a database must be extracted as DDL files and delivery as SQL files in a specific folder/zip | |||
Files that contain data are useless (*.dat, *.doc, *.ppt, *.xls, *.xml that contains data only) | These files are big and not required, not analyzed. So there is no need to give them. |
Copy of the local maven repository is not mandatory, only Jars files in a repository that are used by the project are mandatory.
Exclude .git, .svn folders
Message Queues
- ActiveMQ (Java, Python)
IBM MQ (Java, Python)
RabbitMQ (Java, Python)
Spring JMS
Spring APMQ
Requirement | Comment | ||||||||
ActiveMQ (Java, Python) | All configuration files | In addition to provided application files | |||||||
IBM MQ (Java, Python) | All configuration files | ||||||||
RabbitMQ (Java, Python) | All configuration files | ||||||||
Spring JMS | All configuration files | ||||||||
Spring APMQ | All configuration files |
Mobile
- Android
iOS/objective C
iOS/Swift
Requirement | Comment | ||||||||
Android | All application files + configuration files | ||||||||
iOS/objective C | All application files + configuration files | ||||||||
iOS/Swift | All application files + configuration files | ||||||||
ionic | Source code before compilation Files extensions are *.ts, *.html, *.css or *.scss | Source code written by developers is mandatory | |||||||
React Native | Source code before compilation Files extensions is *.js only | Source code written by developers is mandatory If there is another specific file extension, it must be clarified by the customer |
IBM Mainframe zOS (Cobol, JCL, CICS)
Requirements | Comments | |
---|---|---|
Cobol, JCL, CICS - Option 1 | Export of PDS (when the programs are members of a Partitioned Data Set) |
|
All the source code must be in ASCII format |
| |
TRANSACTION (.CSDs and .BMSs) |
| |
All the source code must be in ASCII format |
| |
Cobol, JCL, CICS - Option 2 | Each application must be delivered in a single folder. 1 file per object type. |
|
All the source code must be in ASCII format |
| |
Each application folder must contain sub-folders split by technology as below: | ||
|
| |
|
| |
|
| |
|
| |
Allowable File Extensions : | ||
| *.cbl, *.cob and *.cobol | |
| *.cpy and *.copy | |
| *.psb and *.dbd | |
| *.csd and *.bms | |
| *.jcl | |
| *.prc and *.proc | |
| *.inc |
EGL
Requirement | Comments |
All EGL programs files must be under one folder structure. Permitted files extension are : *.egl | The sub-directory structure can reflect the application organization. |
Microsoft .NET
Requirement | Comment | ||||||||
All artefacts required to build the system must be delivered, including:
| GENERAL GUIDELINES
EXAMPLE Given the organization pictured on the right, the full content of the "Sample .NET Application" folder must be provided, except:
To deliver 3rd parties assemblies, the "bin" folders and/or the "packages" folders may be included in the delivery.
|
Microsoft (not .NET)
ASP
VB
Requirement | Comment | |
ASP | All the source code must encoded in ASCII or a supported Unicode encoding e.g. UTF-8 |
|
All .asp / .inc ASP pages of the web application |
| |
All .asa / .htm / .html / .htc / .css / .vbs files | ||
All .htm / .html / .js / .vbs files |
| |
All .gif / . Bmp / .png / .jpg / .jpeg files |
| |
COM objects used by the above pages : .ocx, .dll, .exe |
| |
VB | All the source code must be encoded in ASCII or a supported Unicode encoding e.g. UTF-8 | Supported encoding/character sets are listed Supported Character Sets . |
Projects |
| |
Groups |
| |
All Source code referenced by the projects: .bas, .frm , .cls, .ctl,… |
| |
COM objects used by the application: .ocx, .dll, .exe |
|
Oracle Enterprise Solutions
- Oracle Forms/Reports
- PeopleSoft
- Siebel
Requirement | Comment | ||||||||
Oracle Forms/Reports | DMT’s Oracle Forms and Reports option must be used extraction. Oracle Forms Oracle Reports | ||||||||
PeopleSoft | To download the PeopleSoft extractor go to CAST Extend : https://extend.castsoftware.com/V2/ The extractor is composed of the following elements :
The above elements should be delivered to CAST :
| The specific code into PeopleSoft it is not detectable, it is mixed with the PeopleSoft code. To be able to analyze the specific code, CAST will do a comparison between the original PeopleSoft code (called Vanilla), and the PeopleSoft with the specific code (called Project). The two environments should be exactly in the same release, and extractions should be done with the CAST PeopleSoft extractor for Vanilla and Project. | |||||||
Siebel | The CAST SIEBEL extractor must be used for source code extraction. |
PHP
Requirement | Comment | |||
All the files .html .htm .phtml .php .php4 .php5 .php6 .inc .js (JavaScript) and .css of the application. |
| |||
All .gif .bmp .png .jpg .jpeg .tiff files |
|
For Php specify the framework used (symfony, drupal, joomla etc....)
IBM PL/1
Requirement | Comment | |||
Each file must contain only a single artefact or component |
| |||
DB2 table definitions must be exported to include files (PLC extension). |
| |||
The type of source code must be identifiable using the extension of the file. | ||||
All PLI program files must be under one folder structure. |
| |||
PL1 programs must have PLI extensions. | ||||
Include and table definition files must have PLC extensions |
Python
Requirement | Comment | ||||||||
Python Core | The source code for Python need to be delivered with the following file extensions : *.py | ||||||||
Python dependencies | The file containing the list of python dependencies (requirements.txt) |
IBM System i
- RPG
- Cobol AS400
Note: some artefacts, like Physical Files (*.PF), Logical Files (*.LF) are used by COBOL for AS400, but are parsed by RPG extension. Some Links may be added from COBOL to
Requirement | Comment | ||||||||
RPG | Each application must be delivered in a single folder
| For the complete list of file extensions, see RPG extension documentation Extraction source code from AS400 libraries. The QCPYSRC library can contain copies for RPG, CL and COBOL programs | |||||||
Cobol AS400 | Each application must be delivered in a single folder
| Extraction source code from AS400 libraries. The QCPYSRC library can contain copies for RPG, CL and COBOL programs. | |||||||
datastage | - dsx export of the jobs - dsx exports of the stage types |
Cobol (not IBM)
- Microfocus Cobol
- GCOS Cobol
- Cobol VMS
Requirement | Comment | ||||||||
Microfocus Cobol | All files used to build the system. Exact file types to be confirmed. | Please consult your CAST technical contact. | |||||||
GCOS Cobol | All files used to build the system. Exact file types to be confirmed. | Please consult your CAST technical contact. | |||||||
Cobol VMS | All files used to build the system. Exact file types to be confirmed. | Please consult your CAST technical contact. |
SAP
- SAP ABAP
- SAP UI5 (Fiori)
- SAP Hybris
- SAP BusinessObjects - Reporting Enterprise Solutions
Requirement | Comment | ||||||||
SAP ABAP | SAP ABAP extracted using CAST SAP Extractor NG | The CAST ABAP extractor extracts ABAP source code, the database structure (tables, index, keys, ...) and can also grab the table sizes. Various options for extraction exists : per package, per date, per Transport Request, ... | |||||||
SAP UI5 (Fiori) | Same requirements as for web / HTML5 / jQuery technologies | ||||||||
SAP Hybris | Same requirements as for Java/JEE technologies | ||||||||
SAP BusinessObjects - Reporting Enterprise Solutions | DMT’s Business Objects option must be used for source code extraction. DMT will require location of Business Objects Universes (.unv files) for extraction. |
Scripting Languages
- Korn shell
- Bourne shell
- C shell
Requirement | Comment | ||||||||
Korn shell, Bourne shell, C shell | Each file must contain only a single artefact or component |
SQL - Database
- T-SQL (Sybase and Microsoft SQL Server)
- Informix
- MariaDB
- MySQL
- PostgreSQL
- Oracle Server PL/SQL
- SQLite
- Teradata
- IBM DB2
Regarding documentation https://doc.castsoftware.com/technologies/sql/technos/
For those technologies, one file containing a DDL script containing per database/schema creation statements are requested, including constraints (PK,FK), Indexes, Store Procedures, triggers ...
Notes :
- Incremental schema creation is not supported, and incremental scripts should be removed from the delivered code.
- Data creation/initialization must not be included in the script.
Requirement | Comment | ||||||||
T-SQL (Sybase and Microsoft SQL Server) | DDL script creation is required. The following link will give you DDL extraction examples |
| |||||||
SQL Server/Sybase user used for extraction must have a user with the privileges specified in the Microsoft SQL Server/Sybase ASE sections in Required RDBMS rights for packaging a database . | |||||||||
Informix | DDL script creation is required. The following link will give you DDL extraction examples |
| |||||||
MariaDB | DDL script creation is required. The following link will give you DDL extraction examples |
| |||||||
MySQL | DDL script creation is required. The following link will give you DDL extraction examples |
| |||||||
PostgreSQL | DDL script creation is required. The following link will give you DDL extraction examples |
| |||||||
Oracle Server PL/SQL | DDL script creation is required. The following link will give you DDL extraction examples |
| |||||||
Oracle user used for extraction must either be SYSTEM or a dedicated extraction user with the privileges specified in the Oracle Server/Extraction user section in Required RDBMS rights for packaging a database . | |||||||||
SQLite | DDL script creation is required. The following link will give you DDL extraction examples |
| |||||||
Teradata | DDL script creation is required. The following link will give you DDL extraction examples |
| |||||||
IBM DB2 | DDL script creation is required. The following link will give you DDL extraction examples |
|
NoSQL
- MongoDB
- Couchbase
- Marklogic
- CouchDB
- AzureCosmosDB (Java, .net)
- DynamoDB (Java, .net)
- Elasticsearch (Java, .net)
- Memcached (Java, .net)
- Redis (Java, .net)
Requirement | Comment | ||||||||
MongoDB | MongoDB is accessed via the different frameworks written in the language of the application so there is no specific types files related to MongoDB. For the JEE application the access to MongoDB will be done in java files (refer to Java applications requirements) For the .Net application the access to MongoDB will be done in .net files (refer to .Net applications requirements) For the NodeJS application the access to MongoDB will be done in JavaScript files (refer to NodeJS applications requirements) | ||||||||
Couchbase | Couchbase is accessed via the different frameworks written in the language of the application so there is no specific types files related to Couchbase. For the JEE application the access to Couchbase will be done in java files (refer to Java applications requirements) | ||||||||
Marklogic | MarkLogic is accessed via the different frameworks written in the language of the application so there is no specific types files related to MarkLogic. For the NodeJS application the access to MarkLogic will be done in JavaScript files (refer to NodeJs applications requirements) | ||||||||
CouchDB | CouchDB is accessed via the different frameworks written in the language of the application so there is no specific types files related to CouchDB. For the NodeJS application the access to CouchDB will be done in JavaScript files (refer to NodeJs applications requirements) | ||||||||
AzureCosmosDB | |||||||||
DynamoDB | |||||||||
Elasticsearch | |||||||||
Memcached | |||||||||
Redis |
Misc. Enterprise Solutions
- TIBCO
- SAP Power Builder
- Oracle BPEL
Requirement | Comment | ||||||||
TIBCO | Project configuration files :
All Java source files of the application All properties and XML files Folder structure must be one sub folder per project | Typically all these files are under the same root folder. | |||||||
SAP Power Builder | All the source code must encoded in ASCII or a supported Unicode encoding e.g. UTF-8 |
| |||||||
PowerBuilder Libraries (.pbl) |
| ||||||||
If PowerBuilder version < 8 : file pb.ini If PowerBuilder version >= 8: file xxx.pbw and xxx.pbt |
| ||||||||
Oracle BPEL | Source files
|
|
Web
- Angular
- Angular.JS
- JavaScript
- jQuery
- ReactJS
- TypeScript
- VBScript
Note: For JavaScript and HTML5, please send the files in a "normal" format rather than a minified or bundled format (minified files i.e. *.min.js files or bundled files containing one or a few very long lines JavaScript files being automatically excluded from the analysis)
Requirement | Comment | ||||||||
Angular.JS | All application files + configurations files Code before compilation (else there will be generated code in the delivery). All the source files of the application, including project files and configuration files for example:
All libraries required to build the application, with the exception of external libraries which are not included in the analysis. | *.yaml, *.js, *.jsx, *.css, *.ts, *.tsx, *.json, *.html ... | |||||||
Angular | Source code before compilation Files extensions are *.ts, *.html, *.css or *.scss. Source folder that contains index.html, main.ts and the app folder app.modules.ts file spec.ts files are useless. Don't deliver them. | Source code written by developers is mandatory. | |||||||
JavaScript | All application files + configurations files | *.yaml, *.js, *.jsx, *.css, *.ts, *.tsx, *.json, *.html ... | |||||||
jQuery | jquery file not the minified file. | *.yaml, *.js | |||||||
ReactJS | Source code before compilation | Source code written by developers is mandatory. | |||||||
TypeScript | All application files + configurations files | *.yaml, *.js, *.jsx, *.css, *.ts, *.tsx, *.json, *.html ... | |||||||
VBScript | All application files + configurations files | *.vbs |
Node.js
Requirement | Comment | |||
All the source files of the application, including project files and configuration files for example:
| All the source code must be encoded in ASCII or in a supported Unicode encoding (UTF-8, …) | |||
Project files: package.json, package-lock.json |
Note: do not provide a copy of the node_modules/ directory
To go further
This page details the source code file types required per technology to be delivered. This document is used by the CAST Administrator during Qualification and Source Code Delivery phases as detailed at this link Prepare and deliver the source code.