В настоящее время я занимаюсь простой программой, чтобы понять уравнения, участвующие в получении различных показателей из науки о программном обеспечении Halstead. Я верю, что делаю это правильно, но мне кажется, что я не зарегистрировал все операнды и операторы, чтобы начать с математики.Проблемы, связанные с метрикой сложности Halstead
Программа Я использую это:
/*01*/ // counts how many items in sArray[] are also in tArray[]
/*02*/ int matched(int sArray[], int tArray[], int sMax, int tMax)
/*03*/ {
/*04*/ int count, i, first, middle, last;
/*05*/
/*06*/ for (i = 0; i < sMax; ++i)
/*07*/ {
/*08*/ last = tMax - 1;
/*09*/ for (int first = 0; first <= last;)
/*10*/ {
/*11*/ middle = (first + last)/2;
/*12*/ if (tArray[middle] == sArray[i])
/*13*/ {
/*14*/ count++;
/*15*/ break;
/*16*/ }
/*17*/ if (tArray[middle] < sArray[i])
/*18*/ {
/*19*/ first = middle + 1;
/*20*/ }
/*21*/ else
/*22*/ {
/*23*/ last = middle - 1;
/*24*/ }
/*25*/ }
/*26*/ }
/*27*/ return count;
/*28*/ }
И я пришел с
- n1 = число различных операторов = 10
- n2 = числом различных операнды = 9
- N1 = общее число операторов = 24
- N2 = общее количество операндов = 34
Эти заметки показывают различные операторы и операнды найдено:
Операторы
= Назначение (строка 6, 8, 9, 11, 19, 23) = 6
< Меньше (строка 6, 17) = 2
++ Инкремент (строка 6, 14) = 2
- Вычесть (строка 8, 23) = 2
< = Меньше или равно (строка 9) = 1
+ сложение (строка 11, 19) = 2
/Подразделение (строка 11) = 1
== Равно (строка 12) = 1
[] индекс (строка 2 * 2, 12 * 2, 17 * 2 = 6
break (строка 15) = 1Операнды
Количество (строка 4, 14) = 2
я (строка 4, 6 * 3, 12, 17) = 6
первой (линия 4, 9 * 2, 11, 19) = 5
средний (строки 4, 11, 12, 17, 19, 23) = 6
последний (строка 4, 8, 9, 11, 23) = 5
sArray (строка 2, 12, 17) = 3
tArray (строка 2, 12, 17) = 3
sMax (строка 2, 6) = 2
Tmax (линия 2, 8) = 2
Есть ли что-нибудь жизненно важное я пропустил? Из моего понимания:
- Операндов являются значением
- Операторов манипулируют и проверьте операнды
Пожалуйста, не указывайте номера строк в фрагментах кода. Если вы хотите обратить внимание на определенную строку, то, например, комментарий к этой строке. –
@JoachimPileborg В контексте этого вопроса более правдоподобно связать номера строк с примечаниями ниже. Не стоит ожидать, что читатель выполнит код, для тестирования программного обеспечения нужно найти количество операторов и операндов, поэтому по этому вопросу я чувствую, что он помогает читателю быстро просмотреть его легко, будь то комментарий или нет.Я не думаю, что вы читали вопрос в целом, это не имело бы никакого значения, – BIW
Я не знаю метрики, но пред-и пост-инкремент считаются одинаковыми или разными? У вас есть оба. – TripeHound