clion-cppcheck icon indicating copy to clipboard operation
clion-cppcheck copied to clipboard

`syntaxError` in include is hidden - leading to suspected false negative

Open firewave opened this issue 3 years ago • 4 comments

test.h

enum Type
{
	ERROR
};

struct A
{
};

test.cpp

#include "test.h"

extern void f()
{
    A a; // unusedVariable
}

In Cppcheck 2.4 the header will generate a syntaxError with the Windows version:

test.h:1:1: error: syntax error [syntaxError]
enum Type
^

This leads to the unusedVariable in function f() not being reported making it seems like a false negative since the syntaxError is being suppressed as it didn't occur in the file we are analyzing.

We need to make this error visible - possibly via a global warning about this.

There's most likely other errors which may lead to the same problem.

firewave avatar Mar 09 '22 14:03 firewave

I wonder if there is a hook to simply not run if there are syntax errors. I know that is how many people set up File Watchers in IntelliJ products.

johnthagen avatar Mar 09 '22 15:03 johnthagen

This syntax error is a bug in Cppcheck. Also Cppcheck is built to being able to handle incomplete and invalid code.

There's also cases where it could be caused by a simple misconfiguration.

I came across this while working on code and trying to figure out the "false negative" of a unused variable not being reported which turned out to be this issue in the header.

I already know how to fix it but I want to get #60 in before since it simplifies things.

firewave avatar Mar 09 '22 15:03 firewave

A preview of the fix I am currently testing:

image

I am not sure if you can put links in such in messages. Being able to directly jump to the file/line in question would be awesome.

firewave avatar Mar 14 '22 13:03 firewave

Note: A potential fix for https://trac.cppcheck.net/ticket/11913 might affect this.

firewave avatar Sep 04 '23 10:09 firewave