diff --git a/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/NamingConventionFunctionChecker.java b/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/NamingConventionFunctionChecker.java index 8dcb67db460..51cfde8f810 100644 --- a/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/NamingConventionFunctionChecker.java +++ b/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/NamingConventionFunctionChecker.java @@ -20,6 +20,7 @@ import org.eclipse.cdt.codan.core.model.IProblemWorkingCopy; import org.eclipse.cdt.core.dom.ast.ASTVisitor; import org.eclipse.cdt.core.dom.ast.IASTDeclaration; import org.eclipse.cdt.core.dom.ast.IASTFunctionDefinition; +import org.eclipse.cdt.core.dom.ast.IASTName; import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit; /** @@ -44,11 +45,11 @@ public class NamingConventionFunctionChecker extends AbstractIndexAstChecker if (element instanceof IASTFunctionDefinition) { String parameter = (String) pt.getParameter(PARAM_KEY); Pattern pattern = Pattern.compile(parameter); - String name = ((IASTFunctionDefinition) element) - .getDeclarator().getName().toString(); + IASTName astName = ((IASTFunctionDefinition) element) + .getDeclarator().getName(); + String name = astName.toString(); if (!pattern.matcher(name).find()) { - reportProblem(ER_ID, getFile(), 1, // TODO: line - // number + reportProblem(ER_ID, astName, name, parameter); } } diff --git a/codan/org.eclipse.cdt.codan.core.cxx/src/org/eclipse/cdt/codan/core/cxx/model/AbstractIndexAstChecker.java b/codan/org.eclipse.cdt.codan.core.cxx/src/org/eclipse/cdt/codan/core/cxx/model/AbstractIndexAstChecker.java index 9d100b53bfc..dc146fc2393 100644 --- a/codan/org.eclipse.cdt.codan.core.cxx/src/org/eclipse/cdt/codan/core/cxx/model/AbstractIndexAstChecker.java +++ b/codan/org.eclipse.cdt.codan.core.cxx/src/org/eclipse/cdt/codan/core/cxx/model/AbstractIndexAstChecker.java @@ -80,7 +80,7 @@ public abstract class AbstractIndexAstChecker extends AbstractChecker implements return true; } - public void reportProblem(String id, IASTNode astNode, String message) { + public void reportProblem(String id, IASTNode astNode, Object... args) { IASTFileLocation astLocation = astNode.getFileLocation(); IPath location = new Path(astLocation.getFileName()); IFile astFile = ResourcesPlugin.getWorkspace().getRoot() @@ -89,19 +89,20 @@ public abstract class AbstractIndexAstChecker extends AbstractChecker implements astFile = file; } IProblemLocation loc; - if (astLocation.getStartingLineNumber() == astLocation + int line = astLocation.getStartingLineNumber(); + if (line == astLocation .getEndingLineNumber()) loc = getRuntime().getProblemLocationFactory() .createProblemLocation( astFile, astLocation.getNodeOffset(), astLocation.getNodeOffset() - + astLocation.getNodeLength()); + + astLocation.getNodeLength(), line); else loc = getRuntime().getProblemLocationFactory() .createProblemLocation(astFile, - astLocation.getStartingLineNumber()); - getProblemReporter().reportProblem(id, loc, message); + line); + getProblemReporter().reportProblem(id, loc, args); } @Override diff --git a/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/IProblemLocationFactory.java b/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/IProblemLocationFactory.java index b7055acd423..eb1f22f919e 100644 --- a/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/IProblemLocationFactory.java +++ b/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/IProblemLocationFactory.java @@ -14,31 +14,55 @@ import org.eclipse.core.resources.IFile; /** * Factory interface that allows to create problem locations. - * + * * Clients may implement and extend this interface. *

- * EXPERIMENTAL. This class or interface has been added as - * part of a work in progress. There is no guarantee that this API will - * work or that it will remain the same. + * EXPERIMENTAL. This class or interface has been added as part + * of a work in progress. There is no guarantee that this API will work or that + * it will remain the same. *

*/ public interface IProblemLocationFactory { - /** * Create and return instance of IProblemLocation - * @param file - file where problem is found - * @param line - line number where problem is found, starts with 1 + * + * @param file + * - file where problem is found + * @param line + * - line number where problem is found, starts with 1 * @return instance of IProblemLocation */ public IProblemLocation createProblemLocation(IFile file, int line); /** * Create and return instance of IProblemLocation - * @param file - file where problem is found - * @param startChar - start char of the problem in the file, is zero-relative - * @param endChar - end char of the problem in the file, is zero-relative and exclusive. + * + * @param file + * - file where problem is found + * @param startChar + * - start char of the problem in the file, is zero-relative + * @param endChar + * - end char of the problem in the file, is zero-relative and + * exclusive. * @return instance of IProblemLocation */ - public IProblemLocation createProblemLocation(IFile file, int startChar, int endChar); + public IProblemLocation createProblemLocation(IFile file, int startChar, + int endChar); + /** + * Create and return instance of IProblemLocation + * + * @param file + * - file where problem is found + * @param startChar + * - start char of the problem in the file, is zero-relative + * @param endChar + * - end char of the problem in the file, is zero-relative and + * exclusive. + * @param line + * - start line number (for visualisation purposes) + * @return instance of IProblemLocation + */ + public IProblemLocation createProblemLocation(IFile astFile, + int nodeOffset, int i, int line); } \ No newline at end of file diff --git a/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/core/model/CodanProblemLocation.java b/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/core/model/CodanProblemLocation.java index e3d5f799454..ccf05e94078 100644 --- a/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/core/model/CodanProblemLocation.java +++ b/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/core/model/CodanProblemLocation.java @@ -15,16 +15,19 @@ import org.eclipse.core.resources.IFile; /** * Codan Problem Location, so far same as abstract class - * + * */ public class CodanProblemLocation extends AbstractProblemLocation { - public CodanProblemLocation(IFile file, int startChar, int endChar) { super(file, startChar, endChar); } + public CodanProblemLocation(IFile file, int startChar, int endChar, int line) { + super(file, startChar, endChar); + this.line = line; + } + protected CodanProblemLocation(IFile file, int line) { super(file, line); } - } diff --git a/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/core/model/ProblemLocationFactory.java b/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/core/model/ProblemLocationFactory.java index fe7c198dadf..bdb37ad7e38 100644 --- a/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/core/model/ProblemLocationFactory.java +++ b/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/core/model/ProblemLocationFactory.java @@ -16,20 +16,38 @@ import org.eclipse.core.resources.IFile; /** * Factory class that allows to create problem locations - * + * */ public class ProblemLocationFactory implements IProblemLocationFactory { - /* (non-Javadoc) - * @see org.eclipse.cdt.codan.core.model.IProblemLocationFactory#createProblemLocation(org.eclipse.core.resources.IFile, int) + /* + * (non-Javadoc) + * + * @seeorg.eclipse.cdt.codan.core.model.IProblemLocationFactory# + * createProblemLocation(org.eclipse.core.resources.IFile, int) */ public IProblemLocation createProblemLocation(IFile file, int line) { return new CodanProblemLocation(file, line); } - /* (non-Javadoc) - * @see org.eclipse.cdt.codan.core.model.IProblemLocationFactory#createProblemLocation(org.eclipse.core.resources.IFile, int, int) + /* + * (non-Javadoc) + * + * @seeorg.eclipse.cdt.codan.core.model.IProblemLocationFactory# + * createProblemLocation(org.eclipse.core.resources.IFile, int, int) */ - public IProblemLocation createProblemLocation(IFile file, int startChar, int endChar) { + public IProblemLocation createProblemLocation(IFile file, int startChar, + int endChar) { return new CodanProblemLocation(file, startChar, endChar); } + + /* + * (non-Javadoc) + * + * @seeorg.eclipse.cdt.codan.core.model.IProblemLocationFactory# + * createProblemLocation(org.eclipse.core.resources.IFile, int, int, int) + */ + public IProblemLocation createProblemLocation(IFile file, int startChar, + int endChar, int line) { + return new CodanProblemLocation(file, startChar, endChar, line); + } }