Please make a smaller example. In your example try to delete everything that you
can without changing what you consider to be the undesirableness of the result.

Is the following approach for a source code analysis better for a simple test and illustration?


elfring@Sonne:~/Projekte/Coccinelle/lokal/demos/return_values> SRC=example1.c && cat $SRC && LINE='-----' && echo $LINE && PAT=select_non_void_functions.cocci && cat $PAT && echo $LINE && spatch -sp_file $PAT $SRC
int my_safe_log(char const * text);
  int my_status(void);

void my_log(char const * text)
{
  /* Write something ... */
}

int my_safe_log(char const * text)
{
  if (!text)
    return 1;

  my_log(text);
  return 0;
}

char const * const my_message(void)
{
  return "Surprise!";
}

int my_status(void)
{
  return 1;
}

    int my_addition(char a, char b);

int my_addition(char a, char b)
{
  return a + b;
}

int main(void)
{
  return my_status();
}
-----
@initialize:python@
result = []
delimiter = '|'

@function_declaration@
identifier f;
position p;
@@
 f@p(...);

@is_void@
identifier function_declaration.f;
@@
 void f(...);

@script:python collection depends on !is_void@
fun << function_declaration.f;
places << function_declaration.p;
@@
for place in places:
    fields = []
    fields.append(fun.ident)
    fields.append("declaration")
    fields.append(place.file)
    fields.append(place.line)
    fields.append(place.column)
    result.append(delimiter.join(fields))

@finalize:python@
if result:
result.insert(0, delimiter.join(["function", "action", "source file", "line", "column"]))
   print("\r\n".join(result))
else:
   print("No result for this analysis!")
-----
init_defs_builtins: /usr/share/coccinelle/standard.h
HANDLING: example1.c
function|action|source file|line|column
my_log|declaration|example1.c|14|2


I would expect that the functions "my_safe_log", "my_status" and "my_addition" will be displayed together with their attributes in the test result.

Would you like to suggest any more adjustments?

Regards,
Markus
_______________________________________________
Cocci mailing list
[email protected]
http://lists.diku.dk/mailman/listinfo/cocci
(Web access from inside DIKUs LAN only)

Reply via email to