QAI = 2 * (TP * (PT/PNC) * COV) / (1 + exp(MSE/tau))

    Where:
        TP: If all tests passes is 1, 0 otherwise.
        PT: Processors and commands tested.
        PCN: The number number of processors (Loader, Steps and Alerts)
             and commands.
        COV: The code coverage (between 0 and 1).
        MSE: The Maintainability and Style Errors.
        tau: Tolerance of style errors per file

def default_qai(qareport):
    """QAI = 2 * (TP * (PT/PNC) * COV) / (1 + exp(MSE/tau))

    Where:
        TP: If all tests passes is 1, 0 otherwise.
        PT: Processors and commands tested.
        PCN: The number number of processors (Loader, Steps and Alerts)
             and commands.
        COV: The code coverage (between 0 and 1).
        MSE: The Maintainability and Style Errors.
        tau: Tolerance of style errors per file

    """
    TP = 1. if qareport.is_test_sucess else 0.
    PCN = qareport.processors_number + qareport.commands_number
    PT_div_PCN = float(qareport.pc_tested_number) / PCN
    COV = qareport.coverage_line_rate
    tau = get_tau()

    total_tau = float(tau) * len(qareport.project_modules)
    style = 1 + math.exp(qareport.style_errors / total_tau)

    result = (2 * TP * PT_div_PCN * COV) / style
    return result