blob: e9bf10f7662aa4a99d9c77ec65ddae6e4df266b1 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2008 IBM Corporation 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:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.pde.api.tools.internal.provisional.builder;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.pde.api.tools.internal.builder.BuildState;
import org.eclipse.pde.api.tools.internal.provisional.IApiComponent;
import org.eclipse.pde.api.tools.internal.provisional.IApiProfile;
import org.eclipse.pde.api.tools.internal.provisional.problems.IApiProblem;
/**
* Description of an analyzer used by the API builder to find and report
* problems with the current API state.
*
* @see ApiAnalysisBuilder
* @see IApiProblem
* @since 1.0.0
*/
public interface IApiAnalyzer {
/**
* Analyzes a given {@link IApiComponent} for API problems.
* <p>The component is guaranteed to not be <code>null</code> and to be
* up-to-date in the API description it belongs to.</p>
* <p>If the baseline is null, no analysis is done.</p>
*
* @param buildState the given build state or null if none
* @param baseline the profile context to check the component against
* @param component the component to analyze
* @param typenames the context of type names to analyze within the given component
* @param monitor to report progress
* @see PluginProjectApiComponent
* @see BundleApiComponent
*/
public void analyzeComponent(final BuildState buildState, final IApiProfile baseline, final IApiComponent component, final String[] typenames, IProgressMonitor monitor);
/**
* Returns the complete set of {@link IApiProblem}s found by this analyzer, or an empty
* array. This method must never return <code>null</code>
*
* @return the complete set of problems found by this analyzer or an empty array.
*/
public IApiProblem[] getProblems();
/**
* Cleans up and disposes this analyzer, freeing all held memory.
* Once the analyzer has been disposed it cannot be used again without
* specifying a new reporter to use.
*/
public void dispose();
}