Home Manual Reference Source Test Repository

src/module/report/averages/HalsteadAverage.js

/**
 * Provides all the averaged Halstead metric data.
 * @see https://en.wikipedia.org/wiki/Halstead_complexity_measures
 */
export default class HalsteadAverage
{
   /**
    * Initializes the default Halstead data.
    */
   constructor()
   {
      /**
       * Measures an estimate for the number of potential errors.
       * @type {number}
       */
      this.bugs = 0;

      /**
       * Measures the difficulty of the program to write or understand.
       * @type {number}
       */
      this.difficulty = 0;

      /**
       * Measures the maintenance effort of the program.
       * @type {number}
       */
      this.effort = 0;

      /**
       * Defines the number of operands and operators.
       * @type {number}
       */
      this.length = 0;

      /**
       * Measures potential coding time.
       * @type {number}
       */
      this.time = 0;

      /**
       * Defines the unique number of operands and operators.
       * @type {number}
       */
      this.vocabulary = 0;

      /**
       * Measures how much information a reader of the code potential has to absorb to understand its meaning.
       * @type {number}
       */
      this.volume = 0;

      /**
       * In general an operand participates in actions associated with operators. A distinct and total count of
       * identifiers.
       * @type {{distinct: number, total: number}}
       */
      this.operands = { distinct: 0, total: 0 };

      /**
       * In general an operator carries out an action. A distinct and total count of identifiers.
       * @type {{distinct: number, total: number}}
       */
      this.operators = { distinct: 0, total: 0 };
   }
}