On Tue, 27 Dec 2011, SF Markus Elfring wrote:

But I would like to point out that the shown column values do still not fit to my expectations for SmPL behaviour. Would you like to check them again in your
application environment?

Another slightly adjusted filter pattern:

elfring@Sonne:~/Projekte/Coccinelle/lokal/demos/return_values> SRC=example1b.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@
type t;
identifier f;
position p;
@@
t@p f(...);

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

@script:python collection depends on !is_void@
typ << function_declaration.t;
fun << function_declaration.f;
places << function_declaration.p;
@@
for place in places:
   fields = []
   fields.append(fun.ident)
   fields.append(typ)
   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", "return type", "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: example1b.c
function|return type|source file|line|column
my_safe_log|int|example1b.c|1|0
my_status|int|example1b.c|2|2
my_addition|int|example1b.c|7|4

Indeed, the value in the "column" column is the leftmost column position of the token or metavariable to which the position variable is attached. Both results look like they were doing the right thing. It just depends on what answer you want.

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

Reply via email to