# Java-Job: 111128 # Python-Job: 111124 # Includes all revisions p: Project = input; # Prepare output variables relative_list: output mean[string][int] of float; # Temporary variables cur_date: time; statement_counter := visitor { before node: Statement -> { if(node.kind == StatementKind.TRY or node.kind == StatementKind.WITH) relative_list[p.name][yearof(cur_date)] << 1; else relative_list[p.name][yearof(cur_date)] << 0; } }; visit(p, visitor { before node: CodeRepository -> { for (minus_year: int=22; minus_year >= 0; minus_year--) { cur_date = addyear(now(), -minus_year); snapshot := getsnapshot(node, cur_date); if (def(snapshot)) foreach (i: int; def(snapshot[i])) visit(snapshot[i], statement_counter); } } });