1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
|
@ rule1 @
identifier C;
@@
int C(int i) {
...
if(C()) { ... }
...
+ if(UnitTest()) {
+ int c;
+ C();
+ }
}
@@
identifier TestMethod;
expression name;
statement S1,S2;
identifier rule1.C;
// if put identifier name; then cocci does not help
// to say that there is a partial match :(
@@
// int C(int i) {
// ...
// UnitTestEntry(name);
// if(TestMethod()) { ... }
// ...
// if(UnitTest()) {
// int c;
// ...
//+ c = C();
//+ Console.WriteLine("invoking test", name);
//+ c.TestMethod();
// }
// }
// int C(int i) {
// <... UnitTestEntry(...); ...>
// UnitTestEntry(name);
// if(TestMethod()) { ... }
// <... UnitTestEntry(...); ...>
// }
// or simply (does not work )
// int C(int i) {
// <...
// UnitTestEntry(name);
// if(TestMethod()) { ... }
// ...>
// }
// or
int C(int i) {
// <... UnitTestEntry(name); if(TestMethod()) { ... } ...>
// <... UnitTestEntry(...); if(...) { ... } ...>
<... S1 ...>
UnitTestEntry(name); if(TestMethod()) { ... }
<... S2 ...>
// <... UnitTestEntry(...); if(...) { ... } ...>
// <... UnitTestEntry(name); if(TestMethod()) { ... } ...>
}
@@
identifier rule1.C;
@@
struct foo C(int i) {
...
if(UnitTest()) {
struct foo c;
...
+ c = C();
+ Console.WriteLine("invoking test", name);
+ c.TestMethod();
}
}
|