From 3a426fb5fcecb5fbd59989f0bf7494917bb0b752 Mon Sep 17 00:00:00 2001 From: Alena Laskavaia Date: Sun, 23 May 2010 02:29:57 +0000 Subject: [PATCH] Bug 313622 Make checking for !a && b optional and off by default --- .../checkers/SuggestedParenthesisChecker.java | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/SuggestedParenthesisChecker.java b/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/SuggestedParenthesisChecker.java index a67111e883b..81131ee220f 100644 --- a/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/SuggestedParenthesisChecker.java +++ b/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/SuggestedParenthesisChecker.java @@ -11,6 +11,7 @@ package org.eclipse.cdt.codan.internal.checkers; import org.eclipse.cdt.codan.core.cxx.model.AbstractIndexAstChecker; +import org.eclipse.cdt.codan.core.model.IProblemWorkingCopy; import org.eclipse.cdt.core.dom.ast.ASTNodeProperty; import org.eclipse.cdt.core.dom.ast.ASTVisitor; import org.eclipse.cdt.core.dom.ast.IASTBinaryExpression; @@ -31,6 +32,7 @@ import org.eclipse.cdt.core.dom.ast.IASTUnaryExpression; */ public class SuggestedParenthesisChecker extends AbstractIndexAstChecker { private static final String ER_ID = "org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem"; //$NON-NLS-1$ + private static final String PARAM_NOT = "paramNot"; public void processAst(IASTTranslationUnit ast) { // traverse the ast using the visitor pattern. @@ -50,7 +52,7 @@ public class SuggestedParenthesisChecker extends AbstractIndexAstChecker { if (isInParentesis(expression)) return PROCESS_CONTINUE; if (precedence == 2) { // unary not - if (isUsedAsOperand(expression)) { + if (isParamNot() && isUsedAsOperand(expression)) { reportProblem(ER_ID, expression); return PROCESS_SKIP; } @@ -114,4 +116,16 @@ public class SuggestedParenthesisChecker extends AbstractIndexAstChecker { } return false; } + public boolean isParamNot(){ + return (Boolean) getPreference(getProblemById(ER_ID, getFile()), PARAM_NOT); + } + /* (non-Javadoc) + * @see org.eclipse.cdt.codan.core.model.AbstractCheckerWithProblemPreferences#initPreferences(org.eclipse.cdt.codan.core.model.IProblemWorkingCopy) + */ + @Override + public void initPreferences(IProblemWorkingCopy problem) { + super.initPreferences(problem); + addPreference(problem, PARAM_NOT, "Suggest parentesis around not operator", Boolean.FALSE); + + } }