This diagnostic rule is based on the software development guidelines developed by AUTOSAR (AUTomotive Open System ARchitecture).
The analyzer has detected a function with a non-void return type which doesn't return a value on all the paths of execution. According to the C++ standard, this can lead to undefined behavior.
Let's consider an example in which an undefined value is returned only occasionally:
BOOL IsInterestingString(char *s)
{
if (s == NULL)
return FALSE;
if (strlen(s) < 4)
return;
return (s[0] == '#') ? TRUE : FALSE;
}
There is a typo in the code. If a string length is less than 4 characters, the function will return an undefined value. Correct variant:
BOOL IsInterestingString(char *s)
{
if (s == NULL)
return FALSE;
if (strlen(s) < 4)
return FALSE;
return (s[0] == '#') ? TRUE : FALSE;
}
Note. The analyzer tries to identify the cases when the absence of the return value is not an error. Here's a code example, which will be considered safe:
int Foo()
{
...
exit(10);
}
This diagnostic is classified as:
|
Was this page helpful?
Your message has been sent. We will email you at
If you do not see the email in your inbox, please check if it is filtered to one of the following folders:
Take
a chance!