/******************************************************************************* * Copyright (c) 2008, 2017 xored software, Inc. and others. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * xored software, Inc. - initial API and Implementation (Andrei Sobolev) *******************************************************************************/ package org.eclipse.dltk.tcl.internal.validators; import org.eclipse.core.runtime.CoreException; import org.eclipse.dltk.compiler.problem.IProblemReporter; import org.eclipse.dltk.core.IScriptProject; import org.eclipse.dltk.core.ISourceModule; import org.eclipse.dltk.core.builder.IBuildContext; import org.eclipse.dltk.core.builder.IBuildParticipant; import org.eclipse.dltk.core.builder.ISourceLineTracker; import org.eclipse.dltk.tcl.ast.TclCommand; import org.eclipse.dltk.tcl.ast.TclModule; import org.eclipse.dltk.tcl.internal.validators.ChecksExtensionManager.TclCheckInfo; import org.eclipse.dltk.tcl.parser.TclErrorCollector; import org.eclipse.dltk.tcl.validators.ITclCheck; import org.eclipse.dltk.tcl.validators.TclValidatorsCore; import org.eclipse.emf.common.util.EList; public class TclCheckBuildParticipant implements IBuildParticipant { public static boolean TESTING_DO_CHECKS = true; public static boolean TESTING_DO_OPERATIONS = true; private final TclCheckInfo[] checks = ChecksExtensionManager.getInstance() .getChecks(); private final CheckPreferenceManager preferences = new CheckPreferenceManager( TclValidatorsCore.getDefault().getPluginPreferences()); public TclCheckBuildParticipant(IScriptProject project) { } @Override public void build(IBuildContext context) throws CoreException { try { if (!TESTING_DO_OPERATIONS) { return; } final ISourceModule module = context.getSourceModule(); TclErrorCollector errorCollector = new TclErrorCollector(); TclModule tclModule = TclBuildContext.getStatements(context); EList<TclCommand> commands = tclModule.getStatements(); final ISourceLineTracker lineTracker = context.getLineTracker(); if (TESTING_DO_CHECKS) { // Perform all checks. for (int i = 0; i < checks.length; i++) { TclCheckInfo info = checks[i]; if (preferences.isEnabled(info)) { if (info.getCommandName() == null) { ITclCheck check = info.getCheck(); IScriptProject scriptProject = module .getScriptProject(); check.checkCommands(commands, errorCollector, preferences.getOptions(info), scriptProject, lineTracker); } } } } final IProblemReporter reporter = context.getProblemReporter(); // report errors to the build context errorCollector.reportAll(reporter, lineTracker); } catch (Exception e) { e.printStackTrace(); } } }