Global Metrics

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

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

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

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

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

path: .metrics.cyclomatic.sum
old: 2.0
new: 19.0

path: .metrics.loc.cloc
old: 4.0
new: 63.0

path: .metrics.loc.blank
old: 0.0
new: 56.0

path: .metrics.loc.ploc
old: 3.0
new: 75.0

path: .metrics.loc.sloc
old: 7.0
new: 194.0

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

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

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

path: .metrics.mi.mi_visual_studio
old: 68.12069433517908
new: 23.01175340426367

path: .metrics.mi.mi_original
old: 116.48638731315624
new: 39.35009832129087

path: .metrics.mi.mi_sei
old: 138.61569396244263
new: 21.63073099396029

path: .metrics.halstead.length
old: 20.0
new: 477.0

path: .metrics.halstead.time
old: 19.741840336594983
new: 4930.000479478899

path: .metrics.halstead.vocabulary
old: 14.0
new: 102.0

path: .metrics.halstead.effort
old: 355.35312605870973
new: 88740.00863062018

path: .metrics.halstead.purity_ratio
old: 1.975488750216347
new: 1.2516853746192471

path: .metrics.halstead.n2
old: 6.0
new: 76.0

path: .metrics.halstead.bugs
old: 0.01672317901799221
new: 0.6631702819914131

path: .metrics.halstead.estimated_program_length
old: 39.50977500432694
new: 597.0539236933809

path: .metrics.halstead.N2
old: 7.0
new: 163.0

path: .metrics.halstead.difficulty
old: 4.666666666666667
new: 27.88157894736842

path: .metrics.halstead.N1
old: 13.0
new: 314.0

path: .metrics.halstead.level
old: 0.21428571428571427
new: 0.03586597451628126

path: .metrics.halstead.n1
old: 8.0
new: 26.0

path: .metrics.halstead.volume
old: 76.14709844115208
new: 3182.746888120403

Spaces Data

Minimal test - lines (27, 83)

path: .spaces[0].metrics.halstead.effort
old: 355.35312605870973
new: 79159.01934132367

path: .spaces[0].metrics.halstead.level
old: 0.21428571428571427
new: 0.03567447045707915

path: .spaces[0].metrics.halstead.time
old: 19.741840336594983
new: 4397.723296740204

path: .spaces[0].metrics.halstead.n1
old: 8.0
new: 26.0

path: .spaces[0].metrics.halstead.purity_ratio
old: 1.975488750216347
new: 1.1637044429233756

path: .spaces[0].metrics.halstead.N1
old: 13.0
new: 297.0

path: .spaces[0].metrics.halstead.bugs
old: 0.01672317901799221
new: 0.6145336693026984

path: .spaces[0].metrics.halstead.estimated_program_length
old: 39.50977500432694
new: 506.2114326716684

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

path: .spaces[0].metrics.halstead.length
old: 20.0
new: 435.0

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

path: .spaces[0].metrics.halstead.difficulty
old: 4.666666666666667
new: 28.03125

path: .spaces[0].metrics.halstead.volume
old: 76.14709844115208
new: 2823.9560969034087

path: .spaces[0].metrics.halstead.vocabulary
old: 14.0
new: 90.0

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

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

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

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

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

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

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

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

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

path: .spaces[0].metrics.loc.ploc
old: 3.0
new: 47.0

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

path: .spaces[0].metrics.loc.sloc
old: 7.0
new: 57.0

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

path: .spaces[0].metrics.mi.mi_visual_studio
old: 68.2551972591557
new: 35.11340373702712

path: .spaces[0].metrics.mi.mi_original
old: 116.71638731315625
new: 60.04392039031637

path: .spaces[0].metrics.mi.mi_sei
old: 138.84569396244265
new: 22.944908123794548

Code

PrepareAndDispatch(nsXPTCStubBase* self, uint32_t methodIndex, uint32_t* args)
{

    nsXPTCMiniVariant paramBuffer[PARAM_BUFFER_COUNT];
    const nsXPTMethodInfo* info;
    uint8_t paramCount;
    uint8_t i;

    NS_ASSERTION(self,"no self");

    self->mEntry->GetMethodInfo(uint16_t(methodIndex), &info);
    paramCount = info->GetParamCount();

    const uint8_t indexOfJSContext = info->IndexOfJSContext();

    uint32_t* ap = args;
    for(i = 0; i < paramCount; i++, ap++)
    {
        const nsXPTParamInfo& param = info->GetParam(i);
        const nsXPTType& type = param.GetType();
        nsXPTCMiniVariant* dp = ¶mBuffer[i];

        if (i == indexOfJSContext)
            ap++;

        if(param.IsOut() || !type.IsArithmetic())
        {
            dp->val.p = (void*) *ap;
            continue;
        }
        // else
        switch(type)
        {
        case nsXPTType::T_I8     : dp->val.i8  = *((int8_t*)  ap);       break;
        case nsXPTType::T_I16    : dp->val.i16 = *((int16_t*) ap);       break;
        case nsXPTType::T_I32    : dp->val.i32 = *((int32_t*) ap);       break;
        case nsXPTType::T_I64    : dp->val.i64 = *((int64_t*) ap); ap++; break;
        case nsXPTType::T_U8     : dp->val.u8  = *((uint8_t*) ap);       break;
        case nsXPTType::T_U16    : dp->val.u16 = *((uint16_t*)ap);       break;
        case nsXPTType::T_U32    : dp->val.u32 = *((uint32_t*)ap);       break;
        case nsXPTType::T_U64    : dp->val.u64 = *((uint64_t*)ap); ap++; break;
        case nsXPTType::T_FLOAT  : dp->val.f   = *((float*)   ap);       break;
        case nsXPTType::T_DOUBLE : dp->val.d   = *((double*)  ap); ap++; break;
        case nsXPTType::T_BOOL   : dp->val.b   = *((bool*)  ap);       break;
        case nsXPTType::T_CHAR   : dp->val.c   = *((char*)    ap);       break;
        case nsXPTType::T_WCHAR  : dp->val.wc  = *((wchar_t*) ap);       break;
        default:
            NS_ERROR("bad type");
            break;
        }
    }

    nsresult result = self->mOuter->CallMethod((uint16_t)methodIndex, info,
                                               paramBuffer);

    return result;
}