CppCheck(XML parsing) with Warning-Next-Generation plugins

565 views
Skip to first unread message

Hakan Rafik

unread,
Apr 2, 2020, 12:58:24 PM4/2/20
to Jenkins Users
I'm using the next generation plugins to represent the CppCheck warnings and errors.
But the plugins is not parsing Carriage return: 
 or Line feed: 
.
I've tried to feed the plugins with the given example (https://github.com/jenkinsci/warnings-ng-plugin/blob/master/plugin/src/test/resources/io/jenkins/plugins/analysis/warnings/cppcheck.xml) generates error and didn't produces any formatted string.

Any help in this regards is highly appreciated.

Regards,

Ullrich Hafner

unread,
Apr 2, 2020, 2:19:52 PM4/2/20
to Jenkins Users
When you don’t show error messages or log messages we cannot help. Just writing that it does not work is not enough information.

Regards,


--
You received this message because you are subscribed to the Google Groups "Jenkins Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to jenkinsci-use...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-users/4ef79c27-73bf-4062-a240-65f9b38f9341%40googlegroups.com.

Ahmed Rafiq

unread,
Apr 2, 2020, 2:45:02 PM4/2/20
to jenkins...@googlegroups.com
Thanks for your reply.
I've used the example xml from the given link, and getting error -

Started by user unknown or anonymous
Running as SYSTEM
Building in workspace /media/persistent_storage/home/jenkins-warnings/work/workspace/test
[test] $ /bin/sh -xe /tmp/jenkins918250917560153069.sh
+ echo '<?xml version="1.0" encoding="UTF-8"?>
<results version="2">
  <cppcheck version="1.52"/>
  <errors>
/tmp/jenkins918250917560153069.sh: line 7: syntax error near unexpected token `newline'
  <error id="variableScope" severity="style" msg="The scope of the variable i can be reduced" verbose="The scope of the variable i can be reduced. Warning: It can be unsafe to fix this message. Be careful. Especially when there are inner loops. Here is an example where cppcheck will write that the scope for i can be reduced:&#xa;void f(int x)&#xa;{&#xa;    int i = 0;&#xa;    if (x) {&#xa;        // its' safe to move 'int i = 0' here
<?xml version="1.0" encoding="UTF-8"?>
<results version="2">
  <cppcheck version="1.52"/>
  <errors>
  <error id="variableScope" severity="style" msg="The scope of the variable i can be reduced" verbose="The scope of the variable i can be reduced. Warning: It can be unsafe to fix this message. Be careful. Especially when there are inner loops. Here is an example where cppcheck will write that the scope for i can be reduced:&#xa;void f(int x)&#xa;{&#xa;    int i = 0;&#xa;    if (x) {&#xa;        // its safe to move int i = 0 here
Build step 'Execute shell' marked build as failure
[CPPCheck] Skipping execution of recorder since overall result is 'FAILURE'
Finished: FAILURE


Christoph Fetzer

unread,
Apr 3, 2020, 3:07:55 AM4/3/20
to Jenkins Users
For me that looks like an issue of your shell command and not of the plugin. Can you try to store the actual file to your workspace and make the plugin parse that?
For me the warnings.ng.plugin is just working in conjunction with cppcheck.

What I am doing looks like this:

The cppcheck-call:

cppcheck --xml --output-file="cppcheck-result.xml"  --library=D:\cppcheck.cfg --platform=win32A --template="{file},{line},{severity},{id},{message}" .

and the plugin-part:
      stage('Static Analysis') {
                    steps
{
                       
// call cppcheck as part of a Makefile target
                        recordIssues sourceCodeEncoding
: 'ISO-8859-1', tools: [cppCheck(pattern:'**/cppcheck-result.xml')]
                   
}
               
}


To unsubscribe from this group and stop receiving emails from it, send an email to jenkins...@googlegroups.com.

--
You received this message because you are subscribed to the Google Groups "Jenkins Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to jenkins...@googlegroups.com.

Ullrich Hafner

unread,
Apr 3, 2020, 4:14:36 AM4/3/20
to Jenkins Users

Am 03.04.2020 um 09:07 schrieb 'Christoph Fetzer' via Jenkins Users <jenkins...@googlegroups.com>:

For me that looks like an issue of your shell command and not of the plugin. 

Exactly!

[CPPCheck] Skipping execution of recorder since overall result is 'FAILURE'
Finished: FAILURE


The log indicates that my plugin does not even run since the build already failed. (You can change that behavior but I think it makes more sense to correct your build.) 

If you want to test the plugin I can recommend the plugin https://github.com/jenkinsci/file-operations-plugin
I’m using that in my testing courses to create manual integration tests that use fake input files for my warning plugin.
With this plugin you can create an example file for cppcheck in the workspace.


On Thu, Apr 2, 2020 at 8:19 PM Ullrich Hafner <ullric...@gmail.com> wrote:


Am 02.04.2020 um 13:06 schrieb Hakan Rafik <rafi...@gmail.com>:

I'm using the next generation plugins to represent the CppCheck warnings and errors. 
But the plugins is not parsing Carriage return: &#xD; or Line feed: &#xA;. 
I've tried to feed the plugins with the given example (https://github.com/jenkinsci/warnings-ng-plugin/blob/master/plugin/src/test/resources/io/jenkins/plugins/analysis/warnings/cppcheck.xml) generates error and didn't produces any formatted string.

Any help in this regards is highly appreciated. 


When you don’t show error messages or log messages we cannot help. Just writing that it does not work is not enough information.

Regards,


-- 
You received this message because you are subscribed to the Google Groups "Jenkins Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to jenkins...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-users/4ef79c27-73bf-4062-a240-65f9b38f9341%40googlegroups.com.


-- 
You received this message because you are subscribed to the Google Groups "Jenkins Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to jenkins...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-users/0A40A6D1-60D0-477B-B000-430235D6808E%40gmail.com.

-- 
You received this message because you are subscribed to the Google Groups "Jenkins Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to jenkinsci-use...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-users/a976054d-bd91-4643-96fe-927270bf5019%40googlegroups.com.

Ahmed Rafiq

unread,
Apr 3, 2020, 5:44:25 AM4/3/20
to jenkins...@googlegroups.com
Thanks for the reply.
What I've done is, put this,

echo '<?xml version="1.0" encoding="UTF-8"?>
<results version="2">
  <cppcheck version="1.52"/>
  <errors>
  <error id="variableScope" severity="style" msg="The scope of the variable 'i' can be reduced" verbose="The scope of the variable 'i' can be reduced. Warning: It can be unsafe to fix this message. Be careful. Especially when there are inner loops. Here is an example where cppcheck will write that the scope for 'i' can be reduced:&#xa;void f(int x){&#xa;    int i = 0;&#xa;    if (x) {&#xa;">
    <location file="api.c" line="498"/>
  </error>
  </errors>
</results>'

inside execute shell command, under Build. Set Tools CPPCheck and Build.
I was waiting that the &#xa; would produce new line where used. But they didn't.

Jérôme Godbout

unread,
Apr 3, 2020, 9:24:55 AM4/3/20
to jenkins...@googlegroups.com

Hi,

maybe not what you are looking for, but I do run my cppcheck with the following command (bat or sh):

 

def RunCppCheck(scriptConfig, outputXml, otherOptions = "") {

String cmd = “cppcheck --project=${scriptConfig} --xml --xml-version=2 ${otherOptions} 2> ${outputXml}”;

if(isUnix()) {

  sh(cmd);

} else {

     bat(cmd);

 }

}

 

Then I parse the output xml file like any unit tests results or you can use warning parsings regex. By the way the command line doesn’t support the gui project file (the command line into cppcheck are trash big time. They clearly added command line aside of the gui and this lead to ugly command line.

To unsubscribe from this group and stop receiving emails from it, send an email to jenkinsci-use...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-users/a976054d-bd91-4643-96fe-927270bf5019%40googlegroups.com.

Reply all
Reply to author
Forward
0 new messages