Main Content

Command/script to apply after the end of the code verification (-post-analysis-command)

Specify command or script to be executed after analysis

Description

Specify a command or script to be executed after the analysis.

Set Option

User interface (desktop products only): In your project configuration, the option is on the Advanced Settings node.

User interface (Polyspace Platform, desktop products only): In your project configuration, the option is on the Static Analysis tab on the Advanced node.

Command line and options file: Use the option -post-analysis-command. See Command-Line Information.

Why Use This Option

Create scripts for tasks that you want performed after the Polyspace® analysis.

For instance, you want to be notified by email that the Polyspace analysis is over. Create a script that sends an email and use this option to execute the script after the Polyspace analysis.

Settings

No Default

Enter full path to the command or script, or click to navigate to the location of the command or script. After the analysis, this script is executed.

The script is executed in the Polyspace results folder. In your script, consider the results folder as the current folder for relative paths to other files.

For a Perl script, in Windows®, specify the full path to the Perl executable followed by the full path to the script. For example, to specify a Perl script send_email.pl that sends an email once the analysis is over, enter polyspaceroot\sys\perl\win32\bin\perl.exe <absolute_path>\send_email.pl. Here, polyspaceroot is the location of the current Polyspace installation, such as C:\Program Files\Polyspace\R2019a\, and <absolute_path> is the location of the Perl script.

For example Perl scripts that send emails and other information on writing Perl scripts, see Perl documentation.

Tips

Running post analysis commands on the server

If you perform verification on a remote server, after verification, the software executes your command on the server, not on the client desktop. If your command executes a script, the script must be present on the server.

For instance, if you specify the command, /local/utils/send_mail.sh, the Shell script send_email.sh must be present on the server in /local/utils/. The software does not copy the script send_email.sh from your desktop to the server before executing the command. If the script is not present on the server, you encounter an error. Sometimes, there are multiple servers that the MATLAB® Job Scheduler can run the verification on. Place the script on each of the servers because you do not control which server eventually runs your verification.

Running post analysis commands in the Polyspace user interface

To test the use of this option, run the following Perl script from a folder containing a Polyspace project (.psprj file). The script parses the latest Polyspace log file in the folder Module_1\CP_Result and writes the current project name and date to a file report.txt. The file is saved in Module_1\CP_Result.

foreach my $file (`ls Module_1\\CP_Result\\Polyspace_*.log`) {
  open (FH, $file);

while ($line = <FH>) {
    if ($line =~ m/Ending at: (.*)/) {
      $date=$1;
    }
    if ($line =~ m/-prog=(.*)/) {
      $project=$1;
    }
  }
}

my $filename = 'report.txt';
open(my $fh, '>', $filename) or die "Could not open file '$filename' $!";

print $fh "date=$date\n";
print $fh "project=$project\n";

close $fh;

In Linux®, you can specify the Perl script for this option.

In Windows, instead of specifying the Perl script directly, specify a .bat file that invokes Perl and runs this script. For instance, the .bat file can contain the following line (assuming that the .bat file and .pl file are in the Polyspace project folder). Depending on your MATLAB installation, change the path to perl.exe appropriately.

"C:\Program Files\MATLAB\R2018b\sys\perl\win32\bin\perl.exe" command.pl

Run Code Prover. Check that the folder Module_1\CP_Result contains the file report.txt with the project name and date.

Command-Line Information

Parameter: -post-analysis-command
Value: Path to executable file or command in quotes
No Default
Example in Linux (Bug Finder): polyspace-bug-finder -sources file_name -post-analysis-command `pwd`/send_email.pl
Example in Linux (Code Prover) : polyspace-code-prover -sources file_name -post-analysis-command `pwd`/send_email.pl
Example in Linux (Bug Finder Server): polyspace-bug-finder-server -sources file_name -post-analysis-command `pwd`/send_email.pl
Example in Linux (Code Prover Server): polyspace-code-prover-server -sources file_name -post-analysis-command `pwd`/send_email.pl
Example in Windows: polyspace-bug-finder -sources file_name -post-analysis-command "C:\Program Files\MATLAB\R2015b\sys\perl\win32\bin\perl.exe" "C:\My_Scripts\send_email"

Note that in Windows, you use the full path to the Perl executable.