如何查找未使用return void注释的方法

时间:2012-04-04 11:01:29

标签: php regex

这适用于正则表达爱好者:)

FLOW3的Code Convention声称你应该使用@return注释不返回任何内容的方法void:

/**
 * A method
 *
 * @return void
 */

我一直忘记这一点,并且希望使用netbeans对我错过的所有方法进行regexp ...

到目前为止我得到了

\*\s[^@return]+.*(\n)\s.\*/ 

哪种方法效果不好:

/**
 * Method that gets matched.
 *
 * @param string $comment
 */
public function aMethod() {
    // Some Code
}

/**
 * A method that does not get matched and shouldn't.
 *
 * @param string $test
 * @return void
 */
public function anotherMethod($test) {
    // Some Code
}


/**
 * A variable that get's matched but should not
     * be matched.
 *
 * @var string
 */
protected $var;

/**
 * Why is this method getting matched?
 *
 * @return void
 */
private function thirdMethod() {
        // Code
    }

你会如何匹配?

这是regexp测试器中的example

1 个答案:

答案 0 :(得分:2)

负面的背后断言可能会有所帮助:

\*\s*@[a-z]+(?<!return)\s+.+\s*\*/\s*(?:public|protected|private)?\s+function

这将匹配任何没有@return作为docblock最后一行的函数。它可能有一些误报,即@return在那里但在最后一行没有,但这是一个好的开始。

请注意,这在Regex测试器中不起作用,因为JavaScript不支持lookbehind断言。 Here's an example