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
2.0.11 (archives)
Sep 02, 2015
1.480.3
Source Code
Issue Tracking
Pull Requests
Maintainer(s)
GitHub
Open Issues
Pull Requests
Igor Kostenko (id: isanych)
Alexandru Ion (id: AlexIon)
Usage Installations 2014-Aug 150
2014-Sep 156
2014-Oct 167
2014-Nov 169
2014-Dec 154
2015-Jan 167
2015-Feb 172
2015-Mar 184
2015-Apr 199
2015-May 179
2015-Jun 211
2015-Jul 211

Originally developed by

Maintained and upgraded by

A plugin for doing static code analysis using PRQA.

This plugin was developed and maintained by Praqma up til release 1.2.2.

For later releases Praqma is no longer to the maintainer of this plugin and service and feature requests should be directed directly to Programming Research.

Programming Research Code Analysis Plugin

Features

This plugin is able to analyze configured PRQA projects. 

The plugin will allow you to configure PRQA Tool to support old analysis interface for QA·C, QA·C++ and new analysis interface using QA·Framework.

The plugin will allow you to automate the creation and analysis of PRQA enabled 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 for "QA·Framework"

Supported versions of QA·Framework
We currently support QA·Framework 1.0.5. If you encounter any issues drop us a note.

Installed Applications

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

  • QA·Framework 
  • Reprise license manager
  • QA·Verify Server (Optional)

QA·Framework 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 QA·Framework Installation Configuration. 

This is an example of a QA·Framework 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 add as many of QA·Framework as you like, and plugin allows to have multiple versions of the QA·Framework installed. A best practice is to include the QA·Framework version number (or some other identification) in the Installation Name, rather than just using 'QA·Framework'.This is because you might have multiple version of 'QA·Framework' installed on your machine, so if you need to add Installation Names for new version of the tool - it's easier to see exactly which version you want to use when configuring the job.

Automatic install
This option is to let Jenkins install QA·Framework for you on demand, to the location you configured above. If you check this option, you'll then be asked to configure a silent installer for QA·Framework.

Note: This feature is not implemented yet.

Post-build Actions
You need to add post build action to your Jenkins job if you wish to perform analysis and view the report.

Click on "Add post-build action" and select Programming Research Report 

you have two options per post-build action, either you can select QA·Frameowrk (if you are using new user interface for PRQA Solutions) or Existing PRQA Tool for old user interface.

Programming Research Report for QA·Framework

Select QA·Framework option by clicking on radio button

Setup section will allow you to select the QA·Framework installation configuration along with project specific settings. 

QA·Framework Installations:

Installation options are configured in the QA·Framework section in the global Jenkins configuration, you need to select one of the configuration (Refer - QA·Framework Setup section)
QA·Framework Project:

Enter the path to the directory containing the prqaproject.xml project file to be analyzed.
If the project file is in the top level directory of this module in the repository, then you can leave this blank.
If the project file is inside the Jenkins workspace, they you can just supply the relative path to the directory from the project root directory

QA·Framework Project creation
Prerequisite for PRQA Jenkins plugin is that your source project have prqaproject file created.

if you don't have prqa project created for your project then you can follow the below instructions.

Make your you have option to add build setup and it is above "Post-build Actions" . If this option is not available the please check your Jenkins plugin.

If your build machine is a windows machine then select "Execute Windows batch command" option or select Execute shell option.
Its possible that you are already have one of these terminals set to run your make or some other build script and if that is the case then you can use the same window to add command line options to create and configure prqaproject.

you can use command line interface for QA·Framework and perform administrative functionalities like setting debug level and license server to make sure that the tool is set and licenses are available.
crate prqaproject using --qaf-project-config subcommand and then perform sync by running build. If you have any other plugin that does build then you can use wrapper to add files and settings to prqaproject.
example: make CXX="qacli admin -P /my/proj/ -a -z 'gcc -c' --

Plugin will automatically run project analysis and produce the report.  Enabling "Generate report" option will add "Rule Compliance Report"  to build artefacts.

Cross-Module Analysis:

If you already have cross module analysis (CMA) project and you want to perform CMA analysis then you need to select "Perform Cross-Module analysis" option and specify CMA project.
If you don't have CMA project then you can use command line interface for QA·Framework tocreate CMA project (refer QA·Framework manual for project creation)

Upload result to QA·Verify:

you need to select a server configuration to be used when uploading to QA·Verify.
you can set server configurations in the Jenkins->Manage Jenkins->Configure System->PRQA Plugin Global Configuration section.

you can select default QA·Verify Config file  and VCS Config file located under "config" directory of product install directory.
if you already have these files configured to your project them you can select those file instead of selection default template.

This field is mandatory and should not be empty!
By default "Perform cross module analysis" and "Upload results to QA·Verify" options are not selection but error messages associated with text box are still visible because of known limitation to Jenkins plugin. Work around for hiding error message is to select and deselect the options.

Prerequisites for "Existing PRQA Tool"

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 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 2.0.11

  • QA·Framework 1.0.5 support
  • Fixed: Graphs not getting generated (JENKINS-22763)

Version 2.0.11

  • QA·Framework 1.0.5 support
  • Fixed: Graphs not getting generated (JENKINS-22763)

Version 2.0.9

  • QA·Framework 1.0.3 support

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
praqma praqma Delete
Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.

Add Comment