polyspace-configure
(DOS/UNIX) Create Polyspace project from your build system at the DOS or UNIX command line
Syntax
Description
Note
This Polyspace® command is available in
.
Here, polyspaceroot
\polyspace\bin
is the
Polyspace installation folder, for instance, polyspaceroot
C:\Program
Files\Polyspace\R2024b
(see also Installation Folder for desktop products or Installation Folder for server products). To avoid typing
the full path to this command, add this location to the
PATH
environment variable in your operating
system.
polyspace-configure
traces your build system and creates a Polyspace project with information gathered from your build system.
Polyspace creates a project from your build system only if your build
commands or makefiles meet certain requirements. For a list of compiler and
build command requirements, including a list of compilers that Polyspace
supports, see Requirements for Project Creation from Build Systems.buildCommand
polyspace-configure [
traces your build system and uses options
] buildCommand
options
to modify the
default operation of polyspace-configure
. Specify the
modifiers before buildCommand
, otherwise they are considered
as options in the build command itself.
polyspace-configure [
creates a Polyspace project with information gathered from the JSON compilation
database file options
] -compilation-database jsonFilejsonFile
that you provide. You do not need to
specify a build command or trace your build system. For more on JSON compilation
databases, see JSON
Compilation Database.
Examples
Create Polyspace Project Using Compile Command (gcc
, cl
, etc.)
This example shows how to use a compile command to create
your Polyspace project. The simplest way to run
polyspace-configure
is to run it directly on the compile
command used to build your source code. This example uses the GCC compiler and
the compile command gcc
. GCC is a standard compiler suite
included with Linux® based systems. For Windows® based systems, MinGW can be installed to support the GCC
compiler.
First, ensure that your source code compiles without errors.
gcc myFilename.c otherFile.c
rm myFilename.o otherFile.o
Create a Polyspace project specifying a unique project name. Run
polyspace-configure
on the compile command as
previously tested.
polyspace-configure -prog myProject gcc myFilename.c otherFile.c
Open the Polyspace project in the Polyspace user interface.
If you use Visual Studio® to compile your sources, you can replace
gcc
in the above example with cl
.
You can also run polyspace-configure
on a full build of
your Visual Studio project. See Create Polyspace Projects from Visual Studio Build.
Note that polyspace-configure
creates a new Polyspace project using the sources from your compile command. It is not possible to append to an already existing Polyspace project by using the polyspace-configure
command. If you use compile options (such as -D
for gcc
), polyspace-configure
sets the equivalent Polyspace options in the project. For more details, see Algorithms.
Create Polyspace Platform Project Using Compile Command (gcc
, cl
, etc.)
This example shows how to use a compile command to create a
Polyspace Platform (Polyspace Test) project. The simplest way to run
polyspace-configure
is to run it directly on the compile
command used to build your source code. This example uses the GCC compiler and
the compile command gcc
. GCC is a standard compiler suite
included with Linux based systems. For Windows based systems, MinGW can be installed to support the GCC
compiler.
First, ensure that your source code compiles without errors.
gcc myFilename.c otherFile.c
rm myFilename.o otherFile.o
Create a Polyspace Platform project specifying a unique project name. Run polyspace-configure
on the compile command as previously tested.
polyspace-configure -output-platform-project myProject gcc myFilename.c otherFile.c
Open the Polyspace project in the Polyspace Platform user interface.
If you use Visual Studio to compile your sources, you can replace
gcc
in the above example with cl
.
You can also run polyspace-configure
on a full build of
your Visual Studio project. See Create Projects from Visual Studio in Polyspace Platform User Interface (Polyspace Test).
Create Polyspace Project from Makefile
Typically, in real applications, you do not invoke the
compiler directly to build your source code. Your build command runs several
commands, one of which is compilation. For instance, you might be running a
makefile to build your source code. This example shows how to create a
Polyspace project if you use the command make
to build your source
code.targetName
buildOptions
Create a Polyspace project specifying a unique project name. Use the
-B
or -W
option with
makefileName
make
so that all
the prerequisite targets in the makefile
are remade.
polyspace-configure -prog myProject \ make -B targetName buildOptions
Open the Polyspace project in the Polyspace user interface.
Create Polyspace Options File from JSON Compilation Database
This example shows how to create a Polyspace options file from a JSON compilation database that you generate
with the CMake build system generator. CMake generates build instructions for
the build tool you specify, such as a UNIX® Makefiles for make
or project files for
Microsoft®
Visual Studio. CMake supports the generation of a JSON compilation database only
for Makefile generators and Ninja generator. For more information, see makefile generators.
Generate a JSON compilation database for your CMake project. For an example of a Cmake project, see
where polyspaceroot
\polyspace\examples\doc_cxx\compilation_database
is your Polyspace installation folder. polyspaceroot
Navigate to the root of your project source tree. This folder contains the
file CMakeLists.txt
which CMake uses as an input to
generate build instructions. Enter these
commands:
mkdir JSON_cdb cd JSON_cdb cmake -G "Unix Makefiles" -DCMAKE_EXPORT_COMPILE_COMMANDS=1 ../
make
build tool. The command also outputs file
compile_commands.json
. This file lists the compiler
calls for every translation unit in your project. Generate a Polyspace options file from the compilation database that you generated in the previous step.
polyspace-configure -compilation-database compile_commands.json \ -output-options-file options.txt
polyspace-configure
does not trace your build.
Polyspace extracts information about your build system from the JSON
compilation database.Pass the options file to Polyspace to run an analysis, for instance:
polyspace-code-prover -options-file options.txt
Create Projects That Have Different Source Files from Same Build Trace
This example shows how to create different Polyspace projects from the same trace of your build system. You can specify which source files to include for each project.
Trace your build system without creating a Polyspace project by specifying the option
-no-project
. To ensure that all the prerequisite
targets in your makefile are remade, use the appropriate
make
build command option, for instance
-B
.
polyspace-configure -no-project make -B
polyspace-configure
stores the cache information and
the build trace in default locations inside the current folder. To store the
cache information and build trace in a different location, specify the
options -cache-path
and
-build-trace
.
Generate Polyspace projects by using the build trace information from the
previous step. Specify a project name and use the
-include-sources
or
-exclude-sources
option to select which files to
include for each project.
polyspace-configure -no-build -prog myProject \ -include-sources "glob_pattern"
glob_pattern
is a glob pattern that corresponds
to folders or files you filter in or out of your project. To ensure the
shell does not expand the glob patterns you pass to
polyspace-configure
, enclose them in double quotes.
For more information on the supported syntax for glob patterns, see Select Files for Polyspace Analysis Using Pattern Matching.
If you specified the options -build-trace
and
-cache-path
in the previous step, specify them
again.
Delete the trace file and cache folder.
rm -r polyspace_configure_cache polyspace_configure_build_trace
-build-trace
and
-cache-path
, use the paths and file names from those
options.Run Command-Line Polyspace Analysis from Makefile
This example shows how to run Polyspace analysis if you use the command make
to build your source code.
In this example, you use targetName
buildOptions
polyspace-configure
to trace your
build system but do not create a Polyspace project. Instead you create an options file that you can use to
run Polyspace analysis from command-line.
Create a Polyspace options file specifying the
-output-options-file
command. Use the
-B
or -W
option with
makefileName
make
so that all
prerequisite targets in the makefile are remade.
polyspace-configure -output-options-file\ myOptions make -B targetName buildOptions
Use the options file that you created to run a Polyspace analysis at the command line:
polyspace-code-prover -options-file myOptions
Input Arguments
buildCommand
— Command for full build of source code
string
Build command specified exactly as you use to build your source code.
The build command must perform a full build of your sources and not an incremental build. Typically, build commands such as make
are set up to only build sources that have changed since the previous build. However, polyspace-configure
requires a full build to determine which sources to add to a Polyspace project or options file. Add appropriate options to your build command to force a full build. For instance, when using a makefile, append the option -B
to make
.
Example: make -B
, make -B -W
makefileName
options
— Options for changing default operation of polyspace-configure
single option starting with -
, followed by
argument | multiple space-separated option-argument pairs
Basic Options
— Options for output and debugging
string
Option | Description |
---|---|
-prog
| Project name that appears in the Polyspace user interface. The default is
If you do not
use the option Example:
|
-author
| Name of project author. Example:
|
-output-project
| Path to Polyspace project file. The default is the file Example:
|
-output-platform-project
| Path to Polyspace Platform project file or workspace file (if you use one of the options Example: Example: For more information on Polyspace Platform projects, see:
|
-update-platform-project
| Use this option to update the build configuration of a Polyspace Platform project ( If the specified project does not exist, the command creates a new project. Example:
|
-output-options-file
| Path of analysis options file that Polyspace generates. Use this file for command-line analysis using one of these commands:
|
-allow-build-error | Option to create a Polyspace project even if an error occurs in the build process. If an error occurs, the build trace log shows the following message: polyspace-configure (polyspaceConfigure) ERROR: build command command_name fail [status=status_value] command_name
is the build command name that you use and
status_value is the non-zero
exit status or error level that indicates which error
occurred in your build process.This option can create
a useful project if your build command builds the source files
but exits with a non-zero exit status. If your source files do
not compile and the build fails, resolve your build failure
before using polyspace-configure
again.This option is ignored when you use
|
-allow-overwrite | Option to overwrite a project with the same name, if it exists. By default, |
| Option to suppress or display additional messages from
running
If you specify more than one of these options, the most verbose option is applied. Polyspace ignores these options when
you use them in combination with
|
-help | Option to display the full list of
|
-debug | Option to store debug information for use by MathWorks® technical support. This option has
been superseded by the option
|
-easy-debug
| Path of folder where Polyspace stores debug information for use by MathWorks technical support. After a |
Multiple Modules Creation Options
— Create separate output per module
string
These options are not compatible with
-compilation-database
Option | Description |
---|---|
-module | Option to create a separate analysis module for each binary that you create in a build system. What constitutes an analysis module depends on the output of the
This option is supported only in the following cases:
Note that when you create a separate options file for each binary in this way, each options file contains source files directly involved in the binary and not through shared objects. For more information, see Modularize Polyspace Analysis by Using Build Command. |
-modules-list | Option to create a separate output for each root folder you state in the text file What constitutes an analysis module depends on the output of the
This option is supported whether you create a project or options file from a build command or a JSON compilation database. |
-module-output-pattern | Option to create a separate output for each root folder captured by the regular expression
What constitutes an analysis module depends on the output of the
This option is supported whether you create a project or options file from a build command or a JSON compilation database. |
-output-options-path
| Path to folder where generated options files are saved. Use this option together with the option The options files are named after the binaries created in the build system. |
-project-root | Path to folder with respect to which root folder paths are resolved. Use this option together with the option -module-list . If you omit this option, root folder paths in the text file provided with -module-list are resolved with respect to the current working folder. |
Advanced Options
— Specify advanced configuration options
string
Option | Description |
---|---|
-compilation-database
| Path of JSON compilation database (JSON CDB) file. You
generate this file from your build system, for instance by
using the flag
You do not specify a build command when you use this option. These build systems and compilers support the generation of a JSON CDB:
This option is not compatible
with Polyspace ignores the
cache control options |
-compiler-config
| Path of compiler configuration file. The
file must be in a specific format. For guidance, see the
existing configuration files in Example:
|
-no-project | Option to trace your build system without creating a Polyspace project and save the build trace information. Use this option to save your build
trace information for a later run of
This
option is not compatible with
|
-no-build | Option to create a Polyspace project using previously saved build trace information. To use this option, you must have
the build trace information saved from an earlier run of
If
you use this option, you do not need to specify the
This option is ignored when you use
|
-no-sources | Option to create a Polyspace options file that does not contain the source file specifications. Use this option when you intend to specify the source files by other means. For instance, you can use this option when:
|
-extra-project-options
| Options that are used for subsequent Polyspace analysis. Once a Polyspace project is created, you can change some of the
default options in the project. Alternatively, you can pass
these options when tracing your build command. The flag
Specify multiple
options in a space separated list, for instance
Suppose
you have to set the option
For the list of options available, see:
If you are creating an options file instead of a Polyspace project from your build command, do not use this flag. Instead, add the extra analysis options manually in the generated options file, in a separate options file, or at the command-line when you start the analysis. |
-tmp-path
| Path of folder where temporary files are stored. |
-build-trace
| Path of file where build information is stored. The
default is
Example:
|
-log | Path of log file where the output of the
polyspace-configure command is stored.
The use of this option does not suppress the console
output. |
| Option to specify which source files
A source file is included if the file
path matches the A
source file is excluded if the file path matches the
|
| Option to print the list of source files that
Use this option to troubleshoot
the glob patterns that you pass to
|
-compiler-cache-path
| Specify a folder path where
By default, Polyspace looks for and stores compiler caches under these folder paths:
|
-no-compiler-cache | Use this option if you do not want Polyspace to cache your compiler configuration information or to use an existing cache for your compiler configuration. By default, the first time you
run |
-reset-compiler-cache-entry | Use this option to query the compiler for the current configuration and to refresh the entry in the cache file that corresponds to this configuration. Other compiler configuration entries in the cache are not updated. |
-clear-compiler-cache | Use this option to delete all compiler configurations stored in the cache file. If you also specify
a build command or |
-import-macro-definitions none | from-allowlist |
from-source-tokens | from-compiler | Typically, you do not need to specify this option. Polyspace attempts to automatically determine the best strategy to query your compiler for macro definitions in this order of priority:
If you prefer to specify macro definitions
manually, use this option with the If the macro import strategy that Polyspace uses is not the one that you expect, try specifying this option manually to troubleshoot the issue. |
-options-for-sources-delimiter
| Specify the character to use as a separator between
analysis options when Polyspace generates an options file
associated with one source file using the option
See also |
Cache Control Options
— Generate cache options for debugging
string
These options are primarily useful for debugging. Use the options if
polyspace-configure (polyspaceConfigure)
fails and
MathWorks Technical Support asks you to use the option and provide the
cached files. Starting R2020a, the option -easy-debug
provides an easier way to provide debug information. See Contact Technical Support About Issues with Running Polyspace.
Polyspace ignores these options when you use
-compilation-database
.
Option | Description |
---|---|
| Option to perform one of the following:
Typically, you cache temporary files created by your build command to debug issues in tracing the command. |
-cache-path
| Path of folder where cache information is stored. When tracing a Visual Studio build
( path is too long Example:
|
| Option to preserve or clean up cache information after
If |
Algorithms
The polyspace-configure
command creates a Polyspace project or options file from a build command such as
make
using roughly these steps:
The build command is first executed.
polyspace-configure
keeps track of the commands that run during this build and the files read or written. One or more of these commands would be the compiler invocation. For instance, if the build command uses a GCC compiler, one or more of these commands would exercise thegcc
,g++
, or related executable. Based on the presence of a known compiler executable,polyspace-configure
picks out the compiler invocation commands from amidst all the commands executed during build.Each compiler invocation command contains these three parts: the compiler executable, some source files and some compiler options. For instance, the following command exercises the GCC compiler on the file
myFile.c
with a compiler option-std
that triggers C++11-based compilation:gcc -std=c++11 myFile.c
polyspace-configure
reads the source file names from these commands and directly uses them in the Polyspace project or options file. The compiler executable and compiler options are translated to Polyspace analysis options.To determine Polyspace options such as the ones corresponding to sizes of basic types or underlying type of
size_t
,polyspace-configure
runs the previously read compiler executable plus compiler options on some small source files. Depending on whether a source file compiles successfully or shows errors,polyspace-configure
can set an appropriate Polyspace option. To determine compiler macro definitions and include paths,polyspace-configure
also reinvokes the compiler on small sources but thereafter uses a slightly different strategy.For a simple example of a source file that can help determine a Polyspace option, see the reference page for the option
Management of size_t (-size-t-type-is)
.
Instead of a build command, polyspace-configure
can also create a
project or options file from a JSON compilation database. When the
polyspace-configure
command runs on a compilation database, the
first step above is omitted. A compilation database directly states the compiler
invocation command in entries such as
this:
{ "directory": "/proj/files/ "command": "/usr/local/bin/gcc -std=c++11 -c /proj/files/myFile.c", "file" : "/proj/files/myFile.c" }
polyspace-configure
can simply read these compiler invocation commands and continue with the remaining step
of reinvoking the compiler on small source files. Since the build command execution step
is skipped, running polyspace-configure
on a compilation database is
much faster than running polyspace-configure
on a build command.
However, it is your responsibility to make sure that the compilation database you
provide accurately reflects a full build of your source code.Version History
Introduced in R2013b
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)
Asia Pacific
- Australia (English)
- India (English)
- New Zealand (English)
- 中国
- 日本Japanese (日本語)
- 한국Korean (한국어)