/**
* Copyright (c) 2013-2016 Angelo ZERR and Genuitec LLC.
* 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:
* Angelo Zerr <angelo.zerr@gmail.com> - initial API and implementation
* Piotr Tomiak <piotr@genuitec.com> - collectors API and code refactoring
*/
package tern.server.protocol.lint;
import tern.server.protocol.IJSONObjectHelper;
import tern.server.protocol.ITernResultsCollector;
/**
* Tern lint collector API.
*
*/
public interface ITernLintCollector extends ITernResultsCollector {
/**
* This method is call when lint start for the given file before calling the
* first {@link ITernLintCollector}
* {@link #addMessage(String, Long, Long, String, String)}.
*
* @param file
*/
void startLint(String file);
/**
* Add message.
*
* @param messageId
* the id of the message and null if the linter cannot support
*
* @param message
* the description of the message.
* @param start
* offset.
* @param end
* offset.
* @param lineNumber
* the line number and null if the linter cannot support this
* feature.
* @param severity
* the severity of the message.
* @param file
* the owner file name.
* @param messageObject
* JSON object of message.
* @param query
* @param helper
* the JSON Object helper to visit the given JSON message object.
*/
void addMessage(String messageId, String message, Long start, Long end, Long lineNumber, String severity,
String file, Object messageObject, TernLintQuery query, IJSONObjectHelper helper);
/**
* This method is call when lint end for the given file after calling the
* last {@link ITernLintCollector}
* {@link #addMessage(String, Long, Long, String, String)}.
*
* @param file
*/
void endLint(String file);
}