SCA Guide 19.1.0
SCA Guide 19.1.0
User Guide
Legal Notices
Micro Focus
The Lawn
22-30 Old Bath Road
Newbury, Berkshire RG14 1QN
UK
https://www.microfocus.com
Warranty
The only warranties for products and services of Micro Focus and its affiliates and licensors (“Micro Focus”) are set forth in
the express warranty statements accompanying such products and services. Nothing herein should be construed as
constituting an additional warranty. Micro Focus shall not be liable for technical or editorial errors or omissions contained
herein. The information contained herein is subject to change without notice.
Copyright Notice
© Copyright 2003 - 2019 Micro Focus or one of its affiliates
Trademark Notices
Adobe™ is a trademark of Adobe Systems Incorporated.
Microsoft® and Windows® are U.S. registered trademarks of Microsoft Corporation.
UNIX® is a registered trademark of The Open Group.
Documentation Updates
The title page of this document contains the following identifying information:
l Software Version number
l Document Release Date, which changes each time the document is updated
l Software Release Date, which indicates the release date of this version of the software
To check for recent updates or to verify that you are using the most recent edition of a document, go to:
https://www.microfocus.com/support-and-services/documentation
Contents
Preface 11
Contacting Micro Focus Fortify Customer Support 11
For More Information 11
About the Documentation Set 11
Change Log 12
Chapter 1: Introduction 15
Fortify Static Code Analyzer 15
Fortify CloudScan 15
Fortify Scan Wizard 16
Fortify Software Security Content 16
About the Analyzers 17
Related Documents 18
All Products 19
Micro Focus Fortify CloudScan 20
Micro Focus Fortify Software Security Center 20
Micro Focus Fortify Static Code Analyzer 21
Preface
Change Log
The following table lists changes made to this document. Revisions to this document are published
between software releases only if the changes made affect product functionality.
Software Release /
Document Version Changes
19.1.0 Added:
l This document now includes all content from the Micro Focus Fortify
Static Code Analyzer Installation Guide and the Micro Focus Fortify
Static Code Analyzer Performance Guide, which are no longer
published as of this release.
Updated:
l "Translating JavaScript Technologies" on page 59 - The Higher Order
Analyzer is now enabled by default for JavaScript and TypeScript
l "Using the Django Framework with Python" on page 64 and "Python
Command-Line Options" on page 64 - Added a description of a new
feature to automatically discover Django template locations
l "iOS Code Analysis Command-Line Syntax" on page 68 and "Android
Code Analysis Command-Line Syntax" on page 69 - Added examples
for translating property list files and configuration files
l "Importing the Transport Request" on page 80 - Clarified the supported
SAP version for the Fortify ABAP Extractor transport request and
added a suggestion if the import fails
l "Running the Fortify ABAP Extractor" on page 82 - Updated to provide
more details
l "Using the Fortify Maven Plugin" on page 99 - Clarified the two
different ways to analyze a maven project
l "Output Options" on page 116 - Added a description of the FVDL
output format and added options to exclude information from the
FVDL file
l "Sample Scans" on page 142 - Table updated to show data for the
current release
Software Release /
Document Version Changes
18.20 Added:
l "Uninstalling the Fortify ABAP Extractor" on page 86
Updated:
l "Translating .NET Code" on page 49 - Added Fortify Static Code
Analyzer MSBuild integration and changed manual command-line
option descriptions to specify that they to be used only for translating
binaries
l "Translating JavaScript Technologies" on page 59 - Includes new
information about how to translate and scan TypeScript code
l "Translating Python Code" on page 63 -Described new support for
namespace packages and other changes
l "Translating Code for Mobile Platforms" on page 67 - Expanded the
information for both iOS and Android projects
l "Using the Fortify Maven Plugin" on page 99 - Updated the command
syntax to translate code with the Fortify Maven Plugin
l "MSBuild Integration" on page 100 - Clarified the three different
methods of integrating Fortify Static Code Analyzer with MSBuild
l "Translation Options" on page 111 - Added TYPESCRIPT as a valid
value for the -noextension-type option
l "Generating a BIRT Report" on page 135 - Options added to support
new DISA STIG versions (4.5, 4.6, and 4.7), and added a new report
template DISA CCI 2.
l "Accessing Log Files" on page 159 - Logging updates
l "fortify-sca.properties" on page 173 - Added new properties:
com.fortify.sca.LogLevel and
com.fortify.sca.skip.libraries.typescript, added
typescript as a valid value for several properties
18.10 Updated:
Revision 1: June 1, l "Translating Python Code" on page 63 - Provided more information for
2018 the -python-path option and added examples
Software Release /
Document Version Changes
18.10 Added:
l "Translating AngularJS Code" on page 62 - Merged the AngularJS
Technical Preview information into this guide
l "Downloading Customized Salesforce Database Structure Information"
on page 73 for Apex translation
Updated:
l "Binary .NET Translation Command-Line Options" on page 52 and
"Fortify.TranslateTask" on page 104 - New options for Shared Projects
and Xamarin projects
l "Python Command-Line Options" on page 64 - New option for Python
version and other minor edits
l "Maven Integration" on page 97 - Branding changes for the Fortify
Maven Plugin group ID
l "Fortify.TranslateTask" on page 104 - Added Xamarin options for the
custom MSBuild translate task
l "fortify-sca.properties" on page 173 - New properties for .NET and
Python
l "About the Analyzers" on page 17 and "fortify-sca.properties" on
page 173 - Merged the Higher Order Analyzer Technical Preview
information into this guide
l Minor edits to incorporate branding changes
Fortify CloudScan
You can use Micro Focus Fortify CloudScan to manage your resources by offloading the processor-
intensive scanning phase of the Fortify Static Code Analyzer analysis from build machines to a cloud of
machines provisioned for this purpose. For some languages, Fortify CloudScan can perform both the
translation and the analysis (scan) phases in the cloud.
After the translation phase is completed on the build machine, Fortify CloudScan generates a mobile
build session and moves it to an available machine for scanning. In addition to freeing up the build
machines, this process makes it easy to expand the system by adding more resources to the cloud as
needed, without having to interrupt the build process. In addition, users of Micro Focus Fortify
Software Security Center can direct Fortify CloudScan to output the FPR file directly to the server.
For detailed information about how to use Fortify CloudScan, see the Micro Focus Fortify CloudScan
Installation, Configuration, and Usage Guide.
Analyzer Description
Buffer The Buffer Analyzer detects buffer overflow vulnerabilities that involve writing or
reading more data than a buffer can hold. The buffer can be either stack-allocated
or heap-allocated. The Buffer Analyzer uses limited interprocedural analysis to
determine whether or not there is a condition that causes the buffer to overflow. If
any execution path to a buffer leads to a buffer overflow, Fortify Static Code
Analyzer reports it as a buffer overflow vulnerability and points out the variables
that could cause the overflow. If the value of the variable causing the buffer
overflow is tainted (user-controlled), then Fortify Static Code Analyzer reports it as
well and displays the dataflow trace to show how the variable is tainted.
Configuration The Configuration Analyzer searches for mistakes, weaknesses, and policy violations
in application deployment configuration files. For example, the Configuration
Analyzer checks for reasonable timeouts in user sessions in a web application.
Content The Content Analyzer searches for security issues and policy violations in HTML
content. In addition to static HTML pages, the Content Analyzer performs these
checks on files that contain dynamic HTML, such as PHP, JSP, and classic ASP files.
Control Flow The Control Flow Analyzer detects potentially dangerous sequences of operations.
By analyzing control flow paths in a program, the Control Flow Analyzer determines
whether a set of operations are executed in a certain order. For example, the Control
Flow Analyzer detects time of check/time of use issues and uninitialized variables,
and checks whether utilities, such as XML readers, are configured properly before
being used.
Analyzer Description
Dataflow The Dataflow Analyzer detects potential vulnerabilities that involve tainted data
(user-controlled input) put to potentially dangerous use. The Dataflow Analyzer
uses global, interprocedural taint propagation analysis to detect the flow of data
between a source (site of user input) and a sink (dangerous function call or
operation). For example, the Dataflow Analyzer detects whether a user-controlled
input string of unbounded length is copied into a statically sized buffer, and detects
whether a user-controlled string is used to construct SQL query text.
Higher Order The Higher Order Analyzer improves the ability to track dataflow through higher-
order code. Higher-order code manipulates functions as values, generating them
with anonymous function expressions (lambda expressions), passing them as
arguments, returning them as values, and assigning them to variables and to fields
of objects. These code patterns are common in modern dynamic languages such as
JavaScript, TypeScript, Python, Ruby, and Swift.
By default, the Higher Order Analyzer runs when you scan Python, Ruby, Swift,
JavaScript, and TypeScript code. For a description of the Higher Order Analyzer
properties, see "fortify-sca.properties" on page 173 and search for "higher-order
analysis."
Semantic The Semantic Analyzer detects potentially dangerous uses of functions and APIs at
the intra-procedural level. Its specialized logic searches for buffer overflow, format
string, and execution path issues, but is not limited to these categories. For example,
the Semantic Analyzer detects deprecated functions in Java and unsafe functions in
C/C++, such as gets().
Structural The Structural Analyzer detects potentially dangerous flaws in the structure or
definition of the program. By understanding the way programs are structured, the
Structural Analyzer identifies violations of secure programming practices and
techniques that are often difficult to detect through inspection because they
encompass a wide scope involving both the declaration and use of variables and
functions. For example, the Structural Analyzer detects assignment to member
variables in Java servlets, identifies the use of loggers that are not declared static
final, and flags instances of dead code that is never executed because of a predicate
that is always false.
Related Documents
This topic describes documents that provide information about Micro Focus Fortify software products.
Note: You can find the Micro Focus Fortify Product Documentation at
https://www.microfocus.com/support-and-services/documentation. Apart from the Release Notes,
all guides are available in both PDF and HTML formats.
All Products
The following documents provide general information for all products. Unless otherwise noted, these
documents are available on the Micro Focus Product Documentation website.
About Micro Focus Fortify Product This paper provides information about how to access Micro
Software Documentation Focus Fortify product documentation.
About_Fortify_Docs_<version>.pdf Note: This document is included only with the product
download.
Micro Focus Fortify Software System This document provides the details about the
Requirements environments and products supported for this version of
Fortify Software.
Fortify_Sys_Reqs_<version>.pdf
Micro Focus Fortify Software Release This document provides an overview of the changes made
Notes to Fortify Software for this release and important
information not included elsewhere in the product
FortifySW_RN_<version>.txt
documentation.
What’s New in Micro Focus Fortify This document describes the new features in Fortify
Software <version> Software products.
Fortify_Whats_New_<version>.pdf
Micro Focus Fortify Open Source and This document provides open source and third-party
Third-Party License Agreements software license agreements for software components used
in Fortify Software.
Fortify_OpenSrc_<version>.pdf
Micro Focus Fortify CloudScan This document provides information about how to
Installation, Configuration, and Usage install, configure, and use Fortify CloudScan to
Guide streamline the static code analysis process. It is written
for anyone who intends to install, configure, or use
CloudScan_Guide_<version>.pdf
Fortify CloudScan for offloading the scanning phase of
their Fortify Static Code Analyzer process.
Micro Focus Fortify Software Security This document provides Fortify Software Security Center
Center User Guide users with detailed information about how to deploy and
use Software Security Center. It provides all of the
SSC_Guide_<version>.pdf
information you need to acquire, install, configure, and use
Software Security Center.
It is intended for use by system and instance
administrators, database administrators (DBAs), enterprise
security leads, development team managers, and
developers. Software Security Center provides security
team leads with a high-level overview of the history and
current status of a project.
Micro Focus Fortify Static Code This document describes how to install and use Fortify
Analyzer User Guide Static Code Analyzer to scan code on many of the major
programming platforms. It is intended for people
SCA_Guide_<version>.pdf
responsible for security audits and secure coding.
Micro Focus Fortify Static Code This document provides the information that you need to
Analyzer Custom Rules Guide create custom rules for Fortify Static Code Analyzer. This
guide includes examples that apply rule-writing concepts to
SCA_Cust_Rules_Guide_<version>.zip
real-world security issues.
Micro Focus Fortify Audit Workbench This document describes how to use Fortify Audit
User Guide Workbench to scan software projects and audit analysis
results. This guide also includes how to integrate with bug
AWB_Guide_<version>.pdf
trackers, produce reports, and perform collaborative
auditing.
Micro Focus Fortify Plugins for Eclipse This document provides information about how to install
Installation and Usage Guide and use the Fortify Complete and the Fortify Remediation
Plugins for Eclipse.
Eclipse_Plugins_Guide_<version>.pdf
Micro Focus Fortify Plugins for IntelliJ, This document describes how to install and use both the
WebStorm, and Android Studio Fortify Analysis Plugin for IntelliJ IDEA and Android Studio
Installation and Usage Guide and the Fortify Remediation Plugin for IntelliJ IDEA,
Android Studio, and WebStorm.
IntelliJ_AndStud_Plugins_Guide_
<version>.pdf
Micro Focus Fortify Jenkins Plugin This document describes how to install, configure, and use
Installation and Usage Guide the plugin. This documentation is available at
https://www.microfocus.com/documentation/fortify-
Jenkins_Plugin_Guide_<version>.pdf
jenkins-plugin.
Micro Focus Fortify Security Assistant This document describes how to install and use Fortify
Plugin for Eclipse User Guide Security Assistant plugin for Eclipse to provide alerts to
security issues as you write your Java code.
SecAssist_Eclipse_Guide_
<version>.pdf
Micro Focus Fortify Extension for This document provides information about how to install
Visual Studio User Guide and use the Fortify extension for Visual Studio to analyze,
audit, and remediate your code to resolve security-related
VS_Ext_Guide_<version>.pdf
issues in solutions and projects.
Micro Focus Fortify Static Code This document describes the properties used by Fortify
Analyzer Tools Properties Reference Static Code Analyzer tools.
Guide
SCA_Tools_Props_Ref_<version>.pdf
Component Description
Micro Focus Fortify Audit Provides a graphical user interface for Fortify Static Code Analyzer that
Workbench helps you organize, investigate, and prioritize analysis results so that
developers can fix security flaws quickly.
Micro Focus Fortify Adds the ability to scan and analyze the entire codebase of a project and
Plugin for Eclipse apply software security rules that identify the vulnerabilities in your Java
code from the Eclipse IDE. The results are displayed, along with
descriptions of each of the security issues and suggestions for their
elimination.
Component Description
Micro Focus Fortify Adds the ability to run Fortify Static Code Analyzer scans on the entire
Analysis Plugin for IntelliJ codebase of a project and apply software security rules that identify the
and Android Studio vulnerabilities in your code from the IntelliJ and Android Studio IDEs.
Micro Focus Fortify Adds the ability to scan and locate security vulnerabilities in your
Extension for Visual solutions and projects and displays the scan results in Visual Studio. The
Studio results include a list of issues uncovered, descriptions of the type of
vulnerability each issue represents, and suggestions on how to fix them.
This extension also includes remediation functionality that works with
audit results stored on a Micro Focus Fortify Software Security Center
server.
Micro Focus Fortify Scan A tool to quickly prepare a script that you can use to scan your code with
Wizard Fortify Static Code Analyzer and optionally, upload the results directly
to Fortify Software Security Center.
The following table describes the components that are included in the Fortify Static Code Analyzer and
Applications package.
Component Description
Micro Focus Fortify Works with Fortify Software Security Center for developers who
Remediation Plugin for want to remediate issues detected in source code from the Eclipse
Eclipse IDE.
Micro Focus Fortify Works in the IntelliJ, WebStorm, and Android Studio IDEs and with
Remediation Plugin for Fortify Software Security Center to add remediation functionality to
IntelliJ, WebStorm, and your security analysis.
Android Studio
The following table describes the applications you can use with Fortify Static Code Analyzer in
continuous integration that are available from other marketplaces.
Component Description
Micro Focus Fortify Provides the ability to analyze a project with Fortify Static Code
Component Description
Jenkins Plugin Analyzer, upload analysis results to Fortify Software Security Center,
and view details about the results from Jenkins.
Micro Focus Fortify Provides the ability to analyze a project with Fortify Static Code
Bamboo Plugin Analyzer, and upload analysis results to Fortify Software Security
Center with Bamboo.
Note: On non-windows systems, you must install Fortify Static Code Analyzer and applications as a
user that has a home directory with write permission. Do not install Fortify Static Code Analyzer
and applications as a non-root user that has no home directory.
After you complete the installation, see "Post-Installation Tasks" on page 33 for additional steps you
can perform to complete your system setup. You can also configure settings for runtime analysis,
output, and performance of Fortify Static Code Analyzer and its components by updating the installed
configuration files. For information about the configuration options for Fortify Static Code Analyzer,
see "Configuration Options" on page 171. For information about configuration options for Fortify
Static Code Analyzer component applications, see the Micro Focus Fortify Static Code Analyzer Tools
Properties Reference Guide.
5. If you are installing the Fortify extension for Visual Studio 2015 or 2017, you are prompted to
specify whether to install the extensions for the current install user or for all users.
The default is to install the extensions for the current install user.
6. Specify the path to the fortify.license file, and then click Next.
7. Specify the settings required to update your security content.
To update the security content for your installation:
Note: For installations on non-Windows platforms and for deployment environments that do
not have access to the Internet during installation, you can update the security content using
the fortifyupdate utility. See "Manually Installing Fortify Security Content" on page 29.
a. Specify the URL address of the update server. To use the Fortify Rulepack update server for
security content updates, specify the URL as: https://update.fortify.com.
b. (Optional) Specify the proxy host and port number of the update server.
c. Click Next.
8. Specify if you want to migrate from a previous installation of Fortify Static Code Analyzer on your
system.
Migrating from a previous Fortify Static Code Analyzer installation preserves Fortify Static Code
Analyzer artifact files.
Note: You can also migrate Fortify Static Code Analyzer artifacts using the scapostinstall
command-line utility. For information on how to use the post-install tool to migrate from a
previous Fortify Static Code Analyzer installation, see "Migrating Properties Files" on page 33.
10. Click Next to proceed to install Fortify Static Code Analyzer and applications.
11. After Fortify Static Code Analyzer is installed, select Update security content after installation
if you want to update the security content, and then click Finish.
The Security Content Update Result window displays the security content update results.
fortify_license_path=<license_file_location>
UpdateServer=<update_server_url>
UpdateProxyServer=<proxy_server>
UpdateProxyPort=<port_number>
d. If you do not want to install the sample source code projects, add the following line:
InstallSamples=0
fortify_license_path=C:\Users\admin\Desktop\fortify.license
UpdateServer=https://internalserver.abc.com
UpdateProxyServer=webproxy.abc.company.com
UpdateProxyPort=8080
MigrateSCA=1
enable-components=AWB_group,VS2017
VS_all_users=1
installdir=C:\Fortify
2. Save the options file in the same directory as the installer using the same name as the installation
file with the .options file extension.
For example, if the installer file name is: Fortify_SCA_and_Apps_<version>_windows_
x64.exe, then save your options file with the name Fortify_SCA_and_Apps_<version>_
windows_x64.exe.options.
3. Run the silent install command for your operating system:
macOS You must uncompress the zip file before you run the command.
Fortify_SCA_and_Apps_<version>_osx_x64.app/Contents/
MacOS/installbuilder.sh --mode unattended --optionfile <full_
path_to_option_file>
macOS You must uncompress the provided zip file before you run the command.
Fortify_SCA_and_Apps_<version>_osx_x64.app/Contents/
MacOS/installbuilder.sh --mode text
Note: If you do not have administrative privileges and you are upgrading the Fortify Extension for
Visual Studio 2015 or 2017 that was previously installed using an administrative privileged user
account, you must first uninstall the Fortify Extension for Visual Studio from Visual Studio 2015 or
2017 using an administrative privilege account.
Fortify Static Code Analyzer that you are uninstalling. The Fortify Static Code Analyzer
(sca<version>) folder is not removed.
l Click No to retain the application settings on your system.
Uninstalling on Other Platforms
To uninstall Fortify Static Code Analyzer software on macOS, Unix, and Linux platforms:
1. Back up your configuration, including any important files you have created.
2. Run the uninstall command located in the <sca_install_dir> for your operating system:
Unix or Linux Uninstall_FortifySCAandApps_<version>.exe
macOS Uninstall_FortifySCAandApps_<version>.app
3. You are prompted to indicate whether to remove all application settings. Do one of the following:
l Click Yes to remove the application setting folders for the tools associated with the version of
Fortify Static Code Analyzer that you are uninstalling. The Fortify Static Code Analyzer
(sca<version>) folder is not removed.
l Click No to retain the application settings on your system.
macOS Uninstall_FortifySCAandApps_
<version>.app/Contents/MacOS/installbuilder.sh
--mode unattended
Note: The uninstaller removes the application setting folders associated with the version of Fortify
Static Code Analyzer that you are uninstalling.
macOS Uninstall_FortifySCAandApps_
<version>.app/Contents/MacOS/installbuilder.sh --mode text
Post-Installation Tasks
Post-installation tasks prepare you to start using Fortify Static Code Analyzer and tools.
Specifying a Locale
English is the default locale for a Fortify Static Code Analyzer installation.
To change the locale for your Fortify Static Code Analyzer installation:
1. Navigate to the bin directory from the command line.
2. At the command prompt, type scapostinstall.
3. Type 2 to select Settings.
5. Type 1 to select Server URL, and then type the Fortify Software Security Center server URL.
For example, https://mywebserver/ssc.
6. To specify proxy settings for the connection, do the following:
a. Type 2 to select Proxy Server, and then type the proxy server path.
b. Type 3 to select Proxy Server Port, and then type the proxy server port number.
c. To specify the proxy server username and password, use option 4 for the username and
option 5 for the password.
7. (Optional) You can also specify the following:
l Whether to update security content from your Fortify Software Security Center server
(option 6)
l The Fortify Software Security Center user name (option 7)
aspnet_regiis -i
Find this command in the .NET Framework installation directory. For example, it is often located in:
C:\Windows\Microsoft.NET\Framework64\v4.0.30319
Analysis Process
There are four distinct phases that make up the analysis process:
1. Build Integration—Choose whether to integrate Fortify Static Code Analyzer into your build tool.
For descriptions of build integration options, see "Integrating into a Build" on page 94.
2. Translation—Gathers source code using a series of commands and translates it into an
intermediate format associated with a build ID. The build ID is usually the name of the project you
are translating. For more information, see "Translation Phase" on the next page.
3. Analysis—Scans source files identified in the translation phase and generates an analysis results
file (typically in the Fortify Project Results (FPR) format). FPR files have the .fpr file extension.
For more information, see "Analysis Phase" on page 39.
4. Verification of translation and analysis—Verifies that the source files were scanned using the
correct Rulepacks and that no errors were reported. For more information, see "Translation and
Analysis Phase Verification" on page 40.
The following is an example of the sequence of commands you use to translate and analyze code:
The three commands in the previous example illustrates the following steps in the analysis process:
1. Remove all existing Fortify Static Code Analyzer temporary files for the specified build ID.
Always begin an analysis with this step to analyze a project with a previously used build ID.
2. Translate the project code.
This step can consist of multiple calls to sourceanalyzer with the same build ID.
3. Analyze the project code and produce the Fortify Project Results file (FPR).
Parallel Processing
Fortify Static Code Analyzer runs in parallel analysis mode to reduce the scan time of large projects. This
takes advantage of all CPU cores available on your system. When you run Fortify Static Code Analyzer,
avoid running other substantial processes during the Fortify Static Code Analyzer execution because it
expects to have the full resources of your hardware available for the scan.
Translation Phase
To successfully translate a project that is normally compiled, make sure that you have any dependencies
required to build the project available. The chapters for each source code type describe any specific
requirements.
The basic command-line syntax to perform the first step of the analysis process, file translation, is:
or
The translation phase consists of one or more invocations of Fortify Static Code Analyzer using the
sourceanalyzer command. Fortify Static Code Analyzer uses a build ID (-b option) to tie the
invocations together. Subsequent invocations of sourceanalyzer add any newly specified source or
configuration files to the file list associated with the build ID.
After translation, you can use the -show-build-warnings directive to list any warnings and errors
that occurred in the translation phase:
To view the files associated with a particular build ID, use the -show-files directive:
The following chapters describe how to translate different types of source code:
l "Translating Java Code" on page 41
l "Translating .NET Code" on page 49
l "Translating C and C++ Code" on page 57
l "Translating JavaScript Technologies" on page 59
l "Translating Python Code" on page 63
l "Translating Code for Mobile Platforms" on page 67
l "Translating Ruby Code" on page 70
l "Translating Apex and Visualforce Code" on page 72
Note: Before version 16.10, the major portion of the Fortify Static Code Analyzer version number
was not the same as the Micro Focus Fortify Software Security Center version number.
To determine the Fortify Static Code Analyzer version number, type sourceanalyzer -version on
the command line.
where <file>.mbs is the file name you provide for the Fortify Static Code Analyzer mobile build
session.
Note: If necessary, you can obtain the build ID and Fortify Static Code Analyzer version from an
MBS file with the following command:
After you import your Fortify Static Code Analyzer mobile build session, you can proceed to the
analysis phase. Perform a scan with the same build ID that was used in the translation.
You cannot merge multiple mobile build sessions into a single MBS file. Each exported build session
must have a unique build ID. However, after all of the build IDs are imported on the same Fortify Static
Code Analyzer installation, you can scan multiple build IDs in one scan with the -b option (see "Analysis
Phase" below).
Analysis Phase
The analysis phase scans the intermediate files created during translation and creates the vulnerability
results file (FPR).
The analysis phase consists of one invocation of sourceanalyzer. You specify the build ID and
include the -scan directive with any other required analysis or output options (see "Analysis Options"
on page 113 and "Output Options" on page 116).
An example of the basic command-line syntax for the analysis phase is:
Note: By default, Fortify Static Code Analyzer includes the source code in the FPR file.
To combine multiple builds into a single scan command, add the additional builds to the command line:
Incremental Analysis
With incremental analysis, you can run a full analysis on a project, and then run subsequent incremental
scans to analyze only the code that changed since the initial full scan. This reduces the scan time for
subsequent incremental scans on the project.
Incremental analysis supports the Configuration and the Semantic analyzers. You can run incremental
analysis on projects written in the following languages: Java, C/C++, C#, and Visual Basic.
After you modify the project source code, translate the entire project, and then run any subsequent
scans with the -incremental option. Specify the same <build_id> that you specified in the initial full
scan. For example:
To view result certification information, open the FPR file in Fortify Audit Workbench and select Tools
> Project Summary > Certification. For more information, see the Micro Focus Fortify Audit
Workbench User Guide.
For information about integrating Fortify Static Code Analyzer with Ant, see "Ant Integration" on
page 96.
To have Fortify Static Code Analyzer emulate the compiler, type:
where:
l <translation_options> are options passed to the compiler.
l -cp <classpath> specifies the class path to use for the Java source code.
A class path is the path that the Java runtime environment searches for classes and other resource
files. Include all JAR dependencies normally used to build the project. The format is the same as what
javac expects (colon- or semicolon-separated list of paths).
Similar to javac, Fortify Static Code Analyzer loads classes in the order they appear in the class path.
If there are multiple classes with the same name in the list, Fortify Static Code Analyzer uses the first
loaded class. In the following example, if both A.jar and B.jar include a class called
MyData.class, Fortify Static Code Analyzer uses the MyData.class from A.jar.
Fortify strongly recommends that you avoid using duplicate classes with the -cp option.
Fortify Static Code Analyzer loads JAR files in the following order:
a. From the -cp option
b. From jre/lib
c. From <sca_install_dir>/Core/default_jars
This enables you to override a library class by including the similarly-named class in a JAR specified
with the -cp option.
For a descriptions of all the available Java-specific command-line options, see "Java Command-Line
Options" below.
-appserver-version Specifies the version of the application server. See the Micro
<version> Focus Fortify Software System Requirements document for
supported versions.
-cp <paths> | Specifies the class path to use for analyzing Java source code.
-classpath <paths> The format is the same as javac: a colon- or semicolon-
separated list of directories. You can use Fortify Static Code
Analyzer file specifiers as shown in the following example:
-cp "build/classes:lib/*.jar"
-java-build-dir <dirs> Specifies one or more directories that contain compiled Java
sources. You must specify this for FindBugs results as
described in "Analysis Options" on page 113.
-source <version> | Indicates the JDK version for which the Java code is written.
-jdk <version> See the Micro Focus Fortify Software System Requirements
document for supported versions. The default is Java 8.
Equivalent property name:
com.fortify.sca.JdkVersion
To translate all .java files in the src directory using all JAR files in the lib directory as a class path,
type:
To translate and compile the MyCode.java file with the javac compiler, type:
Java Warnings
You might see the following warnings for Java:
Using FindBugs
FindBugs (http://findbugs.sourceforge.net) is a static analysis tool that detects quality issues in Java
code. You can run FindBugs with Fortify Static Code Analyzer and the results are integrated into the
analysis results file. Unlike Fortify Static Code Analyzer, which runs on Java source files, FindBugs runs
on Java bytecode. Therefore, before you run an analysis on your project, first compile the project and
produce the class files.
To see an example of how to run FindBugs automatically with Fortify Static Code Analyzer, compile the
sample code Warning.java as follows:
1. Go to the following directory:
<sca_install_dir>/Samples/advanced/findbugs
mkdir build
3. Scan the sample with FindBugs and Fortify Static Code Analyzer as follows:
auditworkbench findbugs_sample.fpr
If you group by analyzer, you can see that the Structural Analyzer produced one issue and FindBugs
produced eight. The Object model violation issue Fortify Static Code Analyzer detected on line
25 is similar to the Equal objects must have equal hash codes issue that FindBugs detected.
In addition, FindBugs produces two sets of issues (Useless self-assignment and Dead local
store) about the same vulnerabilities on lines 6 and 7. To avoid overlapping results, use the -filter
option during the scan to apply the filter.txt filter file. Note that the filtering is not complete
because each tool filters at a different level of granularity. To see how to avoid overlapping results, scan
the sample code using filter.txt as follows:
where /**/*.jsp refers to the location of your JSP project files and /**/*.xml refers to the location
of your configuration and deployment descriptor files.
Could not locate the root (WEB-INF) of the web application. Please build
your web application and try again. Failed to parse the following jsp
files:
<list_of_jsp_files>
This warning indicates that your web application is not deployed in the standard WAR directory format
or does not contain the full set of required libraries. To resolve the warning, make sure that your web
application is in an exploded WAR directory format with the correct WEB-INF/lib and
WEB-INF/classes directories containing all of the .jar and .class files required for your
application. Also verify that you have all of the TLD files for all of your tags and the corresponding JAR
files with their tag implementations.
This specifies how Fortify Static Code Analyzer processes .class and .jar files.
2. In the Fortify Static Code Analyzer translation phase, specify the Java bytecode files that you want
to translate. For best performance, specify only the .jar or .class files that require scanning.
In the following example, the .class files are translated:
Failed to translate the following jsps into analysis model. Please see the
log file for any errors from the jsp parser and the user manual for hints
on fixing those
<list_of_jsp_files>
l You are missing some tag libraries or their definitions (TLD) for the application
To obtain more information about the problem, perform the following steps:
1. Open the Fortify Static Code Analyzer log file in an editor.
2. Search for the strings Jsp parser stdout: and Jsp parser stderr:.
The JSP parser generates these errors. Resolve the errors and rerun Fortify Static Code Analyzer.
For more information about scanning Java EE applications, see "Translating Java EE Applications" on
page 46.
project. For more information, see "Using the Touchless MSBuild Integration" on page 101.
l Add custom tasks to your MSBuild project to invoke Fortify Static Code Analyzer. For
information, see "Adding Custom Tasks to your MSBuild Project" on page 102.
l Use the Fortify Static Code Analyzer command line to translate binaries (see "Translating .NET
Binaries" on page 51. With this method, you must provide all the needed information with the
.NET options (see "Binary .NET Translation Command-Line Options" on page 52).
Important! Fortify strongly recommends that you use either the Micro Focus Fortify Extension for
Visual Studio from the IDE , the Fortify Static Code Analyzer build integrations, or MSBuild
touchless integration because these are the only three methods where Fortify Static Code Analyzer
automatically detects all the project information for the best translation of your project or solution.
Fortify Static Code Analyzer does not automatically detect all required project information if you
use custom MSBuild tasks or translate binaries. Therefore, for these two methods you must provide
all the necessary information by specifying appropriate command-line options (see "Binary .NET
Fortify recommends that you translate complete .NET projects. To prepare your application for analysis,
you need:
l All the C#, VB.NET, and ASP.NET source files
The supported types of ASP.NET files are: ASPX, ASCX, ASAX, ASHX, ASMX, AXML, BAML,
CSHTML, Master, VBHTML, and XAML.
l All reference DLLs used by your project.
This includes those from the .NET framework, NuGet packages, and third-party DLLs.
Important! The first time you translate a .NET Core, an ASP.NET Core, a .NET Standard, or a .NET
Portable project, run the dotnet restore command from the Developer Command Prompt for
Visual Studio first to ensure that all the necessary reference libraries are installed locally.
Note: Fortify Static Code Analyzer does not support .NET Core 1.0 projects that use
project.json and <project_name>.xproj configuration files. If your .NET Core 1.0 project
contains these files, do one of the following before Fortify Static Code Analyzer translation:
l Convert project.json and .xproj files to the .csproj format
l Migrate your project to .NET Core 1.1 or later
Note: Fortify Static Code Analyzer converts devenv invocations and command-line options to
MSBuild invocations, and therefore the previous two command lines examples are actually
equivalent.
This performs the translation phase on all files built with Visual Studio or MSBuild.
You must run the devenv command-line example from the Developer Command Prompt for Visual
Studio. You can run the MSBuild command-line example from the Developer Command Prompt for
Visual Studio or from the Windows Command Prompt, except for Xamarin projects. When you run from
the Windows Command Prompt, the path to the MSBuild executable must be included in your PATH
environment variable.
Important! You must translate Xamarin projects from Developer Command Prompt for Visual
Studio even if you use MSBuild integration.
You can then perform the analysis phase, as shown in the following example:
If you are scanning a .NET solution that builds more than one executable, Fortify recommends that you
scan each executable separately after the solution is translated. To do this, use the -binary-name
option and specify the executable (file name or assembly name) as the parameter (see "Analysis
Options" on page 113).
Note: You can improve translation by providing information using the command-line options
described in "Binary .NET Translation Command-Line Options" on the next page.
If your project contains multiple sub-projects, you must translate built from each sub-project separately.
Important! Do not translate binaries from all or multiple sub-projects with a single Fortify Static
Code Analyzer invocation.
To scan all sub-projects together after the translation, use the same build ID when you translate
binaries from each sub-project, as follows:
-dotnet-version Specifies the .NET framework version. See the Micro Focus Fortify
<version> Software System Requirements for a list of supported versions. If you
specify a value outside the supported version range, Fortify Static Code
Analyzer uses the latest supported version. This adds the location of the
.NET framework libraries (DLLs) for the specified .NET framework version
to the list of DLLs/paths specified by the -libdirs option, unless the –
libdirs-only option is specified.
Equivalent property name:
com.fortify.sca.DotnetVersion
-dotnet-core- Specifies the .NET Core version. This adds the location of .NET framework
version <version> libraries (DLLs) for the specified .NET framework version to the list of
DLLs/paths specified by the -libdirs option, unless the -libdirs-only
option is specified.
Equivalent property name:
com.fortify.sca.DotnetCoreVersion
-dotnet-std- Specifies the .NET Standard version. This adds the location of .NET
version <version> framework libraries (DLLs) for the specified .NET framework version to the
list of DLLs/paths specified by the -libdirs option, unless the
-libdirs-only option is specified.
Equivalent property name:
com.fortify.sca.DotnetStdVersion
-libdirs-only Sets the list of directories or paths to only those specified by the -libdirs
option. Otherwise, Fortify Static Code Analyzer includes the location of the
.NET framework libraries (DLLs) that correspond to the .NET framework
-dotnet-output- Specifies the output directory where the binary (EXE or DLL) built from the
dir <path> project is placed.
Equivalent property name:
com.fortify.sca.DotnetOutputDir
-nuget-cache-dir (.NET Core and .NET Standard projects only) Overrides the default path
<path> to the NuGet cache directory. You might need this option when you
translate .NET Core or .NET Standard projects and a custom location for
the NuGet cache is specified in project settings. The default path is the
.nuget/packages folder in the current user’s home directory (Windows
environment variable: USERPROFILE).
Equivalent property name:
com.fortify.sca.NugetCacheDir
Note: Do not specify this option for ASP.NET Web Applications or any
other kind of ASP.NET project except Website.
-dotnet-assembly- Specifies the name of the target .NET assembly as specified in Visual Studio
name <assembly_ project settings.
name>
Equivalent property name:
com.fortify.sca.DotnetAssemblyName
-dotnet-preproc-symbols "DEBUG;TRACE"
-cs-extern-alias (C# projects only) Specifies a list of external aliases for a specified DLL file
<aliases_path_ in the following format: alias1,alias2,..=<path_to_dll>. If multiple
pairs> DLLs are assigned external aliases, specify multiple -cs-extern-alias
options on the command line.
Equivalent property name:
com.fortify.sca.DotnetAlias
-vb-compile- (VB.NET projects only) Specifies any special compilation options used in
options <compile_ building the project binaries, such as OptionStrict, OptionInfer, and
options> OptionExplicit.
The format for <compile_options> is a comma-separated list of:
<option>=On | Off. For example:
-vb-compile-options
"OptionStrict=On,OptionExplicit=Off"
-vb-mytype (VB.NET projects only) Specifies the value for the _MYTYPE preprocessor
<symbol> symbol that is specified in the <MyType> tag in the project settings. This is
required if the project references My namespace.
Equivalent property name:
com.fortify.sca.VBMyType
-vb-root (VB.NET and Silverlight projects only) Specifies the root namespace for
<namespace> the project as specified in Visual Studio project settings.
Equivalent property name:
com.fortify.sca.VBRootNamespace
-xamarin-ios- (Required for Xamarin.iOS projects) Specifies the target iOS SDK version
version <version> for Xamarin iOS projects. If you specify an iOS SDK version that is not
available, Fortify Static Code Analyzer uses the latest installed version. This
adds Xamarin.iOS reference libraries (DLLs) for the specified iOS SDK
version to the list of DLLs/paths specified by the -libdirs option, unless
the -libdirs-only option is included.
Equivalent property name:
com.fortify.sca.XamariniOSVersion
This error indicates that Fortify Static Code Analyzer could not successfully translate of all the source
files in your project. Rerun the translation with the -debug-verbose option and provide the Fortify
Support log to Micro Focus Fortify Customer Support for investigation.
ASP.NET Errors
Any error reported for ASP.NET translation is prefixed with ASP.Net Translation: and is followed
by detailed information about the error. This error indicates that Fortify Static Code Analyzer could not
successfully translate all the ASP.NET pages in your project. Report this issue to Micro Focus Fortify
Customer Support for investigation.
where:
l <compiler> is the name of the C/C++ compiler you use, such as gcc, g++, or cl. See the Micro
Focus Fortify Software System Requirements document for a list of supported C/C++ compilers.
l <sca_options> are options passed to Fortify Static Code Analyzer.
l <compiler_options> are options passed to the C/C++ compiler.
l <file>.c must be in ASCII or UTF-8 encoding.
Note: All Fortify Static Code Analyzer options must precede the compiler options.
The compiler command must successfully complete when executed on its own. If the compiler command
fails, then the Fortify Static Code Analyzer command prefixed to the compiler command also fails.
then you can translate this file with the following command:
Fortify Static Code Analyzer executes the original compiler command as part of the translation phase. In
the previous example, the command produces both the translated source suitable for scanning, and the
object file hello.o from the gcc execution. You can use the Fortify Static Code Analyzer -nc option
to disable the compiler execution.
l Use touchless MSBuild integration to run Fortify Static Code Analyzer as part of your MSBuild
project. For more information, see "Using the Touchless MSBuild Integration" on page 101.
where <js_file_or_dir> is the either the name of the JavaScript file to be translated or a directory
that contains multiple JavaScript files. You can also translate multiple files by specifying *.js for the
<js_file_or_dir>.
The files specified in these properties apply to both local files and files on the internet. Suppose, for
example, that the JavaScript code includes the following JavaScript library file reference:
<script
src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js">
</script>
Note: You can also exclude local files or entire directories with the -exclude command-line option.
For more information about this option, see "Translation Options" on page 111.
When you set the com.fortify.sca.EnableDOMModeling property to true, this can decrease false
negative reports of DOM-related attacks, such as DOM-related cross-site scripting issues.
Note: If you enable this option, Fortify Static Code Analyzer generates JavaScript code to model
the DOM tree structure in the HTML files. The duration of the analysis phase might increase
(because there is more translated code to analyze).
If you set the com.fortify.sca.EnableDOMModeling property to true, you can also specify
additional HTML tags for Fortify Static Code Analyzer to include in the DOM modeling with the
com.fortify.sca.DOMModeling.tags property. By default, Fortify Static Code Analyzer includes
the following HTML tags: body, button, div, form, iframe, input, head, html, and p.
For example, to include the HTML tags ul and li in the DOM model, use the following command:
Note: You can also set this property globally in the fortify-sca.properties file.
For example, you might have the following statement in your HTML file:
If you are confident that the xyzdomain.com domain is a safe location from which to download files,
then you can include them in the translation phase by adding the following property specification on
the command line:
-Dcom.fortify.sca.JavaScript.src.domain.whitelist="xyzdomain.com/foo"
Note: You can omit the www. prefix from the domain in the whitelist property value. For example, if
the src tag in the original HTML file specifies to download files from www.google.com, you can
whitelist just the google.com domain.
To whitelist more than one domain, include each domain separated by the vertical bar character (|) as
shown in the following example:
-Dcom.fortify.sca.JavaScript.src.domain.whitelist=
"xyzdomain.com/foo|abcdomain.com|123.456domain.com”
If you are using a proxy server, then you need to include the proxy server information on the command
line as shown in the following example:
-Dhttp.proxyHost=example.proxy.com -Dhttp.proxyPort=8080
For a complete list of proxy server options, see the Networking Properties Java documentation.
l UI Router
Fortify Static Code Analyzer can detect AngularJS specific configuration-related issues. It can also find
dataflow issues, such as Cross-Site Scripting: DOM, in small AngularJS projects.
To translate AngularJS, set the following property in the fortify-sca.properties file to true (or
include this property setting on the command line with the -D option):
com.fortify.sca.EnableDOMModeling=true
/path_1/package_name/subpackageA
/path_2/package_name/subpackageB
com.fortify.sca.limiters.MaxPassThroughChainDepth=8
com.fortify.sca.limiters.MaxChainDepth=8
By default, Fortify Static Code Analyzer attempts to discover Django templates in the project root
folder. Any Django templates found are automatically added to the translation. If you do not want
Fortify Static Code Analyzer to automatically discover Django templates, use the
-django-disable-autodiscover option. If your project requires Django templates, but the project
is configured such that Django templates are in an unexpected location, use the
-django-template-dirs option to specify the directories that contain the templates in addition to
the -django-disable-autodiscover option.
You can specify additional locations of Django template files by adding the -django-template-dirs
option to the sourceanalyzer command:
-django-template-dirs <template_dir_paths>
-python-version Specifies the Python source code version you want to scan. The valid
<version> values for <version> are 2 and 3. The default value is 2.
-python-legacy Specifies to translate python 2 code with the legacy Python translator.
Only use this option if the translation without the option fails and
Micro Focus Fortify Customer Support has recommended that you
use it.
-django-disable- Specifies that Fortify Static Code Analyzer does not automatically
autodiscover discover Django templates.
Equivalent property name:
com.fortify.sca.DjangoDisableAutodiscover
where <compiler_options> are the supported options that are passed to the Xcode compiler.
Note: Xcodebuild compiles the source code when you run this command.
If your application uses any property list files (for example, <file>.plist), translate these files with a
separate sourceanalyzer command. Use the same build ID that you used to translate the project files.
The following is an example:
If your project uses CocoaPods, include -workspace to build the project. For example:
You can then perform the analysis phase, as shown in the following example:
The way you use Gradle is the same for either method.
Note: You can also scan Android code directly from Android Studio with the Micro Focus Fortify
Analysis Plugin for IntelliJ and Android Studio. For more information, see the Micro Focus Fortify
Plugins for IntelliJ, WebStorm, and Android Studio User Guide.
where <options> are the supported gradlew options such as build or build clean.
If your application uses XML or property configuration files, translate these files with a separate
sourceanalyzer command. Use the same build ID that you used for the project files. The following
are examples:
You can then perform the analysis phase, as shown in the following example:
where <file> is the name of the Ruby file you want to scan. To include multiple Ruby files, separate
them with a space, as shown in the following example:
In addition to listing individual Ruby files, you can use the asterisk (*) wildcard to select all Ruby files in a
specified directory. For example, to find all of the Ruby files in a directory called src, use the following
sourceanalyzer command:
-ruby-path Specifies one or more paths to directories that contain Ruby libraries (see
"Adding Libraries " on the next page)
Equivalent property name:
com.fortify.sca.RubyLibraryPaths
-rubygem-path Specifies the path(s) to a RubyGems location (see "Adding Gem Paths" on the
next page)
Equivalent property name:
com.fortify.sca.RubyGemPaths
Adding Libraries
If your Ruby source code requires a specific library, add the Ruby library to the sourceanalyzer
command. Include all ruby libraries that are installed with ruby gems. For example, if you have a
utils.rb file that resides in the /usr/share/ruby/myPersonalLibrary directory, then add the
following to the sourceanalyzer command:
-ruby-path /usr/share/ruby/myPersonalLibrary
To use multiple libraries, use a delimited list. On Windows, separate the paths with a semicolon; and on
all other platforms use a colon, as in the following non-Windows example:
-ruby-path /path/one:/path/two:/path/three
/home/myUser/gems/ruby-version
This directory contains another directory called gems, which contains directories for all the gem files
installed on the system. For this example, use the following in your command line:
-rubygem-path /home/myUser/gems/ruby-version/gems
If you have multiple gems directories, add them by specifying a delimited list of paths such as:
-rubygem-path /path/to/gems:/another/path/to/more/gems
Important! Supported file extensions for the source code files are: .cls, .trigger, .page, and
.component.
For descriptions of all the Apex- and Visualforce-specific command-line options, see "Apex and
Visualforce Command-Line Options" below.
-apex Directs Fortify Static Code Analyzer to use the Apex and
Visualforce translation for files with the .cls extension.
Without this option, Fortify Static Code Analyzer translates
*.cls files as Visual Basic code.
-apex-sobject-path <path> Specifies the location of the custom sObject JSON file
sobjects.json.
For instructions on how to use the sf_extractor tool, see
"Downloading Customized Salesforce Database Structure
Information" below.
Equivalent property name:
com.fortify.sca.ApexObjectPath
The following table describes the contents of the sf_extractor.zip file, which is located in <sca_
install_dir>/Tools.
where:
l <username> is your Salesforce cloud user name. For example, [email protected].
l <password> is your Salesforce cloud password.
l <security_token> is the 25 alphanumeric character security token
l <org> is y if you are using a sandbox org or n if you are using a production org
The sf_extractor tool uses the credentials to access the Salesforce SOAP API. It downloads all the
sObjects with additional information from the current org, and then it downloads information about
fields in the sObjects. This is required to properly resolve types represented in current org.
This tool produces an sobjects.json file that you provide to Fortify Static Code Analyzer in the
translation command using the -apex-sobject-path option.
For a list of supported technologies for translating COBOL code, see the Micro Focus Fortify Software
System Requirements document. Fortify Static Code Analyzer does not currently support custom rules
for COBOL applications.
Note: To scan COBOL with Fortify Static Code Analyzer, you must have a specialized Fortify license
specific for COBOL scanning capabilities. Contact Micro Focus Fortify Customer Support for more
information about scanning COBOL and the required license.
l All SQL INCLUDE files that the COBOL source code references
Fortify Static Code Analyzer processes only top-level COBOL sources. Do not include copybook or SQL
INCLUDE files in the directory or the subdirectory where the COBOL sources reside. Fortify
recommends that you place your COBOL source code in a folder called sources/ and your copybooks
in a folder called copybooks/. Create these folders at the same level. Emulate the following structure
with the translation command:
COPY FOO
where FOO is a copybook file or a SQL INCLUDE file, then the corresponding file in the copybooks
folder or the SQL INCLUDE folder, as specified with the -copydirs option, must be FOO. The COPY
command can also take a directory-file-path structure rather than a just a file name. Follow the same
translation command structure, using a directory-file-path structure instead of just the file name.
Specify the directory and folder with all COBOL files as the parameter to the sourceanalyzer
command, and Fortify Static Code Analyzer translates all the files in that directory and folder without
any need for COBOL file extensions.
sourceanalyzer -b <build_id>
COBOL Command-Line Options
The following table describes the COBOL command-line options.
COBOL Option Description
-copydirs <path> Directs Fortify Static Code Analyzer to search a list of colon-
separated paths for copybooks and SQL INCLUDE files.
To translate a file where the source or the php.ini file entry includes a relative path name (starts with
./ or ../), consider setting the PHP source root as shown in the following example:
For more information about the -php-source-root option, see the description in "PHP Command-
Line Options" below.
PHP Command-Line Options
The following table describes the PHP-specific command-line options.
PHP Option Description
-php-source-root Specifies an absolute path to the project root directory. The relative path
<path> name first expands from the current directory. If the file is not found, then
the path expands from the specified PHP source root directory.
PHP Option Description
-php-version Specifies the PHP version. The default version is 7.0. For a list of valid
<version> versions, see the Micro Focus Fortify Software System Requirements.
Equivalent property name:
com.fortify.sca.PHPVersion
Each READ REPORT call produces a file in the temporary folder on the local system. This set of files is
what Fortify Static Code Analyzer translates and scans, producing an FPR file that you can open with
Micro Focus Fortify Audit Workbench.
INCLUDE Processing
As source code is downloaded, the Fortify ABAP Extractor detects INCLUDE statements in the source.
When found, it downloads the include targets to the local machine for analysis.
<sca_install_dir>/Tools/SAP_Extractor.zip
The Fortify ABAP Extractor package, SAP_Extractor.zip, contains the following files:
l K9000XX.NSP (where the “XX” is the release number)
l R9000XX.NSP (where the “XX” is the release number)
These files make up the SAP transport request that you must import into your SAP system from
outside your local Transport Domain. Have your SAP administrator or an individual authorized to install
transport requests on the system import the transport request.
The NSP files contain a program, a transaction (YSCA), and the program user interface. After you
import them into your system, you can extract your code from the SAP database and prepare it for
Fortify Static Code Analyzer scanning.
Installation Note
The Fortify ABAP Extractor transport request is supported on a system running SAP release 7.02, SP
level 0006. If you are running a different SAP version and you get the transport request import error:
Install release does not match the current version, then the transport request
installation has failed.
To try to resolve this issue, perform the following steps:
1. Re-run the transport request import.
The Import Transport Request dialog box opens.
2. Click the Options tab.
3. Select the Ignore Invalid Component Version check box.
4. Complete the import procedure.
If this does not resolve the issue or if your system is running on an SAP version with a different table
structure, Fortify recommends that you export your ABAP file structure using your own technology so
that Fortify Static Code Analyzer can scan the ABAP code.
5. Click the Extract ABAP code and launch SCA link to launch the Fortify ABAP Extractor.
2. Provide the Fortify Static Code Analyzer specific information described in the following table.
Field Description
FPR File (Optional) Type or select the directory where you want to store the scan results
Path file (FPR). Include the name for the FPR file in the path name. You must provide
the FPR file path if you want to automatically scan the downloaded code on the
same machine where you are running the extraction process.
Working Type or select the directory where you want to store the extracted source code.
Directory
Build-ID (Optional) Type the build ID for the scan. Fortify Static Code Analyzer uses the
build ID to identify the translated source code, which is necessary to scan the
code. You must specify the build ID if you want to automatically translate the
downloaded code on the same machine where you are running the extraction
process.
Field Description
Scan (Optional) Type any Fortify Static Code Analyzer command-line scan options.
Parameters You must specify scan parameters if you want to scan the downloaded code
automatically on the same machine where you are running the process or you
want to customize the scan options.
ZIP File (Optional) Type a ZIP file name if you want your output in a compressed
Name package.
Field Description
Download Select this check box to have Fortify Static Code Analyzer download the source
code extracted from your SAP database.
Build Select this check box to have Fortify Static Code Analyzer translate all
downloaded ABAP code and store it using the specified build ID. This action
requires that you have an installed version of Fortify Static Code Analyzer on
the machine where you are running the Fortify ABAP Extractor. It is often easier
to move the downloaded source code to a predefined Fortify Static Code
Analyzer machine.
Field Description
Scan Select this check box to have Fortify Static Code Analyzer run a scan of the
specified build ID. This action requires that the translate (build) action was
previously performed. This action requires that you have an installed version of
Fortify Static Code Analyzer on the machine where you are running the Fortify
ABAP Extractor. It is often easier to move the downloaded source code to a
predefined Fortify Static Code Analyzer machine.
Launch Select this check box to start Micro Focus Fortify Audit Workbench and open
AWB the specified FPR file.
Create ZIP Select this check box to compress the output. You can also manually compress
the output after the source code extracted from your SAP database.
Process in Select this check box to have the processing occur in the background.
Background
4. Click Execute.
where:
<libs> is a semicolon-separated list (Windows) or a colon-separated list (non-Windows systems) of
library names to which you want to "link" and <files> are the files to translate.
-flex-sdk-root The location of the root of a valid Flex SDK. This folder must contain a
frameworks folder that contains a flex-config.xml file. It must also
contain a bin folder that contains an MXMLC executable.
Equivalent property name:
com.fortify.sca.FlexSdkRoot
Note: You can specify SWC or SWF files as Flex libraries (SWZ is not
currently supported).
Note: -flex-sdk-root and –flex-source-roots are primarily for MXML translation, and are
optional if you are scanning pure ActionScript. Use –flex-libraries for resolving all
ActionScript.
Fortify Static Code Analyzer translates MXML files into ActionScript and then runs them through an
ActionScript parser. The generated ActionScript is simple to analyze; not rigorously correct like the Flex
runtime model. As a consequence, you might get parse errors with MXML files. For instance, the XML
parsing could fail, translation to ActionScript could fail, and the parsing of the resulting ActionScript
could also fail. If you see any errors that do not have a clear connection to the original source code,
notify Micro Focus Fortify Customer Support.
This identifies the location of the libraries to include, and also identifies the Flex SDK and the Flex
source root locations. The single MXML file, located in /my/app/FlexApp.mxml, results in translating
the MXML application as a single ActionScript class called FlexApp and located in the my.app package.
Example 2
The following example is for an application in which the source files are relative to the src directory. It
uses a single SWF library, MyLib.swf, and the Flex and framework libraries from the Flex SDK:
ActionScript Warnings
You might receive a message similar to the following:
The ActionScript front end was unable to resolve the following imports:
a.b at y.as:2. foo.bar at somewhere.as:5. a.b at foo.mxml:8.
This error occurs when Fortify Static Code Analyzer cannot find all of the required libraries. You might
need to specify additional SWC or SWF Flex libraries (-flex-libraries option or
com.fortify.sca.FlexLibraries property) so that Fortify Static Code Analyzer can complete the
analysis.
#com.fortify.sca.CfmlUndefinedVariablesAreTainted=true
This instructs the Dataflow Analyzer to watch out for register-globals-style vulnerabilities. However,
enabling this property interferes with Dataflow Analyzer findings in which a variable in an included page
is initialized to a tainted value in an earlier-occurring included page.
where:
l <build_id> specifies the build ID for the project
l <dir> specifies the root directory of the web application
l <files> | <file_specifiers> specifies the CFML source code files
For a description of how to use <file_specifiers>, see "Specifying Files" on page 122.
Note: Fortify Static Code Analyzer calculates the relative path to each CFML source file with the
-source-base-dir directory as the starting point. Fortify Static Code Analyzer uses these
relative paths when it generates instance IDs. If you move the entire application source tree to a
different directory, the Fortify Static Code Analyzer- generated instance IDs remain the same
provided that you specify an appropriate parameter for the -source-base-dir option.
Translating SQL
On Windows platforms, Fortify Static Code Analyzer assumes that files with the .sql extension are T-
SQL rather than PL/SQL. If you have PL/SQL files with the .sql extension on Windows, you must
configure Fortify Static Code Analyzer to treat them as PL/SQL.
To specify the SQL type for translation on Windows platforms, type one of the following translation
commands:
or
Alternatively, you can change the default behavior for files with the .sql extension. In the fortify-
sca.properties file, set the com.fortify.sca.fileextensions.sql property to TSQL or
PLSQL.
The following example shows how to translate all PL/SQL files in the sources directory:
The following example shows how to translate all T-SQL files in the sources directory:
Important! If your project contains source code other than Scala, you must translate the Scala
code using the Lightbend's Scala translation plugin, and then translate the other source code with
sourceanalyzer using the same build ID before you run the scan phase.
<!--#include virtual="Include/Task1/foo.inc"-->
For this example, the previous ASP code refers to the file in the following physical location:
C:\Webserver\CustomerOne\inc\Task1\foo.inc
The real directory replaces the virtual directory name Include in this example.
sourceanalyzer -Dcom.fortify.sca.ASPVirtualRoots.<virtual_
directory>=<full_path_to_corresponding_physical_directory>
Note: On Windows, if the physical path includes spaces, you must enclose the property setting in
quotes:
sourceanalyzer "-Dcom.fortify.sca.ASPVirtualRoots.<virtual_
directory>=<full_path_to_corresponding_physical_directory>"
To expand on the example in the previous section, pass the following property value to Fortify Static
Code Analyzer:
-Dcom.fortify.sca.ASPVirtualRoots.Include="C:\WebServer\CustomerOne\inc"
-Dcom.fortify.sca.ASPVirtualRoots.Library="C:\WebServer\CustomerTwo\Stuff"
Fortify Static Code Analyzer determines if the project contains a physical directory named Include. If
there is no such physical directory, Fortify Static Code Analyzer looks through its runtime properties
and finds the -Dcom.fortify.sca.ASPVirtualRoots.Include=
"C:\WebServer\CustomerOne\inc" setting. Fortify Static Code Analyzer then looks for this file:
C:\WebServer\CustomerOne\inc\Task1\foo.inc.
Alternatively, you can set this property in the fortify-sca.properties file located in <sca_
install_dir>\Core\config. You must escape the backslash character (\) in the path of the physical
directory as shown in the following example:
com.fortify.sca.ASPVirtualRoots.Library=C:\\WebServer\\CustomerTwo\\Stuff
com.fortify.sca.ASPVirtualRoots.Include=C:\\WebServer\\CustomerOne\\inc
Note: The previous version of the ASPVirtualRoot property is still valid. You can use it on the
Fortify Static Code Analyzer command line as follows:
-Dcom.fortify.sca.ASPVirtualRoots=C:\WebServer\CustomerTwo\Stuff;
C:\WebServer\CustomerOne\inc
This prompts Fortify Static Code Analyzer to search through the listed directories in the order specified
when it resolves a virtual include directive.
C:\files\foo\bar.asp
-Dcom.fortify.sca.ASPVirtualRoots=C:\files\foo
This strips the /foo from the front of the virtual root. If you do not specify foo in the
com.fortify.sca.ASPVirtualRoots property, then Fortify Static Code Analyzer looks for
C:\files\bar.asp and fails.
The sequence to specify virtual roots is as follows:
1. Remove the first part of the path in the source.
2. Replace the first part of the path with the virtual root as specified on the command line.
Build Integration
You can translate entire projects in a single operation. Prefix your original build operation with the
sourceanalyzer command followed by the Fortify Static Code Analyzer options. For information
about integrating with Xcodebuild, see "iOS Code Analysis Command-Line Syntax" on page 68.
The command-line syntax to translate a complete project is:
where <build_tool> is the name of your build tool, such as make, gmake, devenv, or xcodebuild. See
the Micro Focus Fortify Software System Requirements document for a list of supported build tools.
Fortify Static Code Analyzer executes your build tool and intercepts all compiler operations to collect
the specific command line used for each input.
Note: Fortify Static Code Analyzer only processes the compiler commands that the build tool
executes. If you do not clean your project before you execute the build, then Fortify Static Code
Analyzer only processes those files that the build tool re-compiles.
If you cannot meet these requirements in your environment, see "Modifying a Build Script to Invoke
Fortify Static Code Analyzer" below.
Make Example
If you build your project with the following build commands:
make clean
make
make install
then you can simultaneously translate and compile the entire project with the following commands:
make clean
sourceanalyzer -b <build_id> make
make install
Devenv Example
If you build a Visual Studio project with the following build command:
then you can translate and compile the project with the command:
Note: Fortify Static Code Analyzer converts devenv invocations and command-line options to
MSBuild invocations. For more information, see ".NET Command-Line Syntax" on page 50.
CC=gcc
CXX=g++
LD=ld
AR=ar
You can prepend the tool references in the makefile with the sourceanalyzer command and the
appropriate Fortify Static Code Analyzer options.
When you use the same build ID for each operation, Fortify Static Code Analyzer automatically
combines each of the separately-translated files into a single translated project.
For example, you might use a python script called build.py to compute dependencies and execute
appropriately-ordered C compiler operations. Then to execute your build, run the following command:
python build.py
Fortify Static Code Analyzer does not have native support for such a build design. However, you can
use the touchless build tool to translate and build the entire project with the single command:
The same requirements for successful build integration with supported build systems described earlier
in this chapter (see "Build Integration" on page 94) apply to touchless integration with unsupported
build systems.
Ant Integration
Fortify Static Code Analyzer provides an easy way to translate Java source files for projects that use an
Ant build file. You can apply this integration on the command line without modifying the Ant
build.xml file. When the build runs, Fortify Static Code Analyzer intercepts all javac task invocations
and translates the Java source files as they are compiled.
Note: You must translate any JSP files, configuration files, or any other non-Java source files that
are part of the application in a separate step.
To use the Ant integration, make sure that the sourceanalyzer executable is on the system PATH.
Gradle Integration
You can translate projects that are built with Gradle without any modification of the build.gradle
file. When the build runs, Fortify Static Code Analyzer translates the source files as they are compiled.
See the Micro Focus Fortify Software System Requirements document for platforms and languages
supported specifically for Gradle integration. Any files in the project in unsupported languages for
Gradle integration are not translated (with no error reporting). These files are therefore not analyzed
and any existing potential vulnerabilities can go undetected.
To integrate Fortify Static Code Analyzer into your Gradle build, make sure that the sourceanalyzer
executable is on the system PATH. Prepend the Gradle command line with the sourceanalyzer
command as follows:
For example:
Note: If you use the Fortify Static Code Analyzer -verbose option, then you must also include the
-gradle option. For example:
Maven Integration
Fortify Static Code Analyzer includes a Maven plugin that provides a way to add Fortify Static Code
Analyzer clean, translate, scan, Micro Focus Fortify CloudScan, and FPR upload capabilities to your
Maven project builds. You can use the plugin directly or integrate its functionality into your build
process.
For information about supported versions of Maven, see the Micro Focus Fortify Software System
Requirements document.
If you have a previous version of the Fortify Maven Plugin installed, and then install the latest version.
or
set PATH=%PATH%;<sca_install_dir>/bin
mvn com.fortify.sca.plugins.maven:sca-maven-plugin:<ver>:clean
where <ver> is the version of the Fortify Maven Plugin you are using. If the version is not
specified, Maven uses the latest version of the Fortify Maven Plugin that is installed in the local
repository.
Note: To see the version of the Fortify Maven Plugin, open the pom.xml file that you
extracted in <root_dir> in a text editor. The Fortify Maven Plugin version is specified in the
<version> element.
5. If the command in step 4 completed successfully, then the Fortify Maven Plugin is installed
correctly. The Fortify Maven Plugin is not installed correctly if you get the following error message:
Check the Maven local repository and try to install the Fortify Maven Plugin again.
mvn com.fortify.sca.plugins.maven:sca-maven-plugin:<ver>:translate
To analyze your code this way, see the documentation included with the Fortify Maven Plugin. The
following table describes where to find the documentation after the Fortify Maven Plugin is properly
installed.
Binary <root_dir>/docs/index.html
Source <root_dir>/sca-maven-plugin/target/site/index.html
For example:
The following additional example includes the Fortify Static Code Analyzer option to exclude
selected files from the analysis. To specify the files you want to exclude, add the -exclude
option to the translate step as shown in the following example:
Note: On Windows, separate the file names with a semicolon; and on all other platforms use
a colon.
See "Command-Line Interface" on page 111 for descriptions of available Fortify Static Code
Analyzer options.
c. Complete the analysis by running the scan:
MSBuild Integration
Fortify Static Code Analyzer enables you to translate your source code as part of your MSBuild build
process. With the Fortify Static Code Analyzer MSBuild integration, you can translate files on machines
where Visual Studio is not installed. See the Micro Focus Fortify Software System Requirements
document for the supported MSBuild versions. The MSBuild executable allows for translation of the
following project types:
l C/C++ console applications
l C/C++ libraries
l .NET, .NET Core, .NET Standard, and .NET Portable projects:
l Libraries
l Console applications
l Websites
l ASP.NET, ASP.NET Core web applications
l .NET Azure applications
l .NET Xamarin applications
This section describes three ways to run a Fortify Static Code Analyzer analysis as part of your MSBuild
project.
You can provide a single project file or the entire solution for translation. For most project types, you
can run this command line from either the Windows Command Prompt or the Developer Command
Prompt for Visual Studio. The only exceptions are Xamarin and C/C++ projects and solutions, which you
must translate from Developer Command Prompt for Visual Studio.
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 100 of 210
User Guide
Chapter 14: Integrating into a Build
Important! The FORTIFY_MSBUILD_BUILDID variable does not have default value. Make sure
that you set this variable before you use touchless MSBuild integration to translate your project.
The following table lists the Windows environment variables that you can set for touchless MSBuild
integration.
Environment
Variable Description Default Value
FORTIFY_ Specifies the memory used to run Fortify Automatic allocation based on
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 101 of 210
User Guide
Chapter 14: Integrating into a Build
Environment
Variable Description Default Value
MSBUILD_ Static Code Analyzer (for example, physical memory available on the
MEM -Xmx2000M) system
FORTIFY_ Specifies the location for the MSBuild log file ${win32.LocalAppdata}
MSBUILD_ /Fortify/MSBuildPlugin/Log/
LOG MSBuildPlugin.log
FORTIFY_ Specifies the location (absolute path) for the Location specified by the
MSBUILD_ Fortify Static Code Analyzer log file com.fortify.sca.LogFile
SCALOG property in the fortify-
sca.properties file
For most project types, you can run the commands described in this section from either the Windows
Command Prompt or the Developer Command Prompt for Visual Studio. You can provide a single
project or the entire solution for the command.
Important! You must translate Xamarin and C/C++ projects from the Developer Command Prompt
for Visual Studio.
The following is an example of the command to run the build and a Fortify Static Code Analyzer
analysis:
Note: MSBuild custom tasks are only supported with .NET projects.
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 102 of 210
User Guide
Chapter 14: Integrating into a Build
2. Create a new target or add a custom target to an existing target to invoke the custom task.
The following sections describe the parameters and provide examples for the different custom tasks
that you can add to an MSBuild project:
l "Fortify.CleanTask" below - Remove any existing temporary files for the specified build ID
l "Fortify.TranslateTask" on the next page - Translate the source code
l "Fortify.ScanTask" on page 106 - Scan the source files
l "Fortify.SSCTask" on page 108 - Upload an FPR to Micro Focus Fortify Software Security Center
l "Fortify.CloudScanTask" on page 109 - Upload an FPR to Micro Focus Fortify CloudScan or Fortify
Software Security Center
Fortify.CleanTask
The following table describes the parameters for the Fortify.CleanTask.
Parameter Description
Required Parameters
BuildID Build ID
Optional Parameters
Debug Whether to enable debug mode for the task and Fortify Static Code Analyzer
<UsingTask TaskName="Fortify.CleanTask"
AssemblyFile="<sca_install_dir>\Core\lib\FortifyMSBuildTasks.dll" />
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 103 of 210
User Guide
Chapter 14: Integrating into a Build
Fortify.TranslateTask
You must customize these tasks to each sub-project of your MSBuild project so that each sub-project is
translated separately. This is similar to manual translation described in "Translating .NET Binaries" on
page 51.
The following table describes the parameters for the Fortify.TranslateTask.
Parameter Description
Required Parameters
TargetsFolder Directory where the source code or binary files to be translated reside
XamarinAndroidVersion The target Android SDK version for Xamarin Android projects
XamariniOSVersion The target iOS SDK version for Xamarin iOS projects
Optional Parameters
DotNetSharedFiles Semicolon-separated list of the source files for all Shared Projects
included in the project you are translating
DotNetOutputDir Output directory where the binary (EXE or DLL) built from the project is
placed
ReferencesOnly Sets the list of directories or paths to only those specified by the
References parameter
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 104 of 210
User Guide
Chapter 14: Integrating into a Build
Parameter Description
AssemblyName Name of the target .NET assembly as specified in Visual Studio project
settings
Exclude Semicolon-separated list of folders and specific files to skip during the
translation (You can use the asterisk (*) wildcard character such as *.dll
in this parameter's value.)
Debug Whether to enable debug mode for the task and Fortify Static Code
Analyzer
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 105 of 210
User Guide
Chapter 14: Integrating into a Build
Parameter Description
VBCompileOptions (VB.NET projects only) Any special compilation options required for the
correct translation of the source code
VBMyType (VB.NET projects only) Value for the _MYTYPE preprocessor symbol
specified in the <MyType> tag in the project settings
VBRootFolder (VB.NET and Silverlight projects only) Root namespace for the project
as specified in the Visual Studio project settings
<UsingTask TaskName="Fortify.TranslateTask"
AssemblyFile="<sca_install_dir>\Core\lib\FortifyMSBuildTasks.dll" />
<TranslateTask
TargetsFolder="$(OutDir)"
BuildID="MyProj"
DotNetVersion="4.6"
JVMSettings="-Xmx2000M"
LogFile="trans_task.log"
Debug="true" />
</Target>
The FortifyBuild target is invoked after the AfterBuild target is run. The AfterBuild target is
one of several default targets defined in the MSBuild target file. You must specify all required
parameters.
Fortify.ScanTask
The following table describes the parameters for the Fortify.ScanTask.
Parameter Description
Required Parameters
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 106 of 210
User Guide
Chapter 14: Integrating into a Build
Parameter Description
Optional Parameters
Debug Whether to enable debug mode for the task and Fortify Static Code Analyzer
<UsingTask TaskName="Fortify.TranslateTask"
AssemblyFile="<sca_install_dir>\Core\lib\FortifyMSBuildTasks.dll" />
<UsingTask TaskName="Fortify.ScanTask"
AssemblyFile="<sca_install_dir>\Core\lib\FortifyMSBuildTasks.dll" />
<ScanTask
BuildID="MyProj"
JVMSettings="-Xmx2000M"
LogFile="scan_task.log"
Debug="true"
Output="MyProj.fpr" />
</Target>
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 107 of 210
User Guide
Chapter 14: Integrating into a Build
Fortify.SSCTask
The following table describes the parameters for the Fortify.ScanTask.
Parameter Description
Required Parameters
AuthToken Authentication token (if not included, you must specify the username and
password parameters)
Project Micro Focus Fortify Software Security Center application name (if not provided,
you must include the ProjectID and ProjectVersionID parameters)
ProjectVersion Fortify Software Security Center application version (if not provided, you must
include the ProjectID and ProjectVersionID parameters)
Optional Parameters
Debug Whether to enable debug mode for the task and Fortify Static Code Analyzer
ProjectID Include with ProjectVersionID if the Project and ProjectVersion parameters are
not specified
ProjectVersionID Include with ProjectID if Project and ProjectVersion parameters are not specified
<UsingTask TaskName="Fortify.TranslateTask"
AssemblyFile="<sca_install_dir>\Core\lib\FortifyMSBuildTasks.dll" />
<UsingTask TaskName="Fortify.ScanTask"
AssemblyFile="<sca_install_dir>\Core\lib\FortifyMSBuildTasks.dll" />
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 108 of 210
User Guide
Chapter 14: Integrating into a Build
<UsingTask TaskName="Fortify.SSCTask"
AssemblyFile=<sca_install_dir>\Core\lib\FortifyMSBuildTasks.dll" />
<ScanTask BuildID="TestTask"
JVMSettings="-Xmx1000M"
LogFile="scan_task.log"
Debug="true"
Output="MyProj.fpr" />
<SSCTask
Username="admin"
Password="admin"
Project="Test Project"
ProjectVersion="Test Version 1"
FPRFile="MyProjSSC.fpr"
SSCURL="http://localhost:8180/ssc" />
</Target>
Fortify.CloudScanTask
If you are using Micro Focus Fortify CloudScan to process your scans, you can send the translated
output to your Fortify CloudScan environment. You can also use this task to upload to Micro Focus
Fortify Software Security Center.
The following table describes the parameters for the Fortify.CloudScanTask.
Parameter Description
Required Parameters
CloudURL Cloud URL (include either this parameter or the SSCURL parameter)
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 109 of 210
User Guide
Chapter 14: Integrating into a Build
Parameter Description
SSCURL URL for Fortify Software Security Center (include either this parameter or the
CloudURL parameter)
Optional Parameters
Debug Whether to enable debug mode for the task and Fortify Static Code Analyzer
SSCToken (Use only when SSCUpload is true) Fortify Software Security Center token
Project (Use only when SSCUpload is true) Target application on Fortify Software
Security Center
VersionName (Use only when SSCUpload is true) Target application version on Fortify Software
Security Center
FPRName (Use only when SSCUpload is false) Name for the FPR file
<UsingTask TaskName=”Fortify.CloudScanTask”
AssemblyFile=”<sca_install_dir>\Core\lib\FortifyMSBuildTasks.dll”/>
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 110 of 210
Chapter 15: Command-Line Interface
This chapter describes general Fortify Static Code Analyzer command-line options and how to specify
source files for analysis. Command-line options that are specific to a language are described in the
chapter for that language.
This section contains the following topics:
Translation Options 111
Analysis Options 113
Output Options 116
Other Options 119
Directives 121
Specifying Files 122
Translation Options
The following table describes the translation options.
-b <build_id> Specifies the build ID. Fortify Static Code Analyzer uses the build ID to
track which files are compiled and combined as part of a build, and
later, to scan those files.
Equivalent property name:
com.fortify.sca.BuildID
-exclude Removes files from the list of files to translate. Separate multiple file
<file_specifiers> paths with semicolons (Windows) or a colons (non-Windows systems).
See "Specifying Files" on page 122 for more information on how to
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 111 of 210
User Guide
Chapter 15: Command-Line Interface
-encoding <encoding_ Specifies the source file encoding type. Fortify Static Code Analyzer
name> enables you to scan a project that contains differently encoded source
files. To work with a multi-encoded project, you must specify the
-encoding option in the translation phase, when Fortify Static Code
Analyzer first reads the source code file. Fortify Static Code Analyzer
remembers this encoding in the build session and propagates it into
the FVDL file.
-nc When specified before a compiler command line, Fortify Static Code
Analyzer translates the source file but does not run the compiler.
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 112 of 210
User Guide
Chapter 15: Command-Line Interface
-noextension-type Specifies the file type for source files that have no file extension. The
<file_type> possible values are: ABAP, ACTIONSCRIPT, APEX, APEX_TRIGGER,
ARCHIVE, ASPNET, ASP, ASPX, BITCODE, BYTECODE, CFML,
COBOL, CSHARP, HTML, JAVA, JAVA_PROPERTIES, JAVASCRIPT,
JSP, JSPX, MSIL, MXML, PHP, PLSQL, PYTHON, RUBY, RUBY_ERB,
SCALA, SWIFT, TLD, SQL, TSQL, TYPESCRIPT, VB, VB6, VBSCRIPT,
VISUAL_FORCE, and XML.
Analysis Options
The following table describes the analysis options.
-scan Causes Fortify Static Code Analyzer to perform analysis for the
specified build ID.
-quick Scans the project in Quick Scan mode, using the fortify-
sca-quickscan.properties file. By default, this scan
searches for high-confidence, high-severity issues that Fortify
Static Code Analyzer can discover quickly.
Equivalent property name:
com.fortify.sca.QuickScanMode
-bin <binary> | Specifies a subset of source files to scan. Only the source files
-binary-name <binary>
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 113 of 210
User Guide
Chapter 15: Command-Line Interface
that were linked in the named binary at build time are included
in the scan. You can use this option multiple times to specify the
inclusion of multiple binaries in the scan.
Equivalent property name:
com.fortify.sca.BinaryName
-disable-default-rule-type Disables all rules of the specified type in the default Rulepacks.
<type> You can use this option multiple times to specify multiple rule
types.
The <type> parameter is the XML tag minus the suffix Rule.
For example, use DataflowSource for DataflowSourceRule
elements. You can also specify specific sections of
characterization rules, such as Characterization:Control
flow, Characterization:Issue, and
Characterization:Generic.
-exit-code-level Extends the default exit code options. See "Exit Codes" on
page 153 for a description of the exit codes. The valid values
are:
The valid values are:
-filter <file> Specifies a results filter file. See "Filtering the Analysis" on
page 162 for more information about this option.
Equivalent property name:
com.fortify.sca.FilterFile
-findbugs Enables FindBugs analysis for Java code. You must specify the
Java class directories with the -java-build-dir option,
which is described in "Java Command-Line Options" on page 42.
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 114 of 210
User Guide
Chapter 15: Command-Line Interface
-incremental-base Specifies that this is the initial full scan of a project for which
you plan to run subsequent incremental scans. Use this option
for the first scan when you plan to run subsequent scans on the
same project with the -incremental option. See "Incremental
Analysis" on page 39 for more information about performing
incremental analysis.
Equivalent property name:
com.fortify.sca.IncrementalBaseScan
-no-default-rules Specifies not to load rules from the default Rulepacks. Fortify
Static Code Analyzer processes the Rulepacks for description
elements and language libraries, but processes no rules.
Equivalent property name:
com.fortify.sca.NoDefaultRules
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 115 of 210
User Guide
Chapter 15: Command-Line Interface
com.fortify.sca.NoDefaultSourceRules
-project-template Specifies the issue template file to use for the scan. This only
affects scans on the local machine. If you upload the FPR to
Micro Focus Fortify Software Security Center server, it uses the
issue template assigned to the application version.
Equivalent property name:
com.fortify.sca.ProjectTemplate
-rules <file> | <dir> Specifies a custom Rulepack or directory. You can use this
option multiple times to specify multiple Rulepack files. If you
specify a directory, includes all of the files in the directory with
the .bin and .xml extensions.
Equivalent property name:
com.fortify.sca.RulesFile
Output Options
The following table describes the output options.
-f <file> | Specifies the file to which results are written. If you do not specify
-output-file <file> an output file, Fortify Static Code Analyzer writes the output to
the terminal.
Equivalent property name:
com.fortify.sca.ResultsFile
-format <format> Controls the output format. Valid options are fpr, fvdl,
fvdl.zip, text, and auto. The default is auto, which selects the
output format based on the file extension of the file provided with
the -f option.
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 116 of 210
User Guide
Chapter 15: Command-Line Interface
The FVDL is an XML file that contains the detailed Fortify Static
Code Analyzer analysis results. This includes vulnerability details,
rule descriptions, code snippets, command-line options used in the
scan, and any scan errors or warnings.
The FPR is a package of the analysis results that includes the
FVDL file as well as additional information such as a copy of the
source code used in the scan, the external metadata, and custom
rules (if applicable). Micro Focus Fortify Audit Workbench is
automatically associated with the .fpr file extension.
Note: If you use result certification, you must specify the fpr
format. See the Micro Focus Fortify Audit Workbench User
Guide for information about result certification.
-append Appends results to the file specified with the -f option. The
resulting FPR contains the issues from the earlier scan as well as
issues from the current scan. The build information and program
data (lists of sources and sinks) sections are also merged. To use
this option, the output file format must be fpr or fvdl. For
information on the -format output option, see the description in
this table.
The engine data, which includes Fortify security
content information, command-line options, system properties,
warnings, errors, and other information about the execution of
Fortify Static Code Analyzer (as opposed to information about
the program being analyzed), is not merged. Because engine data
is not merged with the -append option, Fortify does not certify
results generated with -append.
If this option is not specified, Fortify Static Code Analyzer adds
any new findings to the FPR file, and labels the older result as
previous findings.
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 117 of 210
User Guide
Chapter 15: Command-Line Interface
-build-label <label> Specifies the label of the project being scanned. Fortify Static
Code Analyzer does not use this label but includes it in the
analysis results.
Equivalent property name:
com.fortify.sca.BuildLabel
-build-project <project> Specifies the name of the project being scanned. Fortify Static
Code Analyzer does not use the name but includes it in the
analysis results.
Equivalent property name:
com.fortify.sca.BuildProject
-build-version <version> Specifies the version of the project being scanned. Fortify Static
Code Analyzer does not use the version but includes it in the
analysis results.
Equivalent property name:
com.fortify.sca.BuildVersion
-fvdl-no-enginedata Excludes the engine data from the analysis results file. The engine
data includes Fortify security content information, command-line
options, system properties, warnings, errors, and other
information about the execution of Fortify Static Code Analyzer.
Equivalent property name:
com.fortify.sca.FVDLDisableEngineData
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 118 of 210
User Guide
Chapter 15: Command-Line Interface
-fvdl-no-progdata Excludes program data from the analysis results file. This removes
the taint source information from the Functions view in Fortify
Audit Workbench.
Equivalent property name:
com.fortify.sca.FVDLDisableProgramData
-fvdl-no-snippets Excludes the code snippets from the analysis results file.
Equivalent property name:
com.fortify.sca.FVDLDisableSnippets
Other Options
The following table describes other options.
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 119 of 210
User Guide
Chapter 15: Command-Line Interface
-logfile <file> Specifies the log file that Fortify Static Code Analyzer
creates.
Equivalent property name:
com.fortify.sca.LogFile
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 120 of 210
User Guide
Chapter 15: Command-Line Interface
Directives
Use the following directives to list information about previous translation commands. Use only one
directive at a time and do not use any directive in conjunction with normal translation or analysis
commands.
Directive Description
-clean Deletes all Fortify Static Code Analyzer intermediate files and build
records. If a build ID is specified, only files and build records relating to
that build ID are deleted.
-show-binaries Displays all objects that were created but not used in the production of
any other binaries. If fully integrated into the build, it lists all of the
binaries produced.
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 121 of 210
User Guide
Chapter 15: Command-Line Interface
Directive Description
-show-build-tree When you scan with the -bin option, displays all files used to create the
binary and all files used to create those files in a tree layout. If the -bin
option is not present, the tree is displayed for each binary.
-show-build-warnings Use with -b <build_id> to show any errors and warnings that
occurred in the translation phase on the console.
-show-files Lists the files in the specified build ID. When the -bin option is present,
displays only the source files that went into the binary.
Specifying Files
File specifiers are expressions that allow you to pass a long list of files to Fortify Static Code Analyzer
using wildcard characters. Fortify Static Code Analyzer recognizes two types of wildcard characters: a
single asterisk character (*) matches part of a file name, and double asterisk characters (**) recursively
matches directories. You can specify one or more files, one or more file specifiers, or a combination of
files and file specifiers.
Note: In the following table, the .java extension is only used as an example to show the different
file specifier options.
<dir>/**/Example.java Any file named Example.java found in the named directory or any
subdirectories.
<dir>/*.java Any file with the extension .java found in the named directory.
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 122 of 210
User Guide
Chapter 15: Command-Line Interface
<dir>/**/*.java Any file with the extension .java found in the named directory or any
subdirectories.
<dir>/**/* All files found in the named directory or any subdirectories (same as
<dir>).
Note: Windows and many Unix shells automatically expand parameters that contain the asterisk
character (*), so you must enclose file-specifier expressions in quotes. Also, on Windows, you can
use the backslash character (\) as the directory separator instead of the forward slash (/).
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 123 of 210
Chapter 16: Command-Line Utilities
This section contains the following topics:
Fortify Static Code Analyzer Utilities 124
About Updating Security Content 125
Working with FPR Files from the Command Line 127
Generating Reports from the Command Line 134
Checking the Fortify Static Code Analyzer Scan Status 138
More
Utility Description Information
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 124 of 210
User Guide
Chapter 16: Command-Line Utilities
More
Utility Description Information
BIRTReportGenerator Generates BIRT reports and legacy reports from FPR files "Generating
Reports from
ReportGenerator
the Command
Line" on
page 134
scapostinstall After you install Fortify Static Code Analyzer, this utility "Running the
enables you to migrate properties files from a previous Post-Install
version of Fortify Static Code Analyzer, specify a locale, Tool" on
and specify a proxy server for security content updates and page 33
for Fortify Software Security Center.
SCAState Provides state analysis information on the JVM during the "Checking the
scan phase Fortify Static
Code
Analyzer Scan
Status" on
page 138
fortifyupdate [<options>]
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 125 of 210
User Guide
Chapter 16: Command-Line Utilities
Option Description
-acceptKey Accept the public key. When this is specified, you are not
prompted to provide a public key.
-coreDir <dir> Specifies the core directory where the update is stored.
-locale <locale> Specifies a locale. The default is the value set for the locale
property in the fortify.properties configuration file.
For more information about the fortify.properties
configuration file, see the Micro Focus Fortify Static Code
Analyzer Tools Properties Reference Guide.
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 126 of 210
User Guide
Chapter 16: Command-Line Utilities
Option Description
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 127 of 210
User Guide
Chapter 16: Command-Line Utilities
Option Description
-project <primary>.fpr Specifies the primary FPR file to merge. Conflicts are resolved using
the values in this file.
-source <secondary>.fpr Specifies the secondary FPR file to merge. The primary project
overrides values if conflicts exist.
-f <output>.fpr Specifies the name of the merged output file. This file is the result
of the merged files.
Note: When you specify this option, neither of the original FPR
files are modified. If you do not use this option, the primary
FPR is overwritten with the merged results.
-forceMigration Forces the migration, even if the engine and the Rulepack versions
of the two projects are the same.
-useSourceIssueTemplate Specifies to use the filter sets and folders from the issue template in
the secondary FPR. By default, Fortify Static Code Analyzer uses
the filter sets and folders from the issue template in the primary
FPR.
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 128 of 210
User Guide
Chapter 16: Command-Line Utilities
Option Description
Windows example:
l Obtain the number of issues for each analyzer, vulnerability category, or custom grouping
l Obtain lists of issues (including some basic information). You can filter these lists.
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 129 of 210
User Guide
Chapter 16: Command-Line Utilities
Note: By default, the result does not include suppressed and removed issues. To include
suppressed or removed issues, use the -includeSuppressed or -includeRemoved options.
To display information for issues in CSV format:
Option Description
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 130 of 210
User Guide
Chapter 16: Command-Line Utilities
Option Description
-project <project>.fpr Specifies the FPR from which to extract the results
information.
-outputformat <format> Specifies the output format. The valid values are TEXT
and CSV. The default value is TEXT.
<sink_filename>:<line_num> or
<sink_filename>:<line_num> (<category>
| <analyzer>)
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 131 of 210
User Guide
Chapter 16: Command-Line Utilities
Option Description
"<instanceid>", "<category>",
"<sink_filename>:<line_num>",
"<analyzer>"
1 The project is signed, and some, but not all, of the signatures passed the validity test.
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 132 of 210
User Guide
Chapter 16: Command-Line Utilities
Option Description
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 133 of 210
User Guide
Chapter 16: Command-Line Utilities
Option Description
-source <old_source_archive>.fsa Specifies the name of the existing archive. Use only if
you are merging an FPR file with an existing archive
(-mergeArchive option).
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 134 of 210
User Guide
Chapter 16: Command-Line Utilities
The following is an example of how to generate an OWASP Top 10 2017 report with additional options:
Option Description
-filterSet <filterset_name> Specifies a filter set to use to generate the report. For
example: -filterSet "Quick View".
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 135 of 210
User Guide
Chapter 16: Command-Line Utilities
Option Description
--Version <version> Specifies the version for the template. The valid values for
the templates versions are listed below.
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 136 of 210
User Guide
Chapter 16: Command-Line Utilities
Option Description
-format <format> Specifies the generated report format. The valid values for
<format> are: PDF, RTF, and XML.
-source <audited_project>.fpr Specifies the audited project on which to base the report.
-template <template_name> Specifies the issue template used to define the report. If not
specified, ReportGenerator uses the default template.
-filterSet <filterset_name> Specifies a filter set to use to generate the report. For
example: -filterset "Quick View".
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 137 of 210
User Guide
Chapter 16: Command-Line Utilities
SCAState [<options>]
Option Description
-hd <filename> | Specifies the file to which the heap dump is written. The file is
--heap-dump <filename> interpreted relative to the remote scan’s working directory; this is not
necessarily the same directory where you are running SCAState.
-liveprogress Displays the ongoing status of a running scan. This is the default. If
possible, this information is displayed in a separate terminal window.
-pi | --program-info Displays information about the source code being scanned, including
how many source files and functions it contains.
-pid <process_id> Specifies the currently running Fortify Static Code Analyzer process
ID. Use this option if there are multiple Fortify Static Code Analyzer
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 138 of 210
User Guide
Chapter 16: Command-Line Utilities
Option Description
-scaversion Displays the Fortify Static Code Analyzer version number for the
sourceanalyzer that is currently running.
-td | --thread-dump Prints a thread dump for the main scanning thread.
-timers Displays information from the timers and counters that are
instrumented in Fortify Static Code Analyzer.
Note: Fortify Static Code Analyzer writes Java process information to the location of the TMP
system environment variable. On Windows systems, the TMP system environment variable location
is C:\Users\<userID>\AppData\Local\Temp. If you change this TMP system environment
variable to point to a different location, SCAState cannot locate the sourceanalyzer Java
process and does not return the expected results. To resolve this issue, change the TMP system
environment variable to match the new TMP location. Fortify recommends that you run SCAState
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 139 of 210
User Guide
Chapter 16: Command-Line Utilities
as an administrator on Windows.
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 140 of 210
Chapter 17: Improving Performance
This chapter provides guidelines and tips to optimize memory usage and performance when analyzing
different types of codebases with Fortify Static Code Analyzer.
This section contains the following topics:
Hardware Considerations 141
Sample Scans 142
Tuning Options 143
Breaking Down Codebases 144
Quick Scan 145
Limiting Analyzers and Languages 146
Optimizing FPR Files 147
Monitoring Long Running Scans 151
Hardware Considerations
The variety of source code makes accurate predictions of memory usage and scan times impossible. The
factors that affect memory usage and performance consists of many different factors including:
l Code type
l Codebase size and complexity
l Number of vulnerabilities
Fortify developed the following set of "best guess" hardware recommendations based on real-world
application scan results. The following table lists these recommendations based on the complexity of the
application.
Average
Application RAM Scan
Complexity CPU Cores (GB) Time Description
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 141 of 210
User Guide
Chapter 17: Improving Performance
Average
Application RAM Scan
Complexity CPU Cores (GB) Time Description
Note: TypeScript scans increase the analysis time significantly. If the total lines of code in an
application consist of more than 20% TypeScript, use the next highest recommendation.
The Micro Focus Fortify Software System Requirements document describes the system requirements.
However, for large and complex applications, Fortify Static Code Analyzer requires more capable
hardware. This includes:
l Disk I/O—Fortify Static Code Analyzer is I/O intensive and therefore the faster the hard drive, the
more savings on the I/O transactions. Fortify recommends a 7,200 RPM drive, although a 10,000
RPM drive (such as the WD Raptor) or an SSD drive is better.
l Memory—See "Memory Tuning" on page 154 for more information about how to determine the
amount of memory required for optimal performance.
l CPU—Fortify recommends a 2.1 GHz or faster processor.
Sample Scans
These sample scans were performed using Fortify Static Code Analyzer version 19.1.0 on a dedicated
Linux virtual machine with 4 CPUs and 32 GB of RAM. These scans were run using Micro Focus Fortify
Software Security Content 2019 Update 1. The following table shows the scan times you can expect for
several common open-source projects.
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 142 of 210
User Guide
Chapter 17: Improving Performance
Tuning Options
Fortify Static Code Analyzer can take a long time to process complex projects. The time is spent in
different phases:
l Translation
l Analysis
Fortify Static Code Analyzer can produce large analysis result files (FPRs), which can cause a long time
to audit and upload to Micro Focus Fortify Software Security Center. This is referred to as the following
phase:
l Audit/Upload
The following table lists tips on how to improve performance in the different time-consuming phases.
Analysis -Xss<size>M | G Set stack size for each "Memory Tuning" on page 154
thread
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 143 of 210
User Guide
Chapter 17: Improving Performance
Analysis -quick Run a quick scan "Quick Scan" on the next page
Analysis -filter <file> Apply a filter using a filter "Filter Files" on page 147
file
Audit/Upload
Analysis -disable- Exclude source files from "Excluding Source Code from the
source-bundling the FPR file FPR" on page 148
Audit/Upload
Option Description
-bin <binary> Specifies a subset of source files to scan. Only the source files that were
linked in the named binary at build time are included in the scan. You can use
this option multiple times to specify the inclusion of multiple binaries in the
scan.
-show-binaries Displays all objects that were created but not used in the production of any
other binaries. If fully integrated into the build, it lists all of the binaries
produced.
-show-build-tree When used with the -bin option, displays all files used to create the binary
and all files used to create those files in a tree layout. If the -bin option is not
present, Fortify Static Code Analyzer displays the tree for each binary.
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 144 of 210
User Guide
Chapter 17: Improving Performance
Quick Scan
Quick scan mode provides a way to quickly scan your projects for major defects. By default, quick scan
mode searches for high‐ confidence, high‐ severity issues. Although scanning in quick scan mode is
significantly faster, it does not provide a robust result set.
Limiters
The depth of the Fortify Static Code Analyzer analysis sometimes depends on the available resources.
Fortify Static Code Analyzer uses a complexity metric to trade off these resources with the number of
vulnerabilities that it can find. Sometimes, this means giving up on a particular function when it does not
look like Fortify Static Code Analyzer has enough resources available.
Fortify Static Code Analyzer enables the user to control the “cutoff” point by using Fortify Static Code
Analyzer limiter properties. The different analyzers have different limiters. You can run a predefined set
of these limiters using a Quick Scan. See the "fortify-sca-quickscan.properties" on page 205 for
descriptions of the limiters.
To enable quick scan mode, use the -quick option with -scan option. With quick scan mode enabled,
Fortify Static Code Analyzer applies the properties from the <sca_install_
dir>/Core/config/fortify-sca-quickscan.properties file, in addition to the standard
<sca_install_dir>/Core/config/fortify-sca.properties file. You can adjust the limiters
that Fortify Static Code Analyzer uses by editing the fortify-sca-quickscan.properties file. If
you modify fortify-sca.properties, it also affects quick scan behavior. Fortify recommends that
you do performance tuning in Quick Scan mode, and leave the full scan in the default settings to
produce a highly accurate scan. For description of the quick scan mode properties, see "Fortify Static
Code Analyzer Properties Files" on page 171.
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 145 of 210
User Guide
Chapter 17: Improving Performance
Disabling Analyzers
To disable specific analyzers, include the -analyzers option to Fortify Static Code Analyzer at scan
time with a colon- or comma-separated list of analyzers you want to enable. The full list of analyzers is:
buffer, content, configuration, controlflow, dataflow, findbugs, nullptr, semantic, and
structural.
For example, to run a scan that only includes the Dataflow, Control Flow, and Buffer analyzers, use the
following scan command:
You can also do the same thing by setting com.fortify.sca.DefaultAnalyzers in the Fortify
Static Code Analyzer property file <sca_install_dir>/Core/config/fortify-
sca.properties. For example, to achieve the equivalent of the previous scan command, set the
following in the properties file:
com.fortify.sca.DefaultAnalyzers=dataflow:controlflow:buffer
Disabling Languages
To disable specific languages, include the -disable-language option in the translation phase, which
specifies a list of languages that you want to exclude. The full list of valid language parameters is:
For example, to perform a translation that excludes SQL and PHP files, use the following command:
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 146 of 210
User Guide
Chapter 17: Improving Performance
com.fortify.sca.DISabledLanguages=sql:php
Optimizing FPR Files
This chapter describes how to handle performance issues related to the audit results (FPR) file. This
includes reducing the scan time, reducing FPR file size, and tips for opening large FPR files.
Filter Files
Filter files are flat files that you can specify with a scan using the -filter option. Use a filter file to
blacklist specified categories, instance IDs, and rule IDs. If you determine that a certain category of
issues or rules are not relevant for a particular scan, you can stop Fortify Static Code Analyzer from
flagging these types of issues and adding them to the FPR. Using a filter file can reduce both the scan
time and the size of the results file.
For example, if you are scanning a simple program that just reads a specified file, you might not want to
see path manipulation issues, because these are likely planned as part of the functionality. To filter out
path manipulation issues, create a file that contains a single line:
Path Manipulation
Save this file as filter.txt. Use the -filter option for the scan as shown in the following example:
The myResults.fpr does not include any issues with the category Path Manipulation.
For more information about filter files, see "Filtering the Analysis" on page 162.
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 147 of 210
User Guide
Chapter 17: Improving Performance
To do this, use Micro Focus Fortify Audit Workbench to create a filter and a filter set and then run the
Fortify Static Code Analyzer scan with the filter set. For more detailed instructions about how to create
filters and filter sets in Fortify Audit Workbench, see the Micro Focus Fortify Audit Workbench User
Guide. The following example describes the basic steps for how to create and use a scan-time filter:
1. In this example, suppose you use OWASP Top 10 2017 and you only want to see issues
categorized within this standard. Create a filter in Fortify Audit Workbench such as:
This filter looks through the issues and if an issue does not map to an OWASP Top 10 2017
category with ‘A’ in the name, then it hides it. Because all OWASP Top 10 2017 categories start
with ‘A’ (A1, A2, …, A10), then any category without the letter ‘A’ is not in the OWASP Top 10
2017. The filter hides the issues from view in Fortify Audit Workbench, but they are still in the FPR.
2. In Fortify Audit Workbench, create a new filter set called OWASP_Filter_Set that contains the
previous filter, and then export the issue template to a file called IssueTemplate.xml.
3. You can then specify this filter at scan-time with the following command:
In the previous example, the inclusion of the -Dcom.fortify.sca.FilterSet property tells Fortify
Static Code Analyzer to use the OWASP_Filter_Set filter set from the issue template
IssueTemplate.xml. Any filters that hide issues from view are removed and are not written to the
FPR. Therefore, you can reduce the visible number of issues, make the scan very targeted, and reduce
the size of the resulting FPR file.
Note: Although filtering issues with a filter set can reduce the size of the FPR, they do not usually
reduce the scan time. Fortify Static Code Analyzer examines the filter set after it calculates the
issues to determine whether or not to write them to the FPR file. The filters in a filter set determine
the rule types that Fortify Static Code Analyzer loads.
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 148 of 210
User Guide
Chapter 17: Improving Performance
Command-line Option:
-disable-source-bundling
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 149 of 210
User Guide
Chapter 17: Improving Performance
com.fortify.sca. This excludes the program data from the FPR. This
FVDLDisableProgramData removes the Taint Sources information from the
=true Functions view in Fortify Audit Workbench. This
Command-line Option: property typically only has a minimal effect on the
-fvdl-no-progdata overall size of the FPR file.
com.fortify.model.
IssueCutOffEndIndex=101
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 150 of 210
User Guide
Chapter 17: Improving Performance
property.
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 151 of 210
User Guide
Chapter 17: Improving Performance
Code Analyzer spends its time during the scan. For more information about how to use the SCAState
utility, see the "Checking the Fortify Static Code Analyzer Scan Status" on page 138.
Note: These are third-party tools and Micro Focus does not provide or support them.
Using JConsole
JConsole is an interactive monitoring tool that complies with the JMX specification. The disadvantage of
JConsole is that you cannot save the output.
To use JConsole, you must first set some additional JVM parameters. Set the following environment
variable:
export SCA_VM_OPTS="-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=9090
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false"
After the JMX parameters are set, start a Fortify Static Code Analyzer scan. During the scan, start
JConsole to monitor Fortify Static Code Analyzer locally or remotely with the following command:
jconsole <host_name>:9090
jvisualvm <host_name>:9090
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 152 of 210
Chapter 18: Troubleshooting
This section contains the following topics:
Exit Codes 153
Translation Failed Message 154
Memory Tuning 154
Scanning Complex Functions 156
Issue Non-Determinism 159
C/C++ Precompiled Header Files 159
Accessing Log Files 159
Configuring Log Files 160
Reporting Issues and Requesting Enhancements 161
Exit Codes
The following table describes the possible Fortify Static Code Analyzer exit codes.
Exit
Code Description
0 Success
1 Generic failure
4 Analysis completed with numbered warning messages written to the console and/or to the
log file
5 Analysis completed with numbered error messages written to the console and/or to the log
file
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 153 of 210
User Guide
Chapter 18: Troubleshooting
You can extend the default exit code options by setting the com.fortify.sca.ExitCodeLevel
property in the <sca_install_dir>/Core/Config/fortify-sca.properties file.
to:
Re-run the translation to print the errors that the translator encountered. If the output indicates an
incompatibility between your compiler and the Fortify Static Code Analyzer translator, send your
output to Micro Focus Fortify Customer Support for further investigation.
Memory Tuning
The amount of physical RAM required for a scan depends on the complexity of the code. By default,
Fortify Static Code Analyzer automatically allocates the memory it uses based on the physical memory
available on the system. This is generally sufficient. As described in "Output Options" on page 116, you
can adjust the Java heap size with the -Xmx command-line option.
This section describes suggestions for what you can do if you encounter OutOfMemory errors during
the analysis.
Note: You can set the memory allocation options discussed in this section to run for all scans by
setting the SCA_VM_OPTS environment variable.
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 154 of 210
User Guide
Chapter 18: Troubleshooting
Resolution
To resolve a Java heap exhaustion problem, allocate more heap space to the Fortify Static Code
Analyzer Java virtual machine when you start the scan. To increase the heap size, use the -Xmx
command-line option when you run the Fortify Static Code Analyzer scan. For example, -Xmx1G makes
1 GB available. Before you use this parameter, determine the maximum allowable value for Java heap
space. The maximum value depends on the available physical memory.
Fortify recommends that you do not specify a value for the -Xmx option that exceeds either 90% of the
total physical memory or the total physical memory minus 1.5 GB to allow for the operating system. If
the system is dedicated to running Fortify Static Code Analyzer, you do not need to change it. However,
if the system resources are shared with other memory-intensive processes, subtract an allowance for
those other processes.
Note: You do not need to account for other resident but not active processes (while Fortify Static
Code Analyzer is running) that the operating system might swap to disk. Allocating more physical
memory to Fortify Static Code Analyzer than is available in the environment might cause
“thrashing,” which typically slows down the scan along with everything else on the system.
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 155 of 210
User Guide
Chapter 18: Troubleshooting
Symptom
You can identify native heap exhaustion by abnormal termination of the Fortify Static Code Analyzer
process and the following output on the command line:
Because this is a fatal Java virtual machine error, it is usually accompanied by an error log created in the
working directory with the file name hs_err_pidNNN.log.
Resolution
Because the problem is a result of overcrowding within the process, the resolution is to reduce the
amount of memory used for the Java memory regions (Java heap). Reducing this value should reduce
the crowding problem and allow the scan to complete successfully.
Stack Overflow
Each thread in a Java application has its own stack. The stack holds return addresses, function/method
call arguments, and so on. If a thread tends to process large structures with recursive algorithms, it
might need a large stack for all those return addresses. With the JVM, you can set that size with the
-Xss option.
Symptoms
This message typically appears in the Fortify Static Code Analyzer log file, but might also appear in the
command-line output:
java.lang.StackOverflowError
Resolution
The default stack size is 16 MB. To increase the stack size, pass the -Xss option to the
sourceanalyzer command. For example, -Xss32M increases the stack to 32 MB.
Function <name> is too complex for <analyzer> analysis and will be skipped
(<identifier>)
where:
l <name> is the name of the source code function
l <analyzer> is the name of the analyzer
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 156 of 210
User Guide
Chapter 18: Troubleshooting
com.fortify.sca. 1000
limiters.MaxTaintDefForVar
com.fortify.sca. 4000
limiters.MaxTaintDefForVarAbort
com.fortify.sca. 4
limiters.MaxFieldDepth
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 157 of 210
User Guide
Chapter 18: Troubleshooting
Default
Property Name Description Value
com.fortify.sca. Sets the time limit (in milliseconds) for Control Flow 600000
CtrlflowMaxFunctionTime analysis on a single function. (10 minutes)
com.fortify.sca. Sets the time limit (in milliseconds) for Null Pointer 300000
NullPtrMaxFunctionTime analysis on a single function. (5 minutes)
To resolve the complexity identifier of m, increase the physical memory for Fortify Static Code Analyzer.
Note: If you increase these limiters or time settings, it makes the analysis of complex functions take
longer. It is difficult to characterize the exact performance implications of a particular value for the
limiters/time, because it depends on the specific function in question. If you never want see the
"Function too complex" warning, you can set the limiters/time to an extremely high value, however it
can cause unacceptable scan time.
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 158 of 210
User Guide
Chapter 18: Troubleshooting
Issue Non-Determinism
Running in parallel analysis mode might introduce issue non-determinism. If you experience any
problems, contact Micro Focus Fortify Customer Support and disable parallel analysis mode. Disabling
parallel analysis mode results in sequential analysis, which can be substantially slower but provides
deterministic results across multiple scans.
To disable parallel analysis mode:
1. Open the fortify-sca.properties file located in the <sca_install_dir>/core/config
directory in a text editor.
2. Change the value for the com.fortify.sca.MultithreadedAnalysis property to false.
com.fortify.sca.MultithreadedAnalysis=false
where <version> is the version of Fortify Static Code Analyzer that you are using.
The following table describes the two log files.
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 159 of 210
User Guide
Chapter 18: Troubleshooting
l The same log messages as the standard log file, but with
additional details
l Additional detailed messages that are not included in the
standard log file
This log file is only helpful to Micro Focus Fortify Customer
Support or the development team to troubleshoot any
possible issues.
If you encounter warnings or errors that you cannot resolve, provide the Fortify Support log file to
Micro Focus Fortify Customer Support.
Log
Level Description
DEBUG Includes information that could be used by Micro Focus Fortify Customer Support or the
development team to troubleshoot an issue
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 160 of 210
User Guide
Chapter 18: Troubleshooting
Log
Level Description
WARN Information about issues where the translation or scan did not stop, but might require
your attention for accurate results
FATAL Information about an error that caused the translation or scan to abort
sourceanalyzer -version
l Platform: (for example, Red Hat Enterprise Linux <version>)
l Operating system: (such as Linux)
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 161 of 210
Appendix A: Filtering the Analysis
This section contains the following topics:
Filter Files 162
Filter File Example 162
Filter Files
You can create a file to filter out particular vulnerability instances, rules, and vulnerability categories
when you run the sourceanalyzer command. You specify the file with the -filter analysis option.
Note: Fortify recommends that you only use filter files if you are an advanced user. Do not use filter
files for standard audits, because auditors typically want to see and evaluate all issues that Fortify
Static Code Analyzer finds.
A filter file is a text file that you can create with any text editor. The file functions as a blacklist, where
only the filter items you do not want are specified. Each filter item is on a separate line in the filter file.
You can specify the following filter types:
l Category
l Instance ID
l Rule ID
The filters are applied at different times in the analysis process, based on the type of filter. Fortify Static
Code Analyzer applies category and rule ID filters in the initialization phase before any analysis has
taken place, whereas an instance ID filter is applied after the analysis phase.
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 162 of 210
User Guide
Appendix A: Filtering the Analysis
semantic ]
EightBall.java(12) : Reader.read()
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 163 of 210
User Guide
Appendix A: Filtering the Analysis
The following is example filter file content that performs the following:
l Remove all results related to the Poor Logging Practice category
l Remove the Unreleased Resource based on its instance ID
l Remove any dataflow issues that were generated from a specific rule ID
To test the filtered output, copy the above text and paste it into a file with the name test_
filter.txt.
To apply the filtering in the test_filter.txt file, execute the following command:
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 164 of 210
Appendix B: Fortify Scan Wizard
This section contains the following topics:
Preparing to use the Fortify Scan Wizard 165
Starting the Fortify Scan Wizard 166
Note: If you generate a script on a Windows system, you cannot run that script on a non-Windows
system. Likewise, if you generate a script on a non-Windows system, you cannot run it on a
Windows system.
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 165 of 210
User Guide
Appendix B: Fortify Scan Wizard
l To scan Java code, the version of the Java JDK used to develop the code
l To use Fortify CloudScan to scan your code, the URL of the CloudScan Controller
To upload your scan results to Fortify Software Security Center, you also need:
l Your Fortify Software Security Center logon credentials
l The Fortify Software Security Center server URL
l An upload authentication token
Note: If you do not have an upload token, you can use the Fortify Scan Wizard to generate one.
To do this, you must have Fortify Software Security Center logon credentials.
If you do not have Fortify Software Security Center logon credentials, you must have the following:
l Application name
l Application version name
Note: Fortify Scan Wizard uses a default scan memory setting of 90% of the total available memory
if it is greater than 4 GB, otherwise the default memory setting is 2/3 the total available memory.
Adjust the scan memory as necessary in the Translation and Scan step.
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 166 of 210
Appendix C: Sample Files
The Fortify SCA and Applications installation might include several code sample that you can use to
when learning to use Fortify Static Code Analyzer. If you installed the sample files, they are located in
the following directory:
<sca_install_dir>/Samples
The Samples directory contains two subdirectories: basic and advanced. Each code sample includes a
README.txt file that provides instructions on how to scan the code with Fortify Static Code Analyzer
and view the results in Micro Focus Fortify Audit Workbench.
The basic subdirectory includes an assortment of simple language-specific code samples. The
advanced subdirectory includes more advanced samples including source code to help you integrate
Fortify Static Code Analyzer with your bug tracker application. For information on integrating bug
tracker applications with Fortify Audit Workbench, see Micro Focus Fortify Audit Workbench User
Guide.
This section contains the following topics:
Basic Samples 167
Advanced Samples 169
Basic Samples
The following table describes the sample files in the <sca_install_dir>/Samples/basic directory
and provides a list of the vulnerabilities that the samples demonstrate. Many of the samples includes a
README.txt file that provides details and instructions on its use.
cpp A C++ sample file and instructions to analyze code that has a Command
simple dataflow vulnerability. It requires a gcc or cl compiler. Injection
Memory Leak
database A database.pks sample file. This SQL sample includes issues in Access Control:
SQL code. Database
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 167 of 210
User Guide
Appendix C: Sample Files
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 168 of 210
User Guide
Appendix C: Sample Files
Advanced Samples
The following table describes the sample files in the <sca_install_dir>/Samples/advanced
directory. Many of the samples include a README.txt file that provides further details and instructions
on its use.
BugTrackerPlugin Includes source code for the supported bug tracker plugin.
<bugtracker>
configuration A sample Java EE application that has vulnerabilities in its web module
deployment descriptor web.xml.
crosstier A sample that has vulnerabilities that span multiple application technologies
(Java, PL/SQL, JSP, struts).
The output contains several issues of different types, including two Access
Control vulnerabilities. One of these is a cross-tier result. It has a dataflow trace
from user input in Java code that can affect a SELECT statement in PL/SQL.
csharp A simple C# program that has SQL injection vulnerabilities. Versions are
included for different supported versions of Visual Studio. Scanning this sample
reveals the SQL Injection vulnerabilities and an Unreleased Resource
vulnerability. Other categories might also be present, depending on the
Rulepacks used in the scan.
customrules Several simple source code samples and Rulepack files that illustrate how four
different analyzers: Semantic, Dataflow, Control Flow, and Configuration
interpret rules. This folder also includes several miscellaneous samples of real-
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 169 of 210
User Guide
Appendix C: Sample Files
filters A sample that uses the Fortify Static Code Analyzer -filter option.
findbugs A sample that demonstrates how to run the FindBugs static analysis tool
together with Fortify Static Code Analyzer and filter out results that overlap.
java1.5 A sample Java file: ResourceInjection.java. The result file includes a Path
Manipulation, a J2EE Bad Practices, and a Poor Style vulnerability.
javaAnnotations A sample application that illustrates problems that might arise from its use and
how to fix the problems with the Fortify Java Annotations.
This example illustrates how the use of Fortify Annotations can result in
increased accuracy in the reported vulnerabilities. The README.txt file
describes the Fortify Java Annotations and the potential problems and
solutions associated with the sample application.
riches.java A Java EE 1.4 sample web application with various known security vulnerabilities
including Cross-Site Scripting, SQL Injection, and Command Injection.
riches.net A .NET 4.0 sample web application with various known security vulnerabilities
including Cross-Site Scripting, SQL Injection, and Command Injection.
webgoat The WebGoat test Java EE web application provided by the Open Web
Application Security Project (https://www.owasp.org). This directory contains
the WebGoat 5.0 source code.
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 170 of 210
Appendix D: Configuration Options
The Fortify SCA and Applications installer places a set of properties files on your system. Properties files
contain configurable settings for Micro Focus Fortify Static Code Analyzer runtime analysis, output, and
performance.
This section contains the following topics:
Fortify Static Code Analyzer Properties Files 171
fortify-sca.properties 173
fortify-sca-quickscan.properties 205
com.fortify.sca.fileextensions.htm=HTML
As shown above, the property sets the translation to use for .htm files. The property name is
com.fortify.sca.fileextension.htm and the value is set to HTML.
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 171 of 210
User Guide
Appendix D: Configuration Options
Note: When you specify a path for Windows systems as the property value, you must escape any
backslash character (\) with a backslash (for example:
com.fortify.sca.ASPVirtualRoots.Library=C:\\WebServer\\CustomerA\\inc).
Disabled properties are commented out of the properties file. To enable these properties, remove the
comment symbol (#) and save the properties file. In the following example, the
com.fortify.sca.LogFile property is disabled in the properties file and is not part of the
configuration:
1 Command line with the Properties specified on the command line have the highest
-D option priority and you can specify them in any scan.
2 Fortify Static Code Properties specified in the Quick Scan configuration file
Analyzer Quick Scan (fortify-sca-quickscan.properties) have the second
configuration file priority, but only if you include the -quick option to enable
Quick Scan mode. If Quick Scan is not invoked, this file is ignored.
3 Fortify Static Code Properties specified in the Fortify Static Code Analyzer
Analyzer configuration configuration file (fortify-sca.properties) have the lowest
file priority. Edit this file to change the property values on a more
permanent basis for all scans.
Fortify Static Code Analyzer also relies on some properties that have internally defined default values.
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 172 of 210
User Guide
Appendix D: Configuration Options
fortify-sca.properties
The following table summarizes the properties available for use in the fortify-sca.properties file.
See "fortify-sca-quickscan.properties" on page 205 for additional properties that you can use in this
properties file. The description for each property includes the value type, the default value, the
equivalent command-line option (if applicable), and an example.
Command-line Option: -b
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 173 of 210
User Guide
Appendix D: Configuration Options
Default:false
Default: true
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 174 of 210
User Guide
Appendix D: Configuration Options
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 175 of 210
User Guide
Appendix D: Configuration Options
Default: false
com.fortify.sca. Specifies the source file encoding type. Fortify Static Code
InputFileEncoding Analyzer allows you to scan a project that contains
differently encoded source files. To work with a multi-
encoded project, you must specify the -encoding option
in the translation phase, when Fortify Static Code
Analyzer first reads the source code file. Fortify Static
Code Analyzer remembers this encoding in the build
session and propagates it into the FVDL file.
Valid encoding names are from the
java.nio.charset.Charset
Typically, if you do not specify the encoding type, Fortify
Static Code Analyzer uses file.encoding from the
java.io.InputStreamReader constructor with no
encoding parameter. In a few cases (for example with the
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 176 of 210
User Guide
Appendix D: Configuration Options
Default: false
Default: false
Command-line Option: -apex
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 177 of 210
User Guide
Appendix D: Configuration Options
Default: (none)
com.fortify.sca. Extends the default exit code options. See "Exit Codes" on
ExitCodeLevel page 153 for a description of the exit codes. The valid
values are:
The valid values are:
com.fortify.sca. If set to true, requests a full scan of a project for which you
IncrementalBaseScan can run subsequent incremental scans.
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 178 of 210
User Guide
Appendix D: Configuration Options
Default: false
Default: false
Default: true
Default: true
Default: 2700
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 179 of 210
User Guide
Appendix D: Configuration Options
Default: javascript,python,ruby,typescript
Default: 300
com.fortify.sca. The amount of time (in seconds) that type inference can
TypeInferenceFunctionTimeout spend to analyze a single function. Unlimited if set to zero
or is not specified.
Value type: Long
Default: 60
Default: false
com.fortify.sca. Specifies a list of file extensions for rules files. Any files in
RulesFileExtensions <sca_install_dir>/Core/config/rules (or a
directory specified with the -rules option) whose
extension is in this list is included. The .bin extension is
always included, regardless of the value of this property.
The delimiter for this property is the system path
separator.
Value type: String
Default: .xml
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 180 of 210
User Guide
Appendix D: Configuration Options
com.fortify.sca. If set to true, rules from the default Rulepacks are not
NoDefaultRules loaded. Fortify Static Code Analyzer processes the
Rulepacks for description elements and language libraries,
but no rules are processed.
Value type: Boolean
Default: (none)
Value type: Boolean
Default: (none)
Value type: Boolean
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 181 of 210
User Guide
Appendix D: Configuration Options
Default: (none)
${com.fortify.Core}/config/customrules
Default: true
Command-line Option: -findbugs
Default: true
Default:1.0
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 182 of 210
User Guide
Appendix D: Configuration Options
Default: true
Default: reg
Example:
com.fortify.sca.RegExecutable=
C:\\Windows\\System32\\reg.exe
com.fortify.sca. Specifies the path to a filter file for the scan. See "Filter
FilterFile Files" on page 162 for more information.
Value type: String (path)
Default: (none)
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 183 of 210
User Guide
Appendix D: Configuration Options
com.fortify.sca. Specifies the issue template file to use for the scan. This
ProjectTemplate only affects scans on the local machine. If you upload the
FPR to Micro Focus Fortify Software Security Center
server, it uses the issue template assigned to the
application version.
Value type: String
Default: (none)
Default: true
Default: .*yyparse.*
Default: true
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 184 of 210
User Guide
Appendix D: Configuration Options
Default: 1.8
Command-line Option: -jdk
com.fortify.sca. Specifies the class path used to analyze Java source code.
JavaClasspath Specify the paths as a semicolon-separated list (Windows)
or a colon-separated list (non-Windows systems).
Value type: String (paths)
Default: (none)
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 185 of 210
User Guide
Appendix D: Configuration Options
Default: true
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 186 of 210
User Guide
Appendix D: Configuration Options
com.fortify.sca If set to true, the JSP parser uses JSP security manager.
jsp.UseSecurityManager
Value type: Boolean
Default: true
Default: ISO-8859-1
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 187 of 210
User Guide
Appendix D: Configuration Options
library files.
Value type: String (path)
Default: (none)
Default: false
Command-line Option: -libdirs-only
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 188 of 210
User Guide
Appendix D: Configuration Options
Default: false
Command-line Option: -dotnet-website
Default: false
Command-line Option: -aspnetcore
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 189 of 210
User Guide
Appendix D: Configuration Options
Default: (none)
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 190 of 210
User Guide
Appendix D: Configuration Options
WinForms. WinForms.TransformDataBindings=true
TransformChange
NotificationPattern WinForms.TransformMessageLoops=true
WinForms. WinForms.TransformChangeNotificationPattern
CollectionMutation =
Monitor.Label true
WinForms. WinForms.CollectionMutationMonitor.Label=
ExtractEventHandlers WinFormsDataSource
WinForms.ExtractEventHandlers=true
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 191 of 210
User Guide
Appendix D: Configuration Options
Default: false
Example: com.fortify.sca.JavaScript.
src.domain.whitelist=
http://www.xyz.com|http://www.123.org
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 192 of 210
User Guide
Appendix D: Configuration Options
Default: false
l AngularJS: angular.js,angular.min.js,
angular-animate.js,angular-aria.js,
angular_1_router.js,angular-cookies.js,
angular-message-format.js,angular-
messages.js,
angular-mocks.js,angular-parse-ext.js,
angular-resource.js,angular-route.js,
angular-sanitize.js,angular-touch.js
l ES6: es6-shim.min.js,system-polyfills.js,
shims_for_IE.js
l jQuery: jquery.js,jquery.min.js,
jquery-migrate.js,jquery-migrate.min.js,
jquery-ui.js,jquery-ui.min.js,
jquery.mobile.js,jquery.mobile.min.js,
jquery.color.js,jquery.color.min.js,
jquery.color.svg-names.js,
jquery.color.svg-names.min.js,
jquery.color.plus-names.js,
jquery.color.plus-names.min.js,
jquery.tools.min.js
l javascript: bootstrap.js,
bootstrap.min.js,
typescript.js,
typescriptServices.js
l typescript: typescript.d.ts,
typescriptServices.d.ts
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 193 of 210
User Guide
Appendix D: Configuration Options
Default: 7.0
Command-Line Option: -php-version
Default: 2
Command-Line Option: -python-version
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 194 of 210
User Guide
Appendix D: Configuration Options
Command-line Option:-python-legacy
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 195 of 210
User Guide
Appendix D: Configuration Options
com.fortify.sca. Specifies the root location of a valid Flex SDK. The folder
FlexSdkRoot must contain a frameworks folder that contains a flex-
config.xml file. It must also contain a bin folder that
contains an mxmlc executable.
Value type: String (path)
Default: (none)
Default: false
Command-line Option: -fixed-format
com.fortify.sca. Sets the SQL language variant. The valid values are PLSQL
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 196 of 210
User Guide
Appendix D: Configuration Options
Default: TSQL
Command-line Option: -sql-language
Default: false
Default: false
Command-line Option: -fvdl-no-descriptions
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 197 of 210
User Guide
Appendix D: Configuration Options
Default: false
Command-line Option: -fvdl-no-progdata
com.fortify.sca. If set to true, excludes the engine data from the analysis
FVDLDisableEngineData results file (FVDL).
Value type: Boolean
Default: false
Command-line Option: -fvdl-no-enginedata
Default: false
Command-line Option: -fvdl-no-snippets
com.fortify.sca. If set to true, excludes the label evidence from the analysis
FVDLDisableLabelEvidence results file (FVDL).
Value type: Boolean
Default: false
com.fortify.sca. Specifies location of the style sheet for the analysis results.
FVDLStylesheet
Value type: String (path)
Default:
${com.fortify.Core}/resources/sca/fvdl2html
.xsl
Command-line Option: -f
Example:
com.fortify.sca.ResultsFile=results.fpr
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 198 of 210
User Guide
Appendix D: Configuration Options
Default: false
Command-line Option: -append
com.fortify.sca. Controls the output format. The valid values are fpr,
Renderer fvdl, text, and auto. The default of auto selects the
output format based on the file extension of the file
provided with the -f option.
Value type: String
Default: auto
Command-line Option: -format
Default: false
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 199 of 210
User Guide
Appendix D: Configuration Options
Default: 2
Default: false
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 200 of 210
User Guide
Appendix D: Configuration Options
Default: false
Default: false
Command-line Option: -clobber-log
com.fortify.sca. Specifies the minimum log level for both log files. The valid
LogLevel values are: DEBUG, INFO, WARN, ERROR, and FATAL. For
more information, see "Accessing Log Files" on page 159
and "Configuring Log Files" on page 160.
Value type: String
Default: INFO
Default: false
Default: false
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 201 of 210
User Guide
Appendix D: Configuration Options
Default: false
Command-line Option: -quiet
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 202 of 210
User Guide
Appendix D: Configuration Options
Default: true
Default: false
com.fortify.sca. Sets the location of the CPFE binary (version 4.4.1) to use
cpfe.441.command in the translation phase.
Value type: String (path)
Default:
${com.fortify.Core}/private-
bin/sca/cpfe441.rfct
com.fortify.sca. Sets the name of CPFE option that specifies the output
cpfe.file.option (for example NST) file name.
Value type: String
Default: --gen_c_file_name
Example:
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 203 of 210
User Guide
Appendix D: Configuration Options
com.fortify.sca.cpfe.file.option=
--gen_c_file_name
Default: false
Default: false
Default: false
Default: false
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 204 of 210
User Guide
Appendix D: Configuration Options
Default: false
fortify-sca-quickscan.properties
Fortify Static Code Analyzer offers a less-intensive scan known as a quick scan. This option scans the
project in Quick Scan mode, using the property values in the fortify-sca-quickscan.properties
file. By default, a Quick Scan searches for high-confidence, high-severity issues only. For more
information about Quick Scan mode, see the Micro Focus Fortify Audit Workbench User Guide.
Note: Properties in this file are only used if you specify the -quick option on the command line for
your scan.
The table provides two sets of default values: the default value for quick scans and the default value for
normal scans. If only one default value is shown, the value is the same for both normal scans and quick
scans.
com.fortify.sca. Sets the time limit (in milliseconds) for Control Flow
CtrlflowMaxFunctionTime analysis on a single function.
Value type: Integer
com.fortify.sca. Specifies the filter set to use. You can use this property
FilterSet with an issue template to filter at scan-time instead of
post-scan. See
com.fortify.sca.ProjectTemplate described in
"fortify-sca.properties" on page 173 to specify an issue
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 205 of 210
User Guide
Appendix D: Configuration Options
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 206 of 210
User Guide
Appendix D: Configuration Options
Command-line Option:
-disable-source-bundling
com.fortify.sca. Sets the time limit (in milliseconds) for Null Pointer
NullPtrMaxFunctionTime analysis for a single function. The standard default is
five minutes. If this value is set to a shorter limit, the
overall scan time decreases.
Value type: Integer
Default: NoJSP
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 207 of 210
User Guide
Appendix D: Configuration Options
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 208 of 210
User Guide
Appendix D: Configuration Options
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 209 of 210
Send Documentation Feedback
If you have comments about this document, you can contact the documentation team by email. If an
email client is configured on this computer, click the link above and an email window opens with the
following information in the subject line:
Feedback on User Guide (Fortify Static Code Analyzer 19.1.0)
Just add your feedback to the email and click send.
If no email client is available, copy the information above to a new message in a web mail client, and send
your feedback to [email protected].
We appreciate your feedback!
Micro Focus Fortify Static Code Analyzer (19.1.0) Page 210 of 210