Untitled
unknown
plain_text
11 days ago
1.5 kB
3
Indexable
import math def halstead_metrics(n1, n2, N1, N2): # Vocabulary size vocabulary_size = n1 + n2 # Program length program_length = N1 + N2 # Program volume if vocabulary_size > 0: program_volume = program_length * math.log2(vocabulary_size) else: program_volume = 0 # Avoid log2(0) error # Difficulty / Error proneness if n2 > 0: program_difficulty = (n1 / 2) * (N2 / n2) else: program_difficulty = 0 # Avoid division by zero # Program level (inverse of difficulty) if program_difficulty > 0: program_level = 1 / program_difficulty else: program_level = 0 # Avoid division by zero # Programming effort programming_effort = program_difficulty * program_volume # Programming time programming_time = programming_effort / 18 # Standard assumption # Estimated bugs program_bugs = program_volume / 3000 # Empirical constant return { "Vocabulary Size": vocabulary_size, "Program Length": program_length, "Program Volume": program_volume, "Program Difficulty": program_difficulty, "Program Level": program_level, "Programming Effort": programming_effort, "Programming Time": programming_time, "Estimated Bugs": program_bugs } # Example usage: n1, n2, N1, N2 = 10, 15, 50, 70 # Example values metrics = halstead_metrics(n1, n2, N1, N2) for key, value in metrics.items(): print(f"{key}: {value:.2f}")
Editor is loading...
Leave a Comment