﻿# V3525\. AUTOSAR\. Function with a non\-void return type should return a value from all exit paths\.

This diagnostic rule is based on the software development guidelines developed by [AUTOSAR](https://www.autosar.org/) \(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:

```cpp
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:

```cpp
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:

```cpp
int Foo()
{
  ...
  exit(10);
}
```