1
Javaメソッド名を正規表現にマッチさせようとしていますが、Rascalでそれを行う方法がわかりません。私はtest
で始まる名前のメソッド(JUnit 3のテストケースなど)と一致させ、@Test
というアノテーションを付けて、test
の接頭辞を削除してJUnit 4テストケースに変換したいと考えています。次のエラーで正規表現へのメソッド名の一致
public tuple[int, CompilationUnit] refactorJUnitTestCaseDeclaration(CompilationUnit cu) {
int total = 0;
println(cu);
CompilationUnit unit = visit(cu) {
case(MethodDeclaration)`public void <Identifier name>() <MethodBody body>`: {
if(/test[A-Z]*/ := name) {
total += 1;
newName = name[4..];
insert (MethodDeclaration)`@Test public void <Identifier newName>() <MethodBody body>`;
};
}
};
return <total, unit>;
}
このコードの結果:私のコードは次のようになります
Expected str, but got Identifier
文字列としてname
メソッド識別子にアクセスするためにどのような方法がありますので、私はそれに一致するように試みることができますか?もしそうでなければ、この仕事を達成する最良の方法は何ですか?
それは素晴らしい仕事を!ありがとう! – urielSilva