In this patch, I provide a detailed explanation for each argument constraint. This explanation is added in an extra 'note' tag, which is displayed alongside the warning. Since these new notes describe clearly the constraint, there is no need to provide the number of the argument (e.g. 'Arg3') within the warning. However, I decided to keep the name of the constraint in the warning (but this could be a subject of discussion) in order to be able to identify the different kind of constraint violations easily in a bug database (e.g. CodeChecker). Differential Revision: https://reviews.llvm.org/D101060
20 lines
674 B
C++
20 lines
674 B
C++
// RUN: %clang_analyze_cc1 %s \
|
|
// RUN: -analyzer-checker=core \
|
|
// RUN: -analyzer-checker=apiModeling.StdCLibraryFunctions \
|
|
// RUN: -analyzer-checker=alpha.unix.StdCLibraryFunctionArgs \
|
|
// RUN: -analyzer-checker=debug.StdCLibraryFunctionsTester \
|
|
// RUN: -analyzer-checker=debug.ExprInspection \
|
|
// RUN: -analyzer-config eagerly-assume=false \
|
|
// RUN: -triple i686-unknown-linux \
|
|
// RUN: -verify
|
|
|
|
void clang_analyzer_eval(int);
|
|
|
|
int __defaultparam(void *, int y = 3);
|
|
|
|
void test_arg_constraint_on_fun_with_default_param() {
|
|
__defaultparam(nullptr); // \
|
|
// expected-warning{{Function argument constraint is not satisfied}} \
|
|
// expected-note{{}}
|
|
}
|