PRQA Plugin

Skip to end of metadata
Go to start of metadata

Plugin Information

Plugin ID prqa-plugin Changes In Latest Release
Since Latest Release
Latest Release
Latest Release Date
Required Core
Dependencies
1.2.2
Oct 21, 2013
1.480.3
Source Code
Issue Tracking
Maintainer(s)
GitHub
Open Issues
Jes Struck (id: jstruck)
Mads Nielsen (id: MadsNielsen)
Usage Installations 2013-Apr 82
2013-May 100
2013-Jun 92
2013-Jul 95
2013-Aug 97
2013-Sep 111
2013-Oct 113
2013-Nov 122
2013-Dec 122
2014-Jan 124
2014-Feb 130
2014-Mar 139

Developed by

Sponsored by

A plugin for doing static code analysis using PRQA.

If you use this plugin - please share your current usage of it - and read what others have achieved:

Share your usage of this plugin.

Programming Research Code Analysis Plugin

Features

This plugin is able to analyze configured PRQA projects. 

The plugin will allow you to automate the creation and analysis of PRQA enabled C and C++ projects, present the overall analysis, and enable you to perform the analysis as a part of your continuous integration strategy.

The plugin will display a graphical history depicting the number of messages, and overall compliance levels in your project. 

As of version 1.1.0 we can now also upload projects to QA·Verify Server. 

Download

Download the latest version manually HERE or alternatively, use the Jenkins CI Update Center.

Prerequisites

Supported versions of QA·C and QA·C++
We currently support QA·C 6.0 upwards and QA·C++ 2.0 upwards. If you encounter any issues drop us a note.

Installed Applications

Prior to installing and using this plugin the user must ensure that the the following PRQA applications are installed:

  • QA·C and/or QA·C++
  • QAW
  • QAR
  • QA·Verify Client (Optional)

QAW and QAR can be downloaded from the Programming Research website using the following links:
QAW for Linux and Solaris
QAW for Windows
QAR for Linux
QAR for Solaris
QAR for Windows

Environment

A bit more about the tools
If you use the default products in the setup page like this (either QA·C or QA·C++) the requirements for the enviroment applies. 

Otherwise if you use your configured tool the plugin will create this environment for you.

Variables will be set as follows is you define your own PRQA product:

  • QAC(PP)PATH - 'Product installation path' from tool config
  • QAC(PP)BIN - 'Product installation path' from tool config + bin 
  • QAC(PP)OUTPATH - workspace
  • QAC(PP)TEMP - '%TEMP%' on Windows '/tmp' on Unix (When running tomcat this get sets to tomcats temp dir)
  • QAW and QAR bin directories are added to the path - the bin part is automatically appended to the values entered in the product configuration.

The following programs must on the path on the machine who hosts the job.

  • qaw
  • qar
  • qac
  • qacpp
  • qaimport (Optional - If you want to use the QA Verify upload feature)
  • upload (Optional - If you want to use the QA Verify upload feature)

Note: When the plugin runs a program it will call it with just it's name, for example to run QA·C it will run 'qac'. This can cause a problem on Windows where the executable is called 'qac.exe' and there is a shortcut in the same directory (or earlier in the %PATH%) called 'qac.lnk'. Under the Windows command shell rules, 'qac.lnk' will be run before 'qac.exe' when the command 'qac' is given. Rename the shortcut if this happens.

It is also required that QA·C and QA·C++ have the following environment variables set: 

For QA·C

  • QACPATH
  • QACBIN
  • QACOUTPATH
  • QACHELPFILES
  • QACTEMP

For QA·C++

  • QACPPPATH
  • QACPPBIN
  • QACPPOUTPATH
  • QACPPHELPFILES
  • QACPPTEMP

The environment for QA·C and QA·C++ can be setup using a batch file or shell script supplied with the tools in their bin directories. Thus the following commands can be used to setup the environment:

Windows:
c:\PRQA\QAC-8.1.1-R\bin\qacconf.bat
set PATH=C:\PRQA\QAW-2.3.2\bin;C:\PRQA\QAR-2.1\bin;C:\PRQA\QAVerify-1.4\Client;%PATH%

Linux:
. /var/opt/prqa/.profile
PATH=/var/opt/prqa/QAW-2.3.2/bin:/var/opt/prqa/QAR-2.1/bin:/var/opt/prqa/QAVerify-1.4/client:$PATH

These settings must exist in the environment that the slave runs in, though how they are set depends on how the slaves are launched. The simplest solution is to add the required settings to the system environment. Alternatively they could put into the startup or login script for the user that runs the Jenkins slave.jar file.

Setup

If you wish you can use the plugin to setup the environment for you. You do that by going from 'Manage jenkins' -> 'Configure System'. You should see an option to add a PRQA Product Configuration. 

This is an example of a PRQA Product Configuration, where we have entered the default installation directories. The plugin will automatically expand locations and add the necessary bin folders to your path.
You can configure as many of those as you like, and it allows to have multiple versions of the same tool installed. 

It is best to include the product version number (or some other identification) in the Installation Name, rather than just using 'QAC' or 'QAC++'. This is partly because there are default tool entries of 'QA·C' and 'QA·C++' on the job configuration page which it's easy to get confused with (these entries are form the original version of the plugin and have been retained for compatibility). The other reason is if you need to add Installation Names for new version of the tool - it's easier to see exactly which one you want when configuring the job.

Automatic install
You shouldn't check the 'Install automatically' button. Currently there exists no installers for the tool. Just add it, and it will be available as a option to select for your configured jobs. Look like this:

Report generation

The analysis is configured to run as a post-build step. 

Setting it up you have two choices:

  1. You can generate a report from a project file 
  2. You can generate a report from a file list, and an optional settings file.

When you select file list no primary analysis is done, and we assume that the files have been analyzed beforehand. Selecting a Project file as report source will run primary analysis. The configuration looks like this:

The values for all the fields you're required to enter can either be absolute, or relative to the workspace.

The Project file should have been saved with relative paths (on Windows) or using environment variables (on Windows or Linux). This ensures that project correctly refers to all the files within it wherever it is checked out. The typical exception to this is the Compiler Personality, which usually has an absolute path since it is specific to the machine. It is assumed that all slaves are identical, so the path to the PRQA Project file in the plugin settings can be absolute, as the project will always be built in the same path location, whatever slave it is built on.

You have the option to use several advanced analysis options, including CMA, dependency based analysis, and dataflow analysis.


The first set of checkboxes are self explanatory, do you wish to create additional reports alongside the Compliance report?

The 'Add threshold' button is used to add thresholds to build stability. We currently have 3 kinds. Messages, File Compliance and Project Compliance.  

only have messages between the level 5 and 9 count towards the total.

The configuration section for each threshold has 2 values. 

  • First value, is the target value. For the project and file compliance this is a percentage, everything above and equal to this value will be considered stable. For messages, it is number of messages withing threshold. 
  • Second value, the checkbox 'continous improvement', will assume that the new value is greater or equal to the previous stable for the file compliance and project compliance. For messages, the opposite holds true.   

A build will never be marked as 'Failed' when doing the comparison, only configuration errors or analysis errors will mark the build as Failed.
If a build does not live up to the expected standards, it will be marked Unstable. This holds true if just one of the requirements are not met.

The plugin will default to 'None' in the initial configuration. 

QA·Verify upload

As of version 1.1.0 we support uploading of projects to QA·Verify servers. 

QA·Verify Upload
We currently require an already existing QA·Verify Project prior to uploading with the plugin.

In order for that to work, you'll need to configure a QA·Verify server instance, this is done in the Jenkins Global Configuration pages. The section you should look out for looks like this:

Look for PRQA Plugin Global Configuration

Press Add and type in the correct credentials for your QA·Verify Server user.

Now you're ready to configure your PRQA enabled Jenkins job to use this server. 

On you job configuration page, checking 'Upload to QA·Verify' will expand into the following:

The fields here should be self explanatory. It enables you to select the VCS Configuration file, whether all code should be uploaded, and where the source origin is located.

The source origin will default to the current workspace if nothing is specified, and is used on the QA·Verify server to specify the top level of the source directory structure. It is used to remove the leading parts of pathnames, so the paths to files (in the Web Message Browser for example) are shown from the project root only. .

Plugin output

Watch online demo
PRQA-Plugin demo

The plugin will create graphs showing the current number of messages and the current project compliance levels. The Jobs project pages (Front page will display something like this)

  • Will show historical depiction of your overall compliance history
  • Will create a link to the QA·Verify server that was used in upload. 
  • Will have relevant build artifacts in artifacts list, for easy access to generated reports and logs


Advanced Logging

We highly recommend installing the newly developed Logging Plugin developed and made public by Praqma. 

This allows consolidated logging, which basically means that any output from the built in java logger ends up on the master. We have added a lot of tracing statements through the plugin components, which will allow us to quickly locate and fix eventual future discovered defects.

Requirements
In order to fully utilize this we recommend updating your master/slaves to use the latest version (1.483 as at the time of this writing) with the following settings. Remember to update both your master and slaves to this version. It will not work with earlier versions of the Jenkins core. 

Put this in your job configuration: 

The logging plugin will be available for installation through the Jenkins Update Center.

Known Issues

  • When creating or modifying the global configuration pages, you should hit 'Apply' before you press 'Save'. Otherwise changes won't be saved to disk.

Release notes

Changelog

Version 1.2.2

  • Fixed: Graph should use messages within current selected threshold (JENKINS-20045)

Version 1.2.1

  • Fixed: Graph incorrectly scales to max number of messages (JENKINS-18018)
  • Improved the behaviour of the plugin. New way to add thresholds.

Version 1.2

  • Implemented File list as a report source. (JENKINS-17283)
  • Tool installations, you can now configure multiple versions of PRQA tools for use. (JENKINS-17282)
  • Better threshold handling. (JENKINS-15905)

Version 1.1.3

  • Fixed a small issue with missing CMA in upload part. 

Version 1.1.2

  • Fixed an error introduced in 1.1.1 which caused analysis without CMA option to fail.

Version 1.1.1

Version 1.1.0

Version 1.0.5

  • Fixed an issue with incorrect permissions for logger in JENKINS-14802

Version 1.0.4

  • Fixed layout issues with the new publishers as a dropdown list feature in JENKINS-13786

Version 1.0.3

Version 1.0.2

  • Fixed a critical issue that would cause Jenkins clients to violently exiting and terminate underlying jvm: JENKINS-13761 
  • Fixed various spelling issues in GUI: JENKINS-13777
  • Updated Programming Research Icon: JENKINS-13778

Version 1.0.1

  • Fixed various cosmetic issues and corrected a few spelling mistakes.
  • Fixed logic error in Max Messages comparison
  • Changed it so that threshold values are now stored on a per-build basis.
  • Changed fields to default to 0.
  • Removed Java from the list of supported products.
  • Made project link graphs slightly bigger than before.

Version 1.0

  • First official Jenkins release.
  • Shows threshold graphs.
  • Fixed bug where quick consecutive builds would lock workspace files.

Labels

Edit
plugin-notifier plugin-notifier Delete
plugin-report plugin-report Delete
prqa-plugin prqa-plugin Delete
Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.

Add Comment