Search in sources :

Example 1 with FlowValidator

use of org.eclipse.n4js.validation.validators.flowgraphs.FlowValidator in project n4js by eclipse.

the class N4JSFlowgraphValidator method checkFlowGraphs.

/**
 * Triggers all flow graph related validations
 */
@Check
public void checkFlowGraphs(Script script) {
    // Note: The Flow Graph is NOT stored in the meta info cache. Hence, it is created here at use site.
    // In case the its creation is moved to the N4JSPostProcessor, care about an increase in memory consumption.
    N4JSFlowAnalyser flowAnalyzer = new N4JSFlowAnalyser(this::checkCancelled);
    FlowValidator[] fValidators = { new DeadCodeValidator(keywordProvider), new UsedBeforeDeclaredValidator(), new NullUndefinedValidator(n4jsCore, findReferenceHelper), new MissingReturnOrThrowValidator(typeSystemHelper, jsVariantHelper) };
    FlowAnalyser[] fAnalysers = new FlowAnalyser[fValidators.length];
    for (int i = 0; i < fValidators.length; i++) {
        fAnalysers[i] = fValidators[i].getFlowAnalyser();
    }
    flowAnalyzer.createGraphs(script);
    flowAnalyzer.accept(fAnalysers);
    String uriString = script.eResource().getURI().toString();
    try (ClosableMeasurement m1 = dcFlowGraphs.getClosableMeasurement("flowGraphs_" + uriString);
        ClosableMeasurement m2 = dcPostprocessing.getClosableMeasurement("createGraph_" + uriString)) {
        for (FlowValidator fValidator : fValidators) {
            fValidator.checkResults(this);
        }
    }
}
Also used : ClosableMeasurement(org.eclipse.n4js.smith.ClosableMeasurement) NullUndefinedValidator(org.eclipse.n4js.validation.validators.flowgraphs.NullUndefinedValidator) MissingReturnOrThrowValidator(org.eclipse.n4js.validation.validators.flowgraphs.MissingReturnOrThrowValidator) N4JSFlowAnalyser(org.eclipse.n4js.flowgraphs.N4JSFlowAnalyser) UsedBeforeDeclaredValidator(org.eclipse.n4js.validation.validators.flowgraphs.UsedBeforeDeclaredValidator) FlowValidator(org.eclipse.n4js.validation.validators.flowgraphs.FlowValidator) FlowAnalyser(org.eclipse.n4js.flowgraphs.FlowAnalyser) N4JSFlowAnalyser(org.eclipse.n4js.flowgraphs.N4JSFlowAnalyser) DeadCodeValidator(org.eclipse.n4js.validation.validators.flowgraphs.DeadCodeValidator) Check(org.eclipse.xtext.validation.Check)

Aggregations

FlowAnalyser (org.eclipse.n4js.flowgraphs.FlowAnalyser)1 N4JSFlowAnalyser (org.eclipse.n4js.flowgraphs.N4JSFlowAnalyser)1 ClosableMeasurement (org.eclipse.n4js.smith.ClosableMeasurement)1 DeadCodeValidator (org.eclipse.n4js.validation.validators.flowgraphs.DeadCodeValidator)1 FlowValidator (org.eclipse.n4js.validation.validators.flowgraphs.FlowValidator)1 MissingReturnOrThrowValidator (org.eclipse.n4js.validation.validators.flowgraphs.MissingReturnOrThrowValidator)1 NullUndefinedValidator (org.eclipse.n4js.validation.validators.flowgraphs.NullUndefinedValidator)1 UsedBeforeDeclaredValidator (org.eclipse.n4js.validation.validators.flowgraphs.UsedBeforeDeclaredValidator)1 Check (org.eclipse.xtext.validation.Check)1