Logo Search packages:      
Sourcecode: undertaker version File versions  Download package

const BlockDefectAnalyzer * CodeSatStream::analyzeBlock ( const char *  block,
ConfigurationModel p_model 
) [virtual]
Parameters:
blockblock to check
p_modelprimary model to check against

Definition at line 130 of file CodeSatStream.cpp.

References BlockDefectAnalyzer::defectIsGlobal(), BlockDefectAnalyzer::isDefect(), and BlockDefectAnalyzer::needsCrosscheck().

                                                                                                     {

    BlockDefectAnalyzer *defect = new DeadBlockDefect(this, block);

    // If this is neither an Implementation, Configuration nor Referential *dead*,
    // then destroy the analysis and retry with an Undead Analysis
    if(!defect->isDefect(p_model)) {
        delete defect;
        defect = new UndeadBlockDefect(this, block);

        // No defect found, block seems OK
        if(!defect->isDefect(p_model)) {
            delete defect;
            return NULL;
        }
    }

    assert(defect->defectType() != BlockDefectAnalyzer::None);

    // (ATM) Implementation and Configuration defects do not require a crosscheck
    if (!_doCrossCheck || !defect->needsCrosscheck())
        return defect;

    ModelContainer *f = ModelContainer::getInstance();
    for (ModelContainer::iterator i = f->begin(); i != f->end(); i++) {
        const std::string &arch = (*i).first;
        const ConfigurationModel *model = (*i).second;

        if (!defect->isDefect(model)) {
            defect->markOk(arch);
            return defect;
        }
    }
    defect->defectIsGlobal();
    return defect;
}

Here is the call graph for this function:


Generated by  Doxygen 1.6.0   Back to index