scan-build - need help


Here is my test program and I expected scan-build to detect resource leak.
But it is not detecting resource leak. Will you please let me know why this defect is not detected?

#include <stdio.h>
#include <stdlib.h>

int func (char *r)
int x = 0;
char *p = NULL;

p = malloc(100);
return (0);

Command used is “scan-build -o . --use-cc=/usr/bin/gcc-4.5 gcc -c ~/test.c”


The malloc() checker is still under development and is not on by default. Try:

$ scan-build -enable-checker experimental.unix.Malloc <build line>

I ran it on your example and it reported:

t.c:10:17: warning: Allocated memory never released. Potential memory leak.
        return (0);
t.c:9:9: warning: Value stored to 'p' is never read
        p = malloc(100);
        ^ ~~~~~~~~~~~
2 warnings generated.

Hi Ted,

Thanks for the info. Is there any documentation about the default checkers and non-default checkers and options to enable them?


Hi Suzzane,

If you run scan-build without any options, it will print a list of available checkers, including those that are not enabled by default. This does not include experimental checkers, however, which are generally considered alpha quality.

To get the full list of available checkers, do:

$ clang -cc1 -analyzer-checker-help

where the “clang” should be the clang provided with the checker builds (if that is what you are using for scan-build).