1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-07-23 17:05:26 +02:00

- checker with a parameter

This commit is contained in:
Alena Laskavaia 2010-02-19 02:29:35 +00:00
parent f67d273034
commit 28b8714c2d
2 changed files with 108 additions and 0 deletions

View file

@ -62,6 +62,17 @@
id="org.eclipse.cdt.codan.checkers.sample.SuggestedParenthesisProblem"
name="Suggested parenthesis around expression">
</problem>
</checker>
<checker
class="org.eclipse.cdt.codan.checkers.sample.NamingConventionFunctionChecker"
id="org.eclipse.cdt.codan.checkers.sample.NamingConventionFunctionChecker"
name="NamingConventionFunctionChecker">
<problem
category="org.eclipse.cdt.codan.core.categories.CodeStyle"
defaultSeverity="Warning"
id="org.eclipse.cdt.codan.checkers.sample.NamingConventionFunctionProblem"
name="Name convention for function">
</problem>
</checker>
</extension>
</plugin>

View file

@ -0,0 +1,97 @@
/*******************************************************************************
* Copyright (c) 2009 Alena Laskavaia
* 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:
* Alena Laskavaia - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.codan.checkers.sample;
import java.util.regex.Pattern;
import org.eclipse.cdt.codan.core.model.AbstractCIndexChecker;
import org.eclipse.cdt.codan.core.model.ICheckerWithParameters;
import org.eclipse.cdt.codan.core.model.IProblem;
import org.eclipse.cdt.codan.core.model.IProblemParameterInfo;
import org.eclipse.cdt.codan.core.model.IProblemWorkingCopy;
import org.eclipse.cdt.core.model.ICElement;
import org.eclipse.cdt.core.model.ICElementVisitor;
import org.eclipse.cdt.core.model.ITranslationUnit;
import org.eclipse.core.runtime.CoreException;
/**
* @author Alena
*
*/
public class NamingConventionFunctionChecker extends AbstractCIndexChecker
implements ICheckerWithParameters {
public static final String PARAM_KEY = "pattern";
private static final String ER_ID = "org.eclipse.cdt.codan.checkers.sample.NamingConventionFunctionProblem";
/*
* (non-Javadoc)
*
* @see
* org.eclipse.cdt.codan.core.model.ICIndexChecker#processUnit(org.eclipse
* .cdt.core.model.ITranslationUnit)
*/
public void processUnit(ITranslationUnit unit) {
final IProblem pt = getProblemById(ER_ID, getFile());
try {
unit.accept(new ICElementVisitor() {
public boolean visit(ICElement element) throws CoreException {
if (element.getElementType() == ICElement.C_FUNCTION) {
String parameter = (String) pt.getParameter(PARAM_KEY);
Pattern pattern = Pattern.compile(parameter);
String name = element.getElementName();
if (!pattern.matcher(name).find()) {
reportProblem(ER_ID, getFile(), 1, // TODO: line number
"Bad function name: " + name);
}
return false;
}
return true;
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
/*
* (non-Javadoc)
*
* @see
* org.eclipse.cdt.codan.core.model.ICheckerWithParameters#initParameters
* (org.eclipse.cdt.codan.core.model.IProblemWorkingCopy)
*/
public void initParameters(IProblemWorkingCopy problem) {
IProblemParameterInfo info = new IProblemParameterInfo() {
public String getUiInfo() {
return null;
}
public String getType() {
return "string";
}
public String getLabel() {
return "Name Pattern";
}
public String getKey() {
return PARAM_KEY;
}
public IProblemParameterInfo getElement(String key) {
return null;
}
};
problem.setParameterInfo(info);
problem.setParameter(PARAM_KEY, "^[a-z]"); // name starts with english
// lower case letter
}
}