2

我有这段代码,我想用它来计算 Halstead 复杂度:

<?php
$words = explode("\n", file_get_contents('http://www.puzzlers.org/pub/wordlists/unixdict.txt'));
foreach ($words as $word) {
    $chars = str_split($word);
    sort($chars);
    $anagram[implode($chars)][] = $word;
}

$best = max(array_map('count', $anagram));
foreach ($anagram as $ana)
    if (count($ana) == $best)
        print_r($ana);
?>

我了解它是如何完成的原则(请参阅http://en.wikipedia.org/wiki/Halstead_complexity_measures ,但我不明白并且在彻底搜索后也无法找到的是:运算符,什么算作操作数?似乎没有达成一致的定义。

这是我可以遵循的一个更简单的示例(http://www.win.tue.nl/~aserebre/2IS55/2009-2010/9.pdf),但不能应用于上面的示例。

4

1 回答 1

1

据我了解,运算符是您使用的语言的所有运算符( ==+++等)和关键字(forifbreak、 )。function操作数将是每个标识符,即函数名(自写函数和内置函数)、变量名和常量。

以您的示例为例:运算
: foreach(是强制性的,as所以我不计算在内_ _ _ _[]+=if==
$wordsexplode$wordstr_split$charssort$anagramimplode$bestmaxarray_map$anacoundprint_r

注意:这个代码指标似乎不经常用于 PHP,所以我也没有找到任何用于 PHP 代码的指标的参考或示例。

于 2014-07-11T01:21:08.943 回答