johnthagen / clion-cppcheck

:ballot_box_with_check: cppcheck plugin for CLion
https://plugins.jetbrains.com/plugin/8143-cppcheck/
MIT License
31 stars 6 forks source link

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

Open firewave opened 2 years ago

firewave commented 2 years ago

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.

johnthagen commented 2 years ago

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.

firewave commented 2 years ago

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 commented 2 years ago

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 commented 1 year ago

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