Global Metrics
path: .metrics.halstead.n1
old: 19.0
new: 20.0
path: .metrics.halstead.volume
old: 52843.87140175083
new: 3488.6399617499583
path: .metrics.halstead.bugs
old: 2.916674543419937
new: 0.5613819771700606
path: .metrics.halstead.difficulty
old: 15.488851351351352
new: 19.81132075471698
path: .metrics.halstead.level
old: 0.06456256679826379
new: 0.05047619047619048
path: .metrics.halstead.N1
old: 2596.0
new: 290.0
path: .metrics.halstead.purity_ratio
old: 3.1278009950727834
new: 1.5991962601628926
path: .metrics.halstead.effort
old: 818490.8689716455
new: 69114.565279952
path: .metrics.halstead.time
old: 45471.71494286919
new: 3839.6980711084448
path: .metrics.halstead.vocabulary
old: 1499.0
new: 126.0
path: .metrics.halstead.n2
old: 1480.0
new: 106.0
path: .metrics.halstead.length
old: 5009.0
new: 500.0
path: .metrics.halstead.N2
old: 2413.0
new: 210.0
path: .metrics.halstead.estimated_program_length
old: 15667.155184319572
new: 799.5981300814464
path: .metrics.mi.mi_visual_studio
old: 0.0
new: 17.93037090322618
path: .metrics.mi.mi_sei
old: -69.61195665889596
new: 4.399605426958921
path: .metrics.mi.mi_original
old: -31.062091871646444
new: 30.660934244516767
path: .metrics.nom.functions
old: 0.0
new: 12.0
path: .metrics.nom.total
old: 0.0
new: 12.0
path: .metrics.nargs.average
old: null
new: 0.75
path: .metrics.nargs.sum
old: 0.0
new: 9.0
path: .metrics.cyclomatic.average
old: 2.1818181818181817
new: 1.0434782608695652
path: .metrics.cyclomatic.sum
old: 72.0
new: 24.0
path: .metrics.cognitive.sum
old: 37.0
new: 1.0
path: .metrics.cognitive.average
old: null
new: 0.08333333333333333
path: .metrics.loc.cloc
old: 1336.0
new: 67.0
path: .metrics.loc.sloc
old: 2864.0
new: 300.0
path: .metrics.loc.lloc
old: 3.0
new: 18.0
path: .metrics.loc.ploc
old: 1308.0
new: 138.0
path: .metrics.loc.blank
old: 220.0
new: 95.0
path: .metrics.nexits.sum
old: 0.0
new: 6.0
path: .metrics.nexits.average
old: null
new: 0.5
Spaces Data
Minimal test - lines (141, 246)
path: .spaces[5].metrics.cognitive.sum
old: 0.0
new: 1.0
path: .spaces[5].metrics.cognitive.average
old: null
new: 0.125
path: .spaces[5].metrics.mi.mi_original
old: 113.96941655574688
new: 57.441802830837176
path: .spaces[5].metrics.mi.mi_sei
old: 127.9184323240276
new: 30.000216682361724
path: .spaces[5].metrics.mi.mi_visual_studio
old: 66.64878161154789
new: 33.591697561893085
path: .spaces[5].metrics.nargs.average
old: null
new: 0.375
path: .spaces[5].metrics.nargs.sum
old: 0.0
new: 3.0
path: .spaces[5].metrics.cyclomatic.sum
old: 2.0
new: 10.0
path: .spaces[5].metrics.cyclomatic.average
old: 1.0
new: 1.1111111111111112
path: .spaces[5].metrics.nexits.sum
old: 0.0
new: 4.0
path: .spaces[5].metrics.nexits.average
old: null
new: 0.5
path: .spaces[5].metrics.halstead.time
old: 4.70606480109043
new: 1421.4643151417615
path: .spaces[5].metrics.halstead.volume
old: 56.47277761308516
new: 960.4488615822712
path: .spaces[5].metrics.halstead.estimated_program_length
old: 24.406371956566694
new: 191.15505477032977
path: .spaces[5].metrics.halstead.N1
old: 10.0
new: 103.0
path: .spaces[5].metrics.halstead.difficulty
old: 1.5
new: 26.64
path: .spaces[5].metrics.halstead.level
old: 0.6666666666666666
new: 0.03753753753753754
path: .spaces[5].metrics.halstead.n2
old: 7.0
new: 25.0
path: .spaces[5].metrics.halstead.N2
old: 7.0
new: 74.0
path: .spaces[5].metrics.halstead.effort
old: 84.70916641962773
new: 25586.35767255171
path: .spaces[5].metrics.halstead.bugs
old: 0.006429329504347988
new: 0.28943500614866496
path: .spaces[5].metrics.halstead.n1
old: 3.0
new: 18.0
path: .spaces[5].metrics.halstead.vocabulary
old: 10.0
new: 43.0
path: .spaces[5].metrics.halstead.length
old: 17.0
new: 177.0
path: .spaces[5].metrics.halstead.purity_ratio
old: 1.4356689386215702
new: 1.0799720608493206
path: .spaces[5].metrics.loc.sloc
old: 9.0
new: 106.0
path: .spaces[5].metrics.loc.lloc
old: 0.0
new: 11.0
path: .spaces[5].metrics.loc.ploc
old: 7.0
new: 46.0
path: .spaces[5].metrics.loc.blank
old: 0.0
new: 51.0
path: .spaces[5].metrics.loc.cloc
old: 3.0
new: 9.0
path: .spaces[5].metrics.nom.functions
old: 0.0
new: 8.0
path: .spaces[5].metrics.nom.total
old: 0.0
new: 8.0
Code
class RunningTimes {
public:
constexpr RunningTimes() = default;
// Constructor with only a timestamp, useful when no measurements will be
// taken.
constexpr explicit RunningTimes(const mozilla::TimeStamp& aTimeStamp)
: mPostMeasurementTimeStamp(aTimeStamp) {}
constexpr void Clear() { *this = RunningTimes{}; }
constexpr bool IsEmpty() const { return mKnownBits == 0; }
// This should be called right after CPU measurements have been taken.
void SetPostMeasurementTimeStamp(const mozilla::TimeStamp& aTimeStamp) {
mPostMeasurementTimeStamp = aTimeStamp;
}
const mozilla::TimeStamp& PostMeasurementTimeStamp() const {
return mPostMeasurementTimeStamp;
}
// Should be filled for any registered thread.
#define RUNNING_TIME_MEMBER(index, name, unit, jsonProperty) \
constexpr bool Is##name##unit##Known() const { \
return (mKnownBits & mGot##name##unit) != 0; \
} \
\
constexpr void Clear##name##unit() { \
m##name##unit = 0; \
mKnownBits &= ~mGot##name##unit; \
} \
\
constexpr void Reset##name##unit(uint64_t a##name##unit) { \
m##name##unit = a##name##unit; \
mKnownBits |= mGot##name##unit; \
} \
\
constexpr void Set##name##unit(uint64_t a##name##unit) { \
MOZ_ASSERT(!Is##name##unit##Known(), #name #unit " already set"); \
Reset##name##unit(a##name##unit); \
} \
\
constexpr mozilla::Maybe Get##name##unit() const { \
if (Is##name##unit##Known()) { \
return mozilla::Some(m##name##unit); \
} \
return mozilla::Nothing{}; \
}
PROFILER_FOR_EACH_RUNNING_TIME(RUNNING_TIME_MEMBER)
#undef RUNNING_TIME_MEMBER
// Take values from another RunningTimes.
RunningTimes& TakeFrom(RunningTimes& aOther) {
if (!aOther.IsEmpty()) {
#define RUNNING_TIME_TAKE(index, name, unit, jsonProperty) \
if (aOther.Is##name##unit##Known()) { \
Set##name##unit(std::exchange(aOther.m##name##unit, 0)); \
}
PROFILER_FOR_EACH_RUNNING_TIME(RUNNING_TIME_TAKE)
#undef RUNNING_TIME_TAKE
aOther.mKnownBits = 0;
}
return *this;
}
// Difference from `aBefore` to `this`. Any unknown makes the result unknown.
// PostMeasurementTimeStamp set to `this` PostMeasurementTimeStamp, to keep
// the most recent timestamp associated with the end of the interval over
// which the difference applies.
RunningTimes operator-(const RunningTimes& aBefore) const {
RunningTimes diff;
diff.mPostMeasurementTimeStamp = mPostMeasurementTimeStamp;
#define RUNNING_TIME_SUB(index, name, unit, jsonProperty) \
if (Is##name##unit##Known() && aBefore.Is##name##unit##Known()) { \
diff.Set##name##unit(m##name##unit - aBefore.m##name##unit); \
}
PROFILER_FOR_EACH_RUNNING_TIME(RUNNING_TIME_SUB)
#undef RUNNING_TIME_SUB
return diff;
}
private:
friend mozilla::ProfileBufferEntryWriter::Serializer;
friend mozilla::ProfileBufferEntryReader::Deserializer;
mozilla::TimeStamp mPostMeasurementTimeStamp;
uint32_t mKnownBits = 0u;
#define RUNNING_TIME_MEMBER(index, name, unit, jsonProperty) \
static constexpr uint32_t mGot##name##unit = 1u << index; \
uint64_t m##name##unit = 0;
PROFILER_FOR_EACH_RUNNING_TIME(RUNNING_TIME_MEMBER)
#undef RUNNING_TIME_MEMBER
};
Minimal test - lines (249, 269)
path: .spaces[6].metrics.nargs.average
old: null
new: 1.5
path: .spaces[6].metrics.nargs.sum
old: 0.0
new: 3.0
path: .spaces[6].metrics.halstead.volume
old: 0.0
new: 320.0
path: .spaces[6].metrics.halstead.n1
old: 0.0
new: 14.0
path: .spaces[6].metrics.halstead.purity_ratio
old: null
new: 2.005650295855751
path: .spaces[6].metrics.halstead.N1
old: 0.0
new: 36.0
path: .spaces[6].metrics.halstead.time
old: 0.0
new: 193.58024691358025
path: .spaces[6].metrics.halstead.difficulty
old: 0.0
new: 10.88888888888889
path: .spaces[6].metrics.halstead.n2
old: 1.0
new: 18.0
path: .spaces[6].metrics.halstead.vocabulary
old: 1.0
new: 32.0
path: .spaces[6].metrics.halstead.effort
old: 0.0
new: 3484.4444444444443
path: .spaces[6].metrics.halstead.length
old: 1.0
new: 64.0
path: .spaces[6].metrics.halstead.estimated_program_length
old: null
new: 128.36161893476807
path: .spaces[6].metrics.halstead.N2
old: 1.0
new: 28.0
path: .spaces[6].metrics.halstead.bugs
old: 0.0
new: 0.07661276001857677
path: .spaces[6].metrics.halstead.level
old: null
new: 0.09183673469387754
path: .spaces[6].metrics.nexits.sum
old: 0.0
new: 1.0
path: .spaces[6].metrics.nexits.average
old: null
new: 0.5
path: .spaces[6].metrics.cognitive.average
old: null
new: 0.0
path: .spaces[6].metrics.loc.lloc
old: 0.0
new: 3.0
path: .spaces[6].metrics.loc.blank
old: 0.0
new: 6.0
path: .spaces[6].metrics.loc.sloc
old: 1.0
new: 21.0
path: .spaces[6].metrics.loc.ploc
old: 1.0
new: 15.0
path: .spaces[6].metrics.cyclomatic.sum
old: 1.0
new: 3.0
path: .spaces[6].metrics.nom.total
old: 0.0
new: 2.0
path: .spaces[6].metrics.nom.functions
old: 0.0
new: 2.0
path: .spaces[6].metrics.mi.mi_original
old: null
new: 90.99346733075294
path: .spaces[6].metrics.mi.mi_sei
old: null
new: 55.8804316575698
path: .spaces[6].metrics.mi.mi_visual_studio
old: null
new: 53.21255399459236
Code
struct mozilla::ProfileBufferEntryWriter::Serializer {
static Length Bytes(const RunningTimes& aRunningTimes) {
return ULEB128Size(aRunningTimes.mKnownBits) +
mozilla::CountPopulation32(aRunningTimes.mKnownBits) *
sizeof(uint64_t);
}
static void Write(ProfileBufferEntryWriter& aEW,
const RunningTimes& aRunningTimes) {
aEW.WriteULEB128(aRunningTimes.mKnownBits);
#define RUNNING_TIME_SERIALIZE(index, name, unit, jsonProperty) \
if (aRunningTimes.Is##name##unit##Known()) { \
aEW.WriteObject(aRunningTimes.m##name##unit); \
}
PROFILER_FOR_EACH_RUNNING_TIME(RUNNING_TIME_SERIALIZE)
#undef RUNNING_TIME_SERIALIZE
}
};
Minimal test - lines (272, 298)
path: .spaces[7].metrics.nexits.average
old: null
new: 0.5
path: .spaces[7].metrics.nexits.sum
old: 0.0
new: 1.0
path: .spaces[7].metrics.nom.total
old: 0.0
new: 2.0
path: .spaces[7].metrics.nom.functions
old: 0.0
new: 2.0
path: .spaces[7].metrics.cognitive.average
old: null
new: 0.0
path: .spaces[7].metrics.cyclomatic.sum
old: 1.0
new: 3.0
path: .spaces[7].metrics.halstead.length
old: 12.0
new: 62.0
path: .spaces[7].metrics.halstead.difficulty
old: 2.0
new: 10.5
path: .spaces[7].metrics.halstead.estimated_program_length
old: 19.60964047443681
new: 107.01955000865388
path: .spaces[7].metrics.halstead.purity_ratio
old: 1.6341367062030674
new: 1.7261217743331272
path: .spaces[7].metrics.halstead.time
old: 4.22656666858975
new: 173.86600301441666
path: .spaces[7].metrics.halstead.vocabulary
old: 9.0
new: 28.0
path: .spaces[7].metrics.halstead.volume
old: 38.039100017307746
new: 298.0560051675714
path: .spaces[7].metrics.halstead.effort
old: 76.07820003461549
new: 3129.5880542595
path: .spaces[7].metrics.halstead.N1
old: 7.0
new: 34.0
path: .spaces[7].metrics.halstead.n1
old: 4.0
new: 12.0
path: .spaces[7].metrics.halstead.n2
old: 5.0
new: 16.0
path: .spaces[7].metrics.halstead.bugs
old: 0.0059848356844364944
new: 0.07131871816861657
path: .spaces[7].metrics.halstead.level
old: 0.5
new: 0.09523809523809525
path: .spaces[7].metrics.halstead.N2
old: 5.0
new: 28.0
path: .spaces[7].metrics.nargs.average
old: null
new: 1.5
path: .spaces[7].metrics.nargs.sum
old: 0.0
new: 3.0
path: .spaces[7].metrics.loc.cloc
old: 2.0
new: 4.0
path: .spaces[7].metrics.loc.lloc
old: 0.0
new: 4.0
path: .spaces[7].metrics.loc.sloc
old: 6.0
new: 27.0
path: .spaces[7].metrics.loc.blank
old: 0.0
new: 8.0
path: .spaces[7].metrics.loc.ploc
old: 5.0
new: 15.0
path: .spaces[7].metrics.mi.mi_sei
old: 140.5892017250539
new: 78.61835097713342
path: .spaces[7].metrics.mi.mi_visual_studio
old: 71.82614081290335
new: 51.04770728733476
path: .spaces[7].metrics.mi.mi_original
old: 122.82270079006472
new: 87.29157946134245
Code
struct mozilla::ProfileBufferEntryReader::Deserializer {
static void ReadInto(ProfileBufferEntryReader& aER,
RunningTimes& aRunningTimes) {
aRunningTimes = Read(aER);
}
static RunningTimes Read(ProfileBufferEntryReader& aER) {
// Start with empty running times, everything is cleared.
RunningTimes times;
// This sets all the bits into mKnownBits, we don't need to modify it
// further.
times.mKnownBits = aER.ReadULEB128();
// For each member that should be known, read its value.
#define RUNNING_TIME_DESERIALIZE(index, name, unit, jsonProperty) \
if (times.Is##name##unit##Known()) { \
aER.ReadIntoObject(times.m##name##unit); \
}
PROFILER_FOR_EACH_RUNNING_TIME(RUNNING_TIME_DESERIALIZE)
#undef RUNNING_TIME_DESERIALIZE
return times;
}
};
Minimal test - lines (77, 79)
path: .spaces[3].metrics.mi.mi_visual_studio
old: 51.635128354665085
new: 80.40121985172942
path: .spaces[3].metrics.mi.mi_sei
old: 77.00114602066648
new: 122.75146225357946
path: .spaces[3].metrics.mi.mi_original
old: 88.29606948647731
new: 137.4860859464573
path: .spaces[3].metrics.loc.sloc
old: 26.0
new: 3.0
path: .spaces[3].metrics.loc.blank
old: 2.0
new: 0.0
path: .spaces[3].metrics.loc.ploc
old: 21.0
new: 3.0
path: .spaces[3].metrics.loc.cloc
old: 3.0
new: 0.0
path: .spaces[3].metrics.halstead.bugs
old: 0.02463833887226839
new: 0.004471319041702271
path: .spaces[3].metrics.halstead.volume
old: 288.85263754543286
new: 19.651484454403228
path: .spaces[3].metrics.halstead.vocabulary
old: 24.0
new: 7.0
path: .spaces[3].metrics.halstead.N1
old: 41.0
new: 5.0
path: .spaces[3].metrics.halstead.estimated_program_length
old: 94.43856189774723
new: 13.60964047443681
path: .spaces[3].metrics.halstead.length
old: 63.0
new: 7.0
path: .spaces[3].metrics.halstead.n1
old: 4.0
new: 5.0
path: .spaces[3].metrics.halstead.purity_ratio
old: 1.4990247920277342
new: 1.944234353490973
path: .spaces[3].metrics.halstead.effort
old: 635.4758025999523
new: 49.12871113600807
path: .spaces[3].metrics.halstead.time
old: 35.30421125555291
new: 2.7293728408893374
path: .spaces[3].metrics.halstead.n2
old: 20.0
new: 2.0
path: .spaces[3].metrics.halstead.difficulty
old: 2.2
new: 2.5
path: .spaces[3].metrics.halstead.level
old: 0.4545454545454546
new: 0.4
path: .spaces[3].metrics.halstead.N2
old: 22.0
new: 2.0
path: .spaces[3].metrics.cyclomatic.sum
old: 2.0
new: 1.0
Code
struct PlatformDataDestructor {
void operator()(PlatformData*);
};
Minimal test - lines (85, 87)
path: .spaces[4].metrics.mi.mi_original
old: null
new: 141.92938490684145
path: .spaces[4].metrics.mi.mi_visual_studio
old: null
new: 82.99964029639851
path: .spaces[4].metrics.mi.mi_sei
old: null
new: 129.26360748831726
path: .spaces[4].metrics.loc.sloc
old: 1.0
new: 3.0
path: .spaces[4].metrics.loc.ploc
old: 1.0
new: 3.0
path: .spaces[4].metrics.cyclomatic.sum
old: 1.0
new: 2.0
path: .spaces[4].metrics.halstead.volume
old: 0.0
new: 8.0
path: .spaces[4].metrics.halstead.time
old: 0.0
new: 0.4444444444444444
path: .spaces[4].metrics.halstead.difficulty
old: 0.0
new: 1.0
path: .spaces[4].metrics.halstead.level
old: null
new: 1.0
path: .spaces[4].metrics.halstead.effort
old: 0.0
new: 8.0
path: .spaces[4].metrics.halstead.N2
old: 1.0
new: 2.0
path: .spaces[4].metrics.halstead.length
old: 1.0
new: 4.0
path: .spaces[4].metrics.halstead.vocabulary
old: 1.0
new: 4.0
path: .spaces[4].metrics.halstead.N1
old: 0.0
new: 2.0
path: .spaces[4].metrics.halstead.purity_ratio
old: null
new: 1.0
path: .spaces[4].metrics.halstead.estimated_program_length
old: null
new: 4.0
path: .spaces[4].metrics.halstead.bugs
old: 0.0
new: 0.0013333333333333333
path: .spaces[4].metrics.halstead.n1
old: 0.0
new: 2.0
path: .spaces[4].metrics.halstead.n2
old: 1.0
new: 2.0
Code
namespace mozilla {
class JSONWriter;
}
Minimal test - lines (143, 143)
path: .spaces[5].spaces[0].metrics.nexits.average
old: null
new: 0.0
path: .spaces[5].spaces[0].metrics.nargs.average
old: null
new: 0.0
path: .spaces[5].spaces[0].metrics.cognitive.average
old: null
new: 0.0
path: .spaces[5].spaces[0].metrics.mi.mi_visual_studio
old: null
new: 92.40962204246613
path: .spaces[5].spaces[0].metrics.mi.mi_sei
old: null
new: 152.37629276875444
path: .spaces[5].spaces[0].metrics.mi.mi_original
old: null
new: 158.02045369261705
path: .spaces[5].spaces[0].metrics.nom.functions
old: 0.0
new: 1.0
path: .spaces[5].spaces[0].metrics.nom.total
old: 0.0
new: 1.0
path: .spaces[5].spaces[0].metrics.halstead.purity_ratio
old: null
new: 1.6
path: .spaces[5].spaces[0].metrics.halstead.vocabulary
old: 1.0
new: 5.0
path: .spaces[5].spaces[0].metrics.halstead.bugs
old: 0.0
new: 0.002712967490108627
path: .spaces[5].spaces[0].metrics.halstead.n1
old: 0.0
new: 4.0
path: .spaces[5].spaces[0].metrics.halstead.time
old: 0.0
new: 1.289960052715201
path: .spaces[5].spaces[0].metrics.halstead.difficulty
old: 0.0
new: 2.0
path: .spaces[5].spaces[0].metrics.halstead.estimated_program_length
old: null
new: 8.0
path: .spaces[5].spaces[0].metrics.halstead.level
old: null
new: 0.5
path: .spaces[5].spaces[0].metrics.halstead.effort
old: 0.0
new: 23.21928094887362
path: .spaces[5].spaces[0].metrics.halstead.volume
old: 0.0
new: 11.60964047443681
path: .spaces[5].spaces[0].metrics.halstead.N1
old: 0.0
new: 4.0
path: .spaces[5].spaces[0].metrics.halstead.length
old: 1.0
new: 5.0
Code
constexpr RunningTimes() = default;
Minimal test - lines (48, 50)
path: .spaces[1].metrics.mi.mi_original
old: null
new: 141.92938490684145
path: .spaces[1].metrics.mi.mi_visual_studio
old: null
new: 82.99964029639851
path: .spaces[1].metrics.mi.mi_sei
old: null
new: 129.26360748831726
path: .spaces[1].metrics.halstead.level
old: null
new: 1.0
path: .spaces[1].metrics.halstead.effort
old: 0.0
new: 8.0
path: .spaces[1].metrics.halstead.N1
old: 0.0
new: 2.0
path: .spaces[1].metrics.halstead.N2
old: 1.0
new: 2.0
path: .spaces[1].metrics.halstead.length
old: 1.0
new: 4.0
path: .spaces[1].metrics.halstead.n1
old: 0.0
new: 2.0
path: .spaces[1].metrics.halstead.vocabulary
old: 1.0
new: 4.0
path: .spaces[1].metrics.halstead.bugs
old: 0.0
new: 0.0013333333333333333
path: .spaces[1].metrics.halstead.difficulty
old: 0.0
new: 1.0
path: .spaces[1].metrics.halstead.n2
old: 1.0
new: 2.0
path: .spaces[1].metrics.halstead.volume
old: 0.0
new: 8.0
path: .spaces[1].metrics.halstead.estimated_program_length
old: null
new: 4.0
path: .spaces[1].metrics.halstead.purity_ratio
old: null
new: 1.0
path: .spaces[1].metrics.halstead.time
old: 0.0
new: 0.4444444444444444
path: .spaces[1].metrics.loc.sloc
old: 1.0
new: 3.0
path: .spaces[1].metrics.loc.ploc
old: 1.0
new: 3.0
path: .spaces[1].metrics.cyclomatic.sum
old: 1.0
new: 2.0
Code
namespace mozilla {
struct SymbolTable;
}
Minimal test - lines (73, 73)
path: .spaces[2].metrics.mi.mi_sei
old: 88.3635755463951
new: null
path: .spaces[2].metrics.mi.mi_visual_studio
old: 46.72833471160905
new: null
path: .spaces[2].metrics.mi.mi_original
old: 79.90545235685147
new: null
path: .spaces[2].metrics.halstead.n2
old: 25.0
new: 1.0
path: .spaces[2].metrics.halstead.length
old: 57.0
new: 1.0
path: .spaces[2].metrics.halstead.volume
old: 276.9049167222716
new: 0.0
path: .spaces[2].metrics.halstead.n1
old: 4.0
new: 0.0
path: .spaces[2].metrics.halstead.time
old: 33.22859000667259
new: 0.0
path: .spaces[2].metrics.halstead.bugs
old: 0.023662921199721396
new: 0.0
path: .spaces[2].metrics.halstead.difficulty
old: 2.16
new: 0.0
path: .spaces[2].metrics.halstead.estimated_program_length
old: 124.09640474436812
new: null
path: .spaces[2].metrics.halstead.N1
old: 30.0
new: 0.0
path: .spaces[2].metrics.halstead.effort
old: 598.1146201201067
new: 0.0
path: .spaces[2].metrics.halstead.purity_ratio
old: 2.1771299077959316
new: null
path: .spaces[2].metrics.halstead.level
old: 0.4629629629629629
new: null
path: .spaces[2].metrics.halstead.vocabulary
old: 29.0
new: 1.0
path: .spaces[2].metrics.halstead.N2
old: 27.0
new: 1.0
path: .spaces[2].metrics.cyclomatic.sum
old: 4.0
new: 1.0
path: .spaces[2].metrics.loc.ploc
old: 24.0
new: 1.0
path: .spaces[2].metrics.loc.sloc
old: 43.0
new: 1.0
path: .spaces[2].metrics.loc.cloc
old: 31.0
new: 0.0
Code
class PlatformData;