Global Metrics

path: .metrics.nom.functions
old: 1.0
new: 6.0

path: .metrics.nom.total
old: 1.0
new: 6.0

path: .metrics.mi.mi_sei
old: 65.72497387111622
new: 46.27784756621326

path: .metrics.mi.mi_original
old: 75.2118604309625
new: 60.64198186909162

path: .metrics.mi.mi_visual_studio
old: 43.98354411167398
new: 35.46314729186645

path: .metrics.nargs.sum
old: 0.0
new: 4.0

path: .metrics.nargs.average
old: 0.0
new: 0.6666666666666666

path: .metrics.loc.blank
old: 14.0
new: 10.0

path: .metrics.loc.cloc
old: 10.0
new: 16.0

path: .metrics.loc.sloc
old: 49.0
new: 73.0

path: .metrics.loc.lloc
old: 0.0
new: 12.0

path: .metrics.loc.ploc
old: 25.0
new: 47.0

path: .metrics.nexits.sum
old: 0.0
new: 4.0

path: .metrics.nexits.average
old: 0.0
new: 0.6666666666666666

path: .metrics.cyclomatic.average
old: 1.0
new: 1.4444444444444444

path: .metrics.cyclomatic.sum
old: 7.0
new: 13.0

path: .metrics.halstead.difficulty
old: 8.5
new: 29.78205128205128

path: .metrics.halstead.bugs
old: 0.07512906913006362
new: 0.41082525525871766

path: .metrics.halstead.estimated_program_length
old: 153.0586500259616
new: 310.172611524939

path: .metrics.halstead.level
old: 0.1176470588235294
new: 0.03357727077055532

path: .metrics.halstead.purity_ratio
old: 1.987774675661839
new: 1.2711992275612254

path: .metrics.halstead.vocabulary
old: 36.0
new: 62.0

path: .metrics.halstead.n2
old: 24.0
new: 39.0

path: .metrics.halstead.volume
old: 398.08422511105806
new: 1452.8238997343974

path: .metrics.halstead.N1
old: 43.0
new: 143.0

path: .metrics.halstead.n1
old: 12.0
new: 23.0

path: .metrics.halstead.effort
old: 3383.7159134439935
new: 43268.07588567955

path: .metrics.halstead.time
old: 187.9842174135552
new: 2403.781993648864

path: .metrics.halstead.length
old: 77.0
new: 244.0

path: .metrics.halstead.N2
old: 34.0
new: 101.0

path: .metrics.cognitive.average
old: 0.0
new: 1.6666666666666667

path: .metrics.cognitive.sum
old: 0.0
new: 10.0

Spaces Data

Minimal test - lines (43, 46)

path: .spaces[0].spaces[0].spaces[2].metrics.cyclomatic.sum
old: 2.0
new: 1.0

path: .spaces[0].spaces[0].spaces[2].metrics.nargs.sum
old: 0.0
new: 1.0

path: .spaces[0].spaces[0].spaces[2].metrics.nargs.average
old: 0.0
new: 1.0

path: .spaces[0].spaces[0].spaces[2].metrics.nexits.average
old: 0.0
new: 1.0

path: .spaces[0].spaces[0].spaces[2].metrics.nexits.sum
old: 0.0
new: 1.0

path: .spaces[0].spaces[0].spaces[2].metrics.mi.mi_sei
old: 69.92533498063543
new: 108.99357265873246

path: .spaces[0].spaces[0].spaces[2].metrics.mi.mi_visual_studio
old: 52.51320461547946
new: 74.82446992007843

path: .spaces[0].spaces[0].spaces[2].metrics.mi.mi_original
old: 89.79757989246988
new: 127.9498435633341

path: .spaces[0].spaces[0].spaces[2].metrics.halstead.effort
old: 2603.2997875211877
new: 175.66316253533665

path: .spaces[0].spaces[0].spaces[2].metrics.halstead.level
old: 0.12179487179487178
new: 0.2857142857142857

path: .spaces[0].spaces[0].spaces[2].metrics.halstead.bugs
old: 0.06308046226130687
new: 0.010455204778755302

path: .spaces[0].spaces[0].spaces[2].metrics.halstead.N1
old: 38.0
new: 7.0

path: .spaces[0].spaces[0].spaces[2].metrics.halstead.length
old: 64.0
new: 14.0

path: .spaces[0].spaces[0].spaces[2].metrics.halstead.time
old: 144.6277659733993
new: 9.75906458529648

path: .spaces[0].spaces[0].spaces[2].metrics.halstead.n1
old: 12.0
new: 6.0

path: .spaces[0].spaces[0].spaces[2].metrics.halstead.n2
old: 19.0
new: 6.0

path: .spaces[0].spaces[0].spaces[2].metrics.halstead.vocabulary
old: 31.0
new: 12.0

path: .spaces[0].spaces[0].spaces[2].metrics.halstead.N2
old: 26.0
new: 7.0

path: .spaces[0].spaces[0].spaces[2].metrics.halstead.difficulty
old: 8.210526315789474
new: 3.5

path: .spaces[0].spaces[0].spaces[2].metrics.halstead.estimated_program_length
old: 123.730172764082
new: 31.019550008653873

path: .spaces[0].spaces[0].spaces[2].metrics.halstead.purity_ratio
old: 1.9332839494387812
new: 2.2156821434752767

path: .spaces[0].spaces[0].spaces[2].metrics.halstead.volume
old: 317.06856386476
new: 50.18947501009619

path: .spaces[0].spaces[0].spaces[2].metrics.loc.lloc
old: 0.0
new: 1.0

path: .spaces[0].spaces[0].spaces[2].metrics.loc.ploc
old: 14.0
new: 4.0

path: .spaces[0].spaces[0].spaces[2].metrics.loc.sloc
old: 23.0
new: 4.0

path: .spaces[0].spaces[0].spaces[2].metrics.loc.cloc
old: 1.0
new: 0.0

path: .spaces[0].spaces[0].spaces[2].metrics.loc.blank
old: 8.0
new: 0.0

Code

  ATTRIBUTE_NO_SANITIZE_ALL
  inline bool AddValueModPrime(uintptr_t Value) {
    return AddValue(Value % kMapPrimeMod);
  }

Minimal test - lines (32, 41)

path: .spaces[0].spaces[0].spaces[1].metrics.halstead.effort
old: 0.0
new: 3000.645538008283

path: .spaces[0].spaces[0].spaces[1].metrics.halstead.N2
old: 1.0
new: 25.0

path: .spaces[0].spaces[0].spaces[1].metrics.halstead.length
old: 1.0
new: 56.0

path: .spaces[0].spaces[0].spaces[1].metrics.halstead.volume
old: 0.0
new: 260.05594662738457

path: .spaces[0].spaces[0].spaces[1].metrics.halstead.vocabulary
old: 1.0
new: 25.0

path: .spaces[0].spaces[0].spaces[1].metrics.halstead.n2
old: 1.0
new: 13.0

path: .spaces[0].spaces[0].spaces[1].metrics.halstead.difficulty
old: 0.0
new: 11.538461538461538

path: .spaces[0].spaces[0].spaces[1].metrics.halstead.n1
old: 0.0
new: 12.0

path: .spaces[0].spaces[0].spaces[1].metrics.halstead.N1
old: 0.0
new: 31.0

path: .spaces[0].spaces[0].spaces[1].metrics.halstead.level
old: null
new: 0.08666666666666667

path: .spaces[0].spaces[0].spaces[1].metrics.halstead.time
old: 0.0
new: 166.70252988934908

path: .spaces[0].spaces[0].spaces[1].metrics.halstead.bugs
old: 0.0
new: 0.06934607354629772

path: .spaces[0].spaces[0].spaces[1].metrics.halstead.estimated_program_length
old: null
new: 91.12526634448808

path: .spaces[0].spaces[0].spaces[1].metrics.halstead.purity_ratio
old: null
new: 1.6272368990087156

path: .spaces[0].spaces[0].spaces[1].metrics.nom.total
old: 0.0
new: 1.0

path: .spaces[0].spaces[0].spaces[1].metrics.nom.functions
old: 0.0
new: 1.0

path: .spaces[0].spaces[0].spaces[1].metrics.mi.mi_sei
old: null
new: 75.23683813029392

path: .spaces[0].spaces[0].spaces[1].metrics.mi.mi_original
old: null
new: 104.55145820003636

path: .spaces[0].spaces[0].spaces[1].metrics.mi.mi_visual_studio
old: null
new: 61.141203625752254

path: .spaces[0].spaces[0].spaces[1].metrics.nargs.average
old: null
new: 1.0

path: .spaces[0].spaces[0].spaces[1].metrics.nargs.sum
old: 0.0
new: 1.0

path: .spaces[0].spaces[0].spaces[1].metrics.nexits.sum
old: 0.0
new: 1.0

path: .spaces[0].spaces[0].spaces[1].metrics.nexits.average
old: null
new: 1.0

path: .spaces[0].spaces[0].spaces[1].metrics.cognitive.average
old: null
new: 0.0

path: .spaces[0].spaces[0].spaces[1].metrics.loc.lloc
old: 0.0
new: 2.0

path: .spaces[0].spaces[0].spaces[1].metrics.loc.sloc
old: 1.0
new: 10.0

path: .spaces[0].spaces[0].spaces[1].metrics.loc.ploc
old: 1.0
new: 10.0

Code

  ATTRIBUTE_NO_SANITIZE_ALL
  inline bool AddValue(uintptr_t Value) {
    uintptr_t Idx = Value % kMapSizeInBits;
    uintptr_t WordIdx = Idx / kBitsInWord;
    uintptr_t BitIdx = Idx % kBitsInWord;
    uintptr_t Old = Map[WordIdx];
    uintptr_t New = Old | (1ULL << BitIdx);
    Map[WordIdx] = New;
    return New != Old;
  }

Minimal test - lines (20, 69)

path: .spaces[0].spaces[0].metrics.nargs.average
old: 0.0
new: 0.6666666666666666

path: .spaces[0].spaces[0].metrics.nargs.sum
old: 0.0
new: 4.0

path: .spaces[0].spaces[0].metrics.nom.total
old: 1.0
new: 6.0

path: .spaces[0].spaces[0].metrics.nom.functions
old: 1.0
new: 6.0

path: .spaces[0].spaces[0].metrics.cognitive.sum
old: 0.0
new: 10.0

path: .spaces[0].spaces[0].metrics.cognitive.average
old: 0.0
new: 1.6666666666666667

path: .spaces[0].spaces[0].metrics.cyclomatic.sum
old: 5.0
new: 11.0

path: .spaces[0].spaces[0].metrics.cyclomatic.average
old: 1.0
new: 1.5714285714285714

path: .spaces[0].spaces[0].metrics.mi.mi_sei
old: 59.27265730407104
new: 43.907379121650706

path: .spaces[0].spaces[0].metrics.mi.mi_visual_studio
old: 48.93824256261314
new: 39.42981741614884

path: .spaces[0].spaces[0].metrics.mi.mi_original
old: 83.68439478206847
new: 67.42498778161452

path: .spaces[0].spaces[0].metrics.halstead.time
old: 171.58333333333331
new: 2410.1497230432497

path: .spaces[0].spaces[0].metrics.halstead.effort
old: 3088.4999999999995
new: 43382.695014778496

path: .spaces[0].spaces[0].metrics.halstead.N2
old: 29.0
new: 97.0

path: .spaces[0].spaces[0].metrics.halstead.length
old: 71.0
new: 238.0

path: .spaces[0].spaces[0].metrics.halstead.bugs
old: 0.07069311994181326
new: 0.41155046534398654

path: .spaces[0].spaces[0].metrics.halstead.difficulty
old: 8.7
new: 30.98611111111111

path: .spaces[0].spaces[0].metrics.halstead.N1
old: 42.0
new: 141.0

path: .spaces[0].spaces[0].metrics.halstead.n2
old: 20.0
new: 36.0

path: .spaces[0].spaces[0].metrics.halstead.vocabulary
old: 32.0
new: 59.0

path: .spaces[0].spaces[0].metrics.halstead.purity_ratio
old: 1.823353688822551
new: 1.2191564077362795

path: .spaces[0].spaces[0].metrics.halstead.n1
old: 12.0
new: 23.0

path: .spaces[0].spaces[0].metrics.halstead.estimated_program_length
old: 129.45811190640111
new: 290.15922504123455

path: .spaces[0].spaces[0].metrics.halstead.level
old: 0.1149425287356322
new: 0.03227252353204841

path: .spaces[0].spaces[0].metrics.halstead.volume
old: 355.0
new: 1400.0690457481182

path: .spaces[0].spaces[0].metrics.loc.lloc
old: 0.0
new: 12.0

path: .spaces[0].spaces[0].metrics.loc.ploc
old: 18.0
new: 40.0

path: .spaces[0].spaces[0].metrics.loc.blank
old: 12.0
new: 6.0

path: .spaces[0].spaces[0].metrics.loc.sloc
old: 31.0
new: 50.0

path: .spaces[0].spaces[0].metrics.loc.cloc
old: 1.0
new: 4.0

path: .spaces[0].spaces[0].metrics.nexits.average
old: 0.0
new: 0.6666666666666666

path: .spaces[0].spaces[0].metrics.nexits.sum
old: 0.0
new: 4.0

Code

struct ValueBitMap {
  static const size_t kMapSizeInBits = 1 << 16;
  static const size_t kMapPrimeMod = 65371;  // Largest Prime < kMapSizeInBits;
  static const size_t kBitsInWord = (sizeof(uintptr_t) * 8);
  static const size_t kMapSizeInWords = kMapSizeInBits / kBitsInWord;
 public:

  // Clears all bits.
  void Reset() { memset(Map, 0, sizeof(Map)); }

  // Computes a hash function of Value and sets the corresponding bit.
  // Returns true if the bit was changed from 0 to 1.
  ATTRIBUTE_NO_SANITIZE_ALL
  inline bool AddValue(uintptr_t Value) {
    uintptr_t Idx = Value % kMapSizeInBits;
    uintptr_t WordIdx = Idx / kBitsInWord;
    uintptr_t BitIdx = Idx % kBitsInWord;
    uintptr_t Old = Map[WordIdx];
    uintptr_t New = Old | (1ULL << BitIdx);
    Map[WordIdx] = New;
    return New != Old;
  }

  ATTRIBUTE_NO_SANITIZE_ALL
  inline bool AddValueModPrime(uintptr_t Value) {
    return AddValue(Value % kMapPrimeMod);
  }

  inline bool Get(uintptr_t Idx) {
    assert(Idx < kMapSizeInBits);
    uintptr_t WordIdx = Idx / kBitsInWord;
    uintptr_t BitIdx = Idx % kBitsInWord;
    return Map[WordIdx] & (1ULL << BitIdx);
  }

  size_t SizeInBits() const { return kMapSizeInBits; }

  template 
  ATTRIBUTE_NO_SANITIZE_ALL
  void ForEach(Callback CB) const {
    for (size_t i = 0; i < kMapSizeInWords; i++)
      if (uintptr_t M = Map[i])
        for (size_t j = 0; j < sizeof(M) * 8; j++)
          if (M & ((uintptr_t)1 << j))
            CB(i * sizeof(M) * 8 + j);
  }

 private:
  ATTRIBUTE_ALIGNED(512) uintptr_t Map[kMapSizeInWords];
};

Minimal test - lines (17, 71)

path: .spaces[0].metrics.halstead.level
old: 0.11666666666666668
new: 0.032830523513753325

path: .spaces[0].metrics.halstead.bugs
old: 0.0717247097455097
new: 0.4114125350186326

path: .spaces[0].metrics.halstead.N2
old: 30.0
new: 98.0

path: .spaces[0].metrics.halstead.estimated_program_length
old: 135.25821588700785
new: 296.79169951758246

path: .spaces[0].metrics.halstead.difficulty
old: 8.571428571428571
new: 30.45945945945946

path: .spaces[0].metrics.halstead.volume
old: 368.2407707131671
new: 1423.560633541653

path: .spaces[0].metrics.halstead.n1
old: 12.0
new: 23.0

path: .spaces[0].metrics.halstead.time
old: 175.35274795865098
new: 2408.938189191356

path: .spaces[0].metrics.halstead.effort
old: 3156.3494632557176
new: 43360.8874054444

path: .spaces[0].metrics.halstead.n2
old: 21.0
new: 37.0

path: .spaces[0].metrics.halstead.purity_ratio
old: 1.8528522724247651
new: 1.2315008278737862

path: .spaces[0].metrics.halstead.N1
old: 43.0
new: 143.0

path: .spaces[0].metrics.halstead.length
old: 73.0
new: 241.0

path: .spaces[0].metrics.halstead.vocabulary
old: 33.0
new: 60.0

path: .spaces[0].metrics.nom.total
old: 1.0
new: 6.0

path: .spaces[0].metrics.nom.functions
old: 1.0
new: 6.0

path: .spaces[0].metrics.nexits.average
old: 0.0
new: 0.6666666666666666

path: .spaces[0].metrics.nexits.sum
old: 0.0
new: 4.0

path: .spaces[0].metrics.cognitive.average
old: 0.0
new: 1.6666666666666667

path: .spaces[0].metrics.cognitive.sum
old: 0.0
new: 10.0

path: .spaces[0].metrics.cyclomatic.average
old: 1.0
new: 1.5

path: .spaces[0].metrics.cyclomatic.sum
old: 6.0
new: 12.0

path: .spaces[0].metrics.loc.blank
old: 11.0
new: 8.0

path: .spaces[0].metrics.loc.lloc
old: 0.0
new: 12.0

path: .spaces[0].metrics.loc.sloc
old: 33.0
new: 55.0

path: .spaces[0].metrics.loc.ploc
old: 20.0
new: 42.0

path: .spaces[0].metrics.loc.cloc
old: 2.0
new: 5.0

path: .spaces[0].metrics.mi.mi_original
old: 82.25114514339343
new: 65.56443659662736

path: .spaces[0].metrics.mi.mi_sei
old: 62.18370371527456
new: 42.62538740451799

path: .spaces[0].metrics.mi.mi_visual_studio
old: 48.10008487917744
new: 38.341775787501376

path: .spaces[0].metrics.nargs.average
old: 0.0
new: 0.6666666666666666

path: .spaces[0].metrics.nargs.sum
old: 0.0
new: 4.0

Code

namespace fuzzer {

// A bit map containing kMapSizeInWords bits.
struct ValueBitMap {
  static const size_t kMapSizeInBits = 1 << 16;
  static const size_t kMapPrimeMod = 65371;  // Largest Prime < kMapSizeInBits;
  static const size_t kBitsInWord = (sizeof(uintptr_t) * 8);
  static const size_t kMapSizeInWords = kMapSizeInBits / kBitsInWord;
 public:

  // Clears all bits.
  void Reset() { memset(Map, 0, sizeof(Map)); }

  // Computes a hash function of Value and sets the corresponding bit.
  // Returns true if the bit was changed from 0 to 1.
  ATTRIBUTE_NO_SANITIZE_ALL
  inline bool AddValue(uintptr_t Value) {
    uintptr_t Idx = Value % kMapSizeInBits;
    uintptr_t WordIdx = Idx / kBitsInWord;
    uintptr_t BitIdx = Idx % kBitsInWord;
    uintptr_t Old = Map[WordIdx];
    uintptr_t New = Old | (1ULL << BitIdx);
    Map[WordIdx] = New;
    return New != Old;
  }

  ATTRIBUTE_NO_SANITIZE_ALL
  inline bool AddValueModPrime(uintptr_t Value) {
    return AddValue(Value % kMapPrimeMod);
  }

  inline bool Get(uintptr_t Idx) {
    assert(Idx < kMapSizeInBits);
    uintptr_t WordIdx = Idx / kBitsInWord;
    uintptr_t BitIdx = Idx % kBitsInWord;
    return Map[WordIdx] & (1ULL << BitIdx);
  }

  size_t SizeInBits() const { return kMapSizeInBits; }

  template 
  ATTRIBUTE_NO_SANITIZE_ALL
  void ForEach(Callback CB) const {
    for (size_t i = 0; i < kMapSizeInWords; i++)
      if (uintptr_t M = Map[i])
        for (size_t j = 0; j < sizeof(M) * 8; j++)
          if (M & ((uintptr_t)1 << j))
            CB(i * sizeof(M) * 8 + j);
  }

 private:
  ATTRIBUTE_ALIGNED(512) uintptr_t Map[kMapSizeInWords];
};

}  // namespace fuzzer

Minimal test - lines (28, 28)

path: .spaces[0].spaces[0].spaces[0].metrics.mi.mi_sei
old: null
new: 141.96524600794845

path: .spaces[0].spaces[0].spaces[0].metrics.mi.mi_original
old: null
new: 150.80406598368663

path: .spaces[0].spaces[0].spaces[0].metrics.mi.mi_visual_studio
old: null
new: 88.18951227116177

path: .spaces[0].spaces[0].spaces[0].metrics.nom.functions
old: 0.0
new: 1.0

path: .spaces[0].spaces[0].spaces[0].metrics.nom.total
old: 0.0
new: 1.0

path: .spaces[0].spaces[0].spaces[0].metrics.nargs.average
old: null
new: 0.0

path: .spaces[0].spaces[0].spaces[0].metrics.cognitive.average
old: null
new: 0.0

path: .spaces[0].spaces[0].spaces[0].metrics.halstead.vocabulary
old: 1.0
new: 10.0

path: .spaces[0].spaces[0].spaces[0].metrics.halstead.N2
old: 1.0
new: 5.0

path: .spaces[0].spaces[0].spaces[0].metrics.halstead.purity_ratio
old: null
new: 1.6792696431662095

path: .spaces[0].spaces[0].spaces[0].metrics.halstead.difficulty
old: 0.0
new: 3.75

path: .spaces[0].spaces[0].spaces[0].metrics.halstead.N1
old: 0.0
new: 9.0

path: .spaces[0].spaces[0].spaces[0].metrics.halstead.volume
old: 0.0
new: 46.50699332842307

path: .spaces[0].spaces[0].spaces[0].metrics.halstead.time
old: 0.0
new: 9.688956943421474

path: .spaces[0].spaces[0].spaces[0].metrics.halstead.effort
old: 0.0
new: 174.40122498158652

path: .spaces[0].spaces[0].spaces[0].metrics.halstead.estimated_program_length
old: null
new: 23.509775004326936

path: .spaces[0].spaces[0].spaces[0].metrics.halstead.n1
old: 0.0
new: 6.0

path: .spaces[0].spaces[0].spaces[0].metrics.halstead.n2
old: 1.0
new: 4.0

path: .spaces[0].spaces[0].spaces[0].metrics.halstead.length
old: 1.0
new: 14.0

path: .spaces[0].spaces[0].spaces[0].metrics.halstead.level
old: null
new: 0.26666666666666666

path: .spaces[0].spaces[0].spaces[0].metrics.halstead.bugs
old: 0.0
new: 0.010405072229378904

path: .spaces[0].spaces[0].spaces[0].metrics.loc.lloc
old: 0.0
new: 1.0

path: .spaces[0].spaces[0].spaces[0].metrics.nexits.average
old: null
new: 0.0

Code

  void Reset() { memset(Map, 0, sizeof(Map)); }