If you want feedback about the degree to which you code can be parsed, you can
use
the -parse_c option, perhaps additionally with -verbose_parsing, if you want
more information.
How do you think about a test result like the following?
elfring@Sonne:~/altes Heim/Projekte/Coccinelle/Probe> LANG=C && LINE='-----' &&
SRC=Cstdlib-test1.c && cat $SRC && echo $LINE && g++ $SRC && echo $LINE &&
P=../pattern1.cocci && cat $P && echo $LINE && spatch -sp_file $P $SRC -I
/usr/include -parse_c -verbose_parsing
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <signal.h>
sig_atomic_t termination = 0;
void action(int ID)
{
termination = 1;
}
int main(void)
{
static char const name[] = "check.txt";
char* x = (char*) malloc(123);
strcpy(x, name);
signal(SIGTERM, action);
{
FILE* c = fopen(x, "r");
{
fread(x, 1, 12, c);
printf("file: %s", name);
fclose(c);
}
realloc(x, 456);
}
fprintf(stderr, "terminated: %d", (int) termination);
return EXIT_SUCCESS;
}
-----
Cstdlib-test1.c: In function 'int main()':
Cstdlib-test1.c:30:20: warning: ignoring return value of 'void* realloc(void*,
size_t)', declared with attribute warn_unused_result [-Wunused-result]
-----
@r@
identifier f;
@@
f(...)
{
...
}
@is_void@
identifier r.f;
@@
void f(...)
{
...
}
@depends on !is_void@
identifier r.f;
identifier g;
@@
g(...)
{<+...
* f(...);
...+>}
-----
init_defs_builtins: /usr/share/coccinelle/standard.h
PARSING: Cstdlib-test1.c
-----------------------------------------------------------------------
maybe 10 most problematic tokens
-----------------------------------------------------------------------
-----------------------------------------------------------------------
NB total files = 1; perfect = 1; pbs = 0; timeout = 0; =========> 100%
nb good = 35, nb passed = 0 =========> 0.000000% passed
nb good = 35, nb bad = 0 =========> 100.000000% good
Should any more unchecked return values be detected from the shown functions
before further usage in this example?
Regards,
Markus
_______________________________________________
Cocci mailing list
[email protected]
http://lists.diku.dk/mailman/listinfo/cocci
(Web access from inside DIKUs LAN only)