0

特定の属性を持つメソッド名の解析に必要なヘルプ。

ルール:
1) 最小の '[Test' で属性付けされたすべてのメソッドをリストする必要があります。
2) methodName には、名前の前にスペース文字があり、名前の最後に「(」記号があります。ほとんどの場合、Test 属性の次の行または 2 行目にあります。

サンプル 1:

[Test]
public Type methodName(parametes ...)

サンプル 2:

//[Test]
public Type methodName(parametes ...)

サンプル 3:

[Test (, some names etc)]
public Type methodName(parametes ...)

サンプル 4:

[Test (, some names etc)]
[Other optional attributes]
public Type methodName(parametes ...)

期待される結果: methodName

このRegex Match all characters between two strings のような提案をいくつか試しました。しかし、成功していません。

4

1 に答える 1

1

すべての正規表現でそれほど派手ではありませんが、サンプルケースでは機能します....

var lines = File.ReadAllLines(@"c:\temp\samples.txt");

var matched = false;
foreach (var line in lines)
{
    if(matched)
    {
        var match = Regex.Match(line, @"public");
        if(match.Length > 0)
        {
            matched = false;
            match = Regex.Match(line, @"[a-zA-Z_]+( )?(?=\()"); 
            Console.WriteLine (match.Value);
        }
    }
    else
    {
        matched = Regex.IsMatch(line, @"\[.*Test.*\]");
    }
}

または、ユニットランナーですべてのファイルを実行すると、テストのすべての名前がリストされます....

于 2013-04-16T12:33:23.797 に答える