diff options
21 files changed, 344 insertions, 185 deletions
diff --git a/codan/org.eclipse.cdt.codan.core/.settings/org.eclipse.jdt.core.prefs b/codan/org.eclipse.cdt.codan.core/.settings/org.eclipse.jdt.core.prefs index 3bb329ccc8a..dc332d118a6 100644 --- a/codan/org.eclipse.cdt.codan.core/.settings/org.eclipse.jdt.core.prefs +++ b/codan/org.eclipse.cdt.codan.core/.settings/org.eclipse.jdt.core.prefs @@ -1,4 +1,4 @@ -#Thu Mar 18 10:02:03 EDT 2010 +#Sun May 30 20:25:13 EDT 2010 eclipse.preferences.version=1 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 @@ -7,6 +7,7 @@ org.eclipse.jdt.core.compiler.compliance=1.5 org.eclipse.jdt.core.compiler.debug.lineNumber=generate org.eclipse.jdt.core.compiler.debug.localVariable=generate org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.doc.comment.support=enabled org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning org.eclipse.jdt.core.compiler.problem.assertIdentifier=error org.eclipse.jdt.core.compiler.problem.autoboxing=ignore @@ -28,10 +29,22 @@ org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore +org.eclipse.jdt.core.compiler.problem.invalidJavadoc=warning +org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled +org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled +org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled +org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=public org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=warning +org.eclipse.jdt.core.compiler.problem.missingJavadocComments=warning +org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled +org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public +org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag +org.eclipse.jdt.core.compiler.problem.missingJavadocTags=warning +org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled +org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning @@ -49,13 +62,14 @@ org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning +org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning -org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning +org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore @@ -65,6 +79,7 @@ org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverridin org.eclipse.jdt.core.compiler.problem.unusedImport=error org.eclipse.jdt.core.compiler.problem.unusedLabel=warning org.eclipse.jdt.core.compiler.problem.unusedLocal=warning +org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore org.eclipse.jdt.core.compiler.problem.unusedParameter=warning org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled diff --git a/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/AbstractChecker.java b/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/AbstractChecker.java index ccdfe9297a6..ddd24f62f96 100644 --- a/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/AbstractChecker.java +++ b/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/AbstractChecker.java @@ -24,6 +24,9 @@ import org.eclipse.core.resources.IResource; public abstract class AbstractChecker implements IChecker { protected String name; + /** + * Default constructor + */ public AbstractChecker() { } @@ -39,15 +42,15 @@ public abstract class AbstractChecker implements IChecker { * Reports a simple problem for given file and line * * @param id - * - problem id + * - problem id * @param file - * - file + * - file * @param lineNumber - * - line + * - line * @param args - * - problem arguments, if problem does not define error message - * it will be error message (not recommended because of - * internationalization) + * - problem arguments, if problem does not define error message + * it will be error message (not recommended because of + * internationalization) */ public void reportProblem(String id, IFile file, int lineNumber, Object... args) { @@ -60,9 +63,9 @@ public abstract class AbstractChecker implements IChecker { * specific file * * @param id - * - problem id + * - problem id * @param file - * - file in scope + * - file in scope * @return problem instance */ public IProblem getProblemById(String id, IResource file) { @@ -78,11 +81,11 @@ public abstract class AbstractChecker implements IChecker { * from problem definition * * @param id - * - problem id + * - problem id * @param file - * - file + * - file * @param lineNumber - * - line + * - line */ public void reportProblem(String id, IFile file, int lineNumber) { getProblemReporter().reportProblem(id, @@ -109,9 +112,9 @@ public abstract class AbstractChecker implements IChecker { * Convenience method to create and return instance of IProblemLocation * * @param file - * - file where problem is found + * - file where problem is found * @param line - * - line number 1-relative + * - line number 1-relative * @return instance of IProblemLocation */ protected IProblemLocation createProblemLocation(IFile file, int line) { @@ -123,12 +126,12 @@ public abstract class AbstractChecker implements IChecker { * Convenience method to create and return instance of IProblemLocation * * @param file - * - file where problem is found + * - file where problem is found * @param startChar - * - start char of the problem in the file, is zero-relative + * - 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. + * - end char of the problem in the file, is zero-relative and + * exclusive. * @return instance of IProblemLocation */ protected IProblemLocation createProblemLocation(IFile file, int startChar, @@ -145,6 +148,13 @@ public abstract class AbstractChecker implements IChecker { return this instanceof IRunnableInEditorChecker; } + /** + * report a problem + * + * @param problemId - id of a problem + * @param loc - problem location + * @param args - extra problem arguments + */ public void reportProblem(String problemId, IProblemLocation loc, Object... args) { getProblemReporter().reportProblem(problemId, loc, args); diff --git a/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/AbstractCheckerWithProblemPreferences.java b/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/AbstractCheckerWithProblemPreferences.java index 1600da6007b..b58156f3826 100644 --- a/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/AbstractCheckerWithProblemPreferences.java +++ b/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/AbstractCheckerWithProblemPreferences.java @@ -13,6 +13,7 @@ package org.eclipse.cdt.codan.core.model; import java.util.Collection; import java.util.Iterator; +import org.eclipse.cdt.codan.core.param.AbstractProblemPreference; import org.eclipse.cdt.codan.core.param.BasicProblemPreference; import org.eclipse.cdt.codan.core.param.FileScopeProblemPreference; import org.eclipse.cdt.codan.core.param.IProblemPreference; @@ -26,7 +27,7 @@ import org.eclipse.core.runtime.IPath; * AbstarctChecker that has extra methods to simplify adding problem * preferences. * Checker can produce several problems, but preferences are per problem. - * Shared are not supported now. + * Sharing preferences between problems is not supported now. */ public abstract class AbstractCheckerWithProblemPreferences extends AbstractChecker implements ICheckerWithPreferences { @@ -39,8 +40,11 @@ public abstract class AbstractCheckerWithProblemPreferences extends } /** - * @param problem - * @return + * Scope preference - special preference that all file checkers should have, + * it allows user to include/exclude files for this specific problem. + * + * @param problem - problem for which scope preference is need + * @return scope problem preference, null if not defined */ public FileScopeProblemPreference getScopePreference(IProblem problem) { FileScopeProblemPreference scope = (FileScopeProblemPreference) getTopLevelPreferenceMap( @@ -52,9 +56,11 @@ public abstract class AbstractCheckerWithProblemPreferences extends * User can scope out some resources for this checker. Checker can use this * call to test if it should run on this resource at all or not. Test should * be done within processResource method not in enabledInContext. + * This test uses user "scope" preference for the all problems that this + * checker can produce. * - * @param res - * @return + * @param res - resource to test on + * @return true if checker should report problems, fails otherwise. */ public boolean shouldProduceProblems(IResource res) { Collection<IProblem> refProblems = getRuntime().getChechersRegistry() @@ -70,6 +76,21 @@ public abstract class AbstractCheckerWithProblemPreferences extends return false; } + /** + * User can scope out some resources for this checker. Checker can use this + * call to test if it should run on this resource at all or produce a + * specific problem on this resource. Test should + * be done within processResource method not in enabledInContext, or just + * before printing of a problem. + * This test uses user "scope" preference for the given problem. If scope is + * not defined preference it returns true. + * + * @param problem - problem to test for + * @param resource - resource to test on + * + * @return true if problem should be report for given resource, fails + * otherwise. + */ public boolean shouldProduceProblem(IProblem problem, IPath resource) { FileScopeProblemPreference scope = getScopePreference(problem); if (scope == null) @@ -89,13 +110,13 @@ public abstract class AbstractCheckerWithProblemPreferences extends * Add a parameter * * @param problem - * - problem that has parameter + * - problem that has parameter * @param key - * - parameter key + * - parameter key * @param label - * - parameter label - user visible + * - parameter label - user visible * @param defaultValue - * - parameter default value + * - parameter default value * @return - parameter info object */ public IProblemPreference addPreference(IProblemWorkingCopy problem, @@ -109,15 +130,16 @@ public abstract class AbstractCheckerWithProblemPreferences extends } /** - * Add preference of type list with default string type, list is empty by + * Add preference of type list of strings, list is empty by * default * * @param problem - * - problem + * - problem * @param key - * - preference key + * - preference key * @param label - * - preference label + * - preference label + * @param itemLabel * @return preference instance of of the list, can be used to add default * values or set different element type * @@ -132,18 +154,30 @@ public abstract class AbstractCheckerWithProblemPreferences extends return (ListProblemPreference) map.addChildDescriptor(list); } + /** + * Add preference for the given problem with default value + * + * @param problem + * @param pref - preference + * @param defaultValue - default value of the preference + * @return added preference + */ public IProblemPreference addPreference(IProblemWorkingCopy problem, - IProblemPreference info, Object defaultValue) { + IProblemPreference pref, Object defaultValue) { MapProblemPreference map = getTopLevelPreferenceMap(problem); - map.addChildDescriptor(info); - setDefaultPreferenceValue(problem, info.getKey(), defaultValue); - return info; + String key = pref.getKey(); + pref = map.addChildDescriptor(pref); + setDefaultPreferenceValue(problem, key, defaultValue); + return pref; } /** - * @param problem - * @param key - * @param defaultValue + * Convenience method for setting default preference value for checker that + * uses "map" as top level problem preference. + * + * @param problem - problem for which to set default value for a prefence + * @param key - preference key + * @param defaultValue - value of preference to be set */ protected void setDefaultPreferenceValue(IProblemWorkingCopy problem, String key, Object defaultValue) { @@ -153,14 +187,20 @@ public abstract class AbstractCheckerWithProblemPreferences extends } /** + * Return "map" problem preference for a give problem, if problem + * has preference different than a map, it will throw ClassCastException. + * If top level preference does not exist create a map preference with name + * "params" + * and return it. + * * @param problem - * @return + * @return top level preference if it is a map */ protected MapProblemPreference getTopLevelPreferenceMap(IProblem problem) { MapProblemPreference map = (MapProblemPreference) problem .getPreference(); if (map == null) { - map = new MapProblemPreference("params", ""); //$NON-NLS-1$ //$NON-NLS-2$ + map = new MapProblemPreference(AbstractProblemPreference.PARAM, ""); //$NON-NLS-1$ if (problem instanceof IProblemWorkingCopy) { ((IProblemWorkingCopy) problem).setPreference(map); } @@ -169,11 +209,12 @@ public abstract class AbstractCheckerWithProblemPreferences extends } /** - * Return value for the key in the top level preference map + * Returns value of the preference for the key in the top level + * preference map for the given problem * - * @param problem - * @param key - * @return + * @param problem - problem for which to get the preference + * @param key - preference key + * @return value of the preference */ public Object getPreference(IProblem problem, String key) { return ((MapProblemPreference) problem.getPreference()) diff --git a/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/AbstractProblemLocation.java b/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/AbstractProblemLocation.java index f8bce445aa6..7a0ff608174 100644 --- a/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/AbstractProblemLocation.java +++ b/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/AbstractProblemLocation.java @@ -52,6 +52,11 @@ public abstract class AbstractProblemLocation implements IProblemLocation { return extra; } + /** + * Sets extra data for the problem location + * + * @param data + */ public void setData(Object data) { this.extra = data; } @@ -65,19 +70,15 @@ public abstract class AbstractProblemLocation implements IProblemLocation { return file; } - /* - * (non-Javadoc) - * - * @see org.eclipse.cdt.codan.core.model.IProblemLocation#getLine() + /** + * Problem line number referenced in problem view in location field */ public int getLineNumber() { return getStartingLineNumber(); } - /* - * (non-Javadoc) - * - * @see org.eclipse.cdt.codan.core.model.IProblemLocation#getStartLine() + /** + * @return line number where problem starts */ public int getStartingLineNumber() { return line; diff --git a/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/CodanSeverity.java b/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/CodanSeverity.java index 2655b02cced..72bd866c674 100644 --- a/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/CodanSeverity.java +++ b/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/CodanSeverity.java @@ -14,21 +14,36 @@ import org.eclipse.core.resources.IMarker; /** * - * Represents Severity of the codan problem. It is directly mapped to markers severity, + * Represents Severity of the codan problem. It is directly mapped to markers + * severity, * therefore not intended to be extended. * * @noextend This class is not intended to be extended by clients. * @noinstantiate This class is not intended to be instantiated by clients. - * + * */ public enum CodanSeverity { - Info(IMarker.SEVERITY_INFO), Warning(IMarker.SEVERITY_WARNING), Error(IMarker.SEVERITY_ERROR); + /** + * Info severity + */ + Info(IMarker.SEVERITY_INFO), + /** + * Warning severity + */ + Warning(IMarker.SEVERITY_WARNING), + /** + * Error severity + */ + Error(IMarker.SEVERITY_ERROR); private int value; private CodanSeverity(int value) { this.value = value; } + /** + * @return int value of the severity + */ public int intValue() { return value; } diff --git a/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/IChecker.java b/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/IChecker.java index 394b55f4b8b..a2e0a8d503a 100644 --- a/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/IChecker.java +++ b/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/IChecker.java @@ -13,10 +13,8 @@ package org.eclipse.cdt.codan.core.model; import org.eclipse.core.resources.IResource; /** - * Interface that checker must implement. CDT Checker must be able to process a - * resource. - * - * Clients may implement and extend this interface. + * Interface that checker must implement (through extending directly or + * indirectly {@link AbstractChecker}. * * <p> * <strong>EXPERIMENTAL</strong>. This class or interface has been added as part @@ -26,33 +24,36 @@ import org.eclipse.core.resources.IResource; * * @noextend This interface is not intended to be extended by clients. * @noimplement This interface is not intended to be implemented by clients. - * Extend AbstractChecker class instead. + * Extend {@link AbstractChecker} class instead. */ public interface IChecker { /** * Main method that checker should implement that actually detects errors * * @param resource - * - resource to run on - * @return true if need to traverse children + * - resource to run on + * @return true if framework should traverse children of the resource and + * run this checkers on them again */ boolean processResource(IResource resource); /** * Implement this method to trim down type of resource you are interested - * in, usually it will be c/c++ files only + * in, usually it will be c/c++ files only. This method should be + * independent from current user preferences. * * @param resource - * - resource to run on - * @return + * - resource to run on + * @return - true if checker should be run on this resource */ boolean enabledInContext(IResource resource); /** * Checker must implement this method to determine if it can run in editor - * "as you type", checker must be really light weight to run in this mode. - * Checker must also must implement IRunnableInEditorChecker if it returns - * true. Checker can return false if check is non-trivial and takes a long + * "as you type". Checker must be really light weight to run in this mode. + * If it returns true, checker must also implement + * {@link IRunnableInEditorChecker}. + * Checker should return false if check is non-trivial and takes a long * time. * * @return true if need to be run in editor as user types, and false diff --git a/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/ICheckerWithPreferences.java b/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/ICheckerWithPreferences.java index b8d9f41f2e3..472a9b41c1f 100644 --- a/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/ICheckerWithPreferences.java +++ b/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/ICheckerWithPreferences.java @@ -13,8 +13,9 @@ package org.eclipse.cdt.codan.core.model; /** * Interface for checker with parameters, if checker implements this interface * method would be called on initialization so checker has a chance to set - * default values for its parameters - * <p> + * default values for its parameters. It is recommended to use + * {@link AbstractCheckerWithProblemPreferences} insted of implementing it + * directly.<p> * <strong>EXPERIMENTAL</strong>. 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. @@ -28,7 +29,7 @@ public interface ICheckerWithPreferences { * parameters. * * @param problem - * - instance of problem working copy + * - instance of problem working copy */ void initPreferences(IProblemWorkingCopy problem); } diff --git a/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/ICheckersRegistry.java b/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/ICheckersRegistry.java index 677489b4cf8..53bc605b169 100644 --- a/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/ICheckersRegistry.java +++ b/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/ICheckersRegistry.java @@ -27,36 +27,37 @@ public interface ICheckersRegistry extends Iterable<IChecker> { /** * Iterator for registered checkers * - * @return + * @return iterator for registered checkers */ - public abstract Iterator<IChecker> iterator(); + public Iterator<IChecker> iterator(); /** - * Add another checker + * Add a checker * - * @param checker + * @param checker instance */ - public abstract void addChecker(IChecker checker); + public void addChecker(IChecker checker); /** - * Add problem p with default category by category id into default profile, - * category must exists in default profile + * Add problem p into a category defined by a category id into default + * profile, category must exists in default profile * * @param p - * - problem + * - problem * @param categoryId - * - category id + * - category id */ - public abstract void addProblem(IProblem p, String categoryId); + public void addProblem(IProblem p, String categoryId); /** - * Add subcategory with id categoryId into parent category, if parent does - * not exist in default, profile - if not will be added to the root + * Add subcategory category into parent category with the id of + * parentCategoryId, if parent does not exist in the default profile or it + * is a null - it will be added to the root * * @param category - * - new category + * - new category * @param parentCategoryId - * - parent category id + * - parent category id */ public abstract void addCategory(IProblemCategory category, String parentCategoryId); @@ -67,9 +68,9 @@ public interface ICheckersRegistry extends Iterable<IChecker> { * enabled. * * @param c - * - checker + * - checker * @param p - * - problem + * - problem */ public void addRefProblem(IChecker c, IProblem p); @@ -77,55 +78,57 @@ public interface ICheckersRegistry extends Iterable<IChecker> { * Return collection of problem that this checker can produce * * @param checker - * @return + * @return collection of problems */ public Collection<IProblem> getRefProblems(IChecker checker); /** - * Get default profile, default profile is kind of "Installation Default". - * Always the same, comes from default in checker extensions + * Default profile is kind of "Installation Default". + * Always the same, comes from defaults in checker extensions or APIs added * - * @return + * @return default profile */ - public abstract IProblemProfile getDefaultProfile(); + public IProblemProfile getDefaultProfile(); /** * Get workspace profile. User can change setting for workspace profile. * - * @return profile + * @return workspace profile */ - public abstract IProblemProfile getWorkspaceProfile(); + public IProblemProfile getWorkspaceProfile(); /** - * Get resource profile. For example given directory can have different - * profile than parent project. + * Get resource profile. For example given project can have different + * profile than a workspace. * * @param element - * - resource - * @return profile + * - resource + * @return resource profile */ - public abstract IProblemProfile getResourceProfile(IResource element); + public IProblemProfile getResourceProfile(IResource element); /** * Returns profile working copy for given resource element. (If profile is * not specified for given element it will search for parent resource and so - * on). + * on). If you planning on editing it this method should be used instead of + * getResourceProfile. You have to save your changes after updating a + * working copy, using {@link #updateProfile(IResource, IProblemProfile)} + * method. * + * @noreference This method is not intended to be referenced by clients. * @param element - * @return + * @return resource profile */ - public abstract IProblemProfile getResourceProfileWorkingCopy( - IResource element); + public IProblemProfile getResourceProfileWorkingCopy(IResource element); /** * Set profile for resource. * * @noreference This method is not intended to be referenced by clients. * @param resource - * - resource + * - resource * @param profile - * - problems profile + * - problems profile */ - public abstract void updateProfile(IResource resource, - IProblemProfile profile); + public void updateProfile(IResource resource, IProblemProfile profile); }
\ No newline at end of file diff --git a/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/ICodanBuilder.java b/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/ICodanBuilder.java index 597c29211c4..c4c2f2eda89 100644 --- a/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/ICodanBuilder.java +++ b/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/ICodanBuilder.java @@ -14,10 +14,10 @@ import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.IProgressMonitor; /** - * Interface for "Codan Builder". Clients can cann processResource method to - * traverse the resource tree, calling all the checker (this interface allows - * to call framework without using UI). You can obtain instance of this - * class as CodanRuntime.getInstance().getBuilder() + * Interface for "Codan Builder". Clients can call processResource method to + * traverse the resource tree. It will be calling all the checkers (this + * interface allows to call framework without using UI). You can obtain instance + * of this class as CodanRuntime.getInstance().getBuilder() * * @noextend This interface is not intended to be extended by clients. * @noimplement This interface is not intended to be implemented by clients. @@ -25,6 +25,7 @@ import org.eclipse.core.runtime.IProgressMonitor; public interface ICodanBuilder { /** * Run code analysis on given resource + * * @param resource - resource to process * @param monitor - progress monitor */ diff --git a/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/IProblem.java b/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/IProblem.java index 0c7fc0deaec..69775fe7625 100644 --- a/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/IProblem.java +++ b/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/IProblem.java @@ -17,10 +17,10 @@ import org.eclipse.cdt.codan.core.param.IProblemPreference; * "Null Pointer Dereference" is a problem. It has user visible Name and Message * (translatable), as well as some other parameters, changeable by user such as * enablement, severity and so on. Same problem cannot have two severities - * determined by runtime. If it is the case - two Problem should be created - * (i.e. one for error and one for warning). + * determined by runtime. If it is the case - two Problems should be created + * (i.e. one for error and one for warning). All of problem attributes are + * defined in a checker extension point. * - * Clients may implement and extend this interface. * <p> * <strong>EXPERIMENTAL</strong>. 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 @@ -33,6 +33,8 @@ import org.eclipse.cdt.codan.core.param.IProblemPreference; public interface IProblem extends IProblemElement { /** * Name of the problem - user visible "title", not the message + * + * @return title of the problem */ String getName(); @@ -40,7 +42,7 @@ public interface IProblem extends IProblemElement { * Unique problem id. Should be qualified by plugin name to maintain * uniqueness. * - * @return + * @return unique problem id */ String getId(); @@ -66,25 +68,24 @@ public interface IProblem extends IProblemElement { String getMessagePattern(); /** - * Get root preference descriptor - contains description of types of all the - * parameters or null if not defined (used by ui to generate user controls - * for changing parameters) + * Get root preference descriptor or null if not defined (used by ui to + * generate user controls for changing parameters) * - * @return + * @return root preference or null */ public IProblemPreference getPreference(); /** * Get short description of a problem * - * @return + * @return description */ public String getDescription(); /** * Return marker id for the problem * - * @return + * @return marker id */ public String getMarkerType(); } diff --git a/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/IProblemCategory.java b/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/IProblemCategory.java index 64bba6e2c97..da5466ba2e5 100644 --- a/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/IProblemCategory.java +++ b/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/IProblemCategory.java @@ -11,30 +11,35 @@ package org.eclipse.cdt.codan.core.model; /** - * Problem category. + * Problem category. Allows to group problems. * <p> -* <strong>EXPERIMENTAL</strong>. 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. -* </p> - * Clients may extend and implement this interface. + * <strong>EXPERIMENTAL</strong>. 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. + * </p> + * + * @noextend This interface is not intended to be extended by clients. + * @noimplement This interface is not intended to be implemented by clients. */ public interface IProblemCategory extends IProblemElement { /** * Category name + * + * @return category name */ String getName(); /** * Unique category id + * * @return id */ String getId(); /** * Category children (other categories or problems) - * @return + * + * @return children of the category */ IProblemElement[] getChildren(); - } 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 eb1f22f919e..51f8c3c7dad 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 @@ -27,9 +27,9 @@ public interface IProblemLocationFactory { * Create and return instance of IProblemLocation * * @param file - * - file where problem is found + * - file where problem is found * @param line - * - line number where problem is found, starts with 1 + * - line number where problem is found, starts with 1 * @return instance of IProblemLocation */ public IProblemLocation createProblemLocation(IFile file, int line); @@ -38,12 +38,12 @@ public interface IProblemLocationFactory { * Create and return instance of IProblemLocation * * @param file - * - file where problem is found + * - file where problem is found * @param startChar - * - start char of the problem in the file, is zero-relative + * - 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. + * - end char of the problem in the file, is zero-relative and + * exclusive. * @return instance of IProblemLocation */ public IProblemLocation createProblemLocation(IFile file, int startChar, @@ -52,17 +52,16 @@ public interface IProblemLocationFactory { /** * 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 astFile - 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) + * - start line number (for visualisation purposes) * @return instance of IProblemLocation */ public IProblemLocation createProblemLocation(IFile astFile, - int nodeOffset, int i, int line); + int startChar, int endChar, int line); }
\ No newline at end of file diff --git a/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/IProblemProfile.java b/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/IProblemProfile.java index 3349aaf4bb5..9aeb2c885f5 100644 --- a/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/IProblemProfile.java +++ b/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/IProblemProfile.java @@ -10,19 +10,26 @@ *******************************************************************************/ package org.eclipse.cdt.codan.core.model; +import org.eclipse.cdt.codan.internal.core.CheckersRegistry; + /** - * Problem Profile contains tree of categories and problems. For the user - * the profile is quick way to switch between problem sets depending on the + * Problem Profile contains tree of categories and problems. For the user + * the profile is quick way to switch between problem sets depending on the * task he is doing (i.e. find real bugs, vs doing code style report) - * User can set different profiles for different projects. - * Profiles can have different categories and different problem sets, - * problems with the same id can have different severities/enablement in different profiles. - * Category tree can have few reference to a same problem, but only instance of Problem - * with the same id can exist in the same profile (i.e. two category can have same problem listed in both, - * but they both should point to the same problem instance). - * - * To obtain read-only profile use method {@link CheckersRegistry#getResourceProfile, - * CheckersRegistry#getDefaultProfile() or CheckersRegistry#getWorkspaceProfile()} + * User can set different profiles for different projects. + * Profiles can have different categories and different problem sets, + * problems with the same id can have different severities/enablement in + * different profiles. + * Category tree can have few reference to a same problem, but only instance of + * Problem + * with the same id can exist in the same profile (i.e. two category can have + * same problem listed in both, + * but they both should point to the same problem instance). + * + * To obtain read-only profile use method + * {@link CheckersRegistry#getResourceProfile}, + * {@link CheckersRegistry#getDefaultProfile()} or + * {@link CheckersRegistry#getWorkspaceProfile()} * * @noextend This interface is not intended to be extended by clients. * @noimplement This interface is not intended to be implemented by clients. @@ -37,7 +44,7 @@ public interface IProblemProfile extends IProblemElement { * Find and return problem by id if it contained in this profile * * @param id - * - problem id + * - problem id * @return problem instance */ IProblem findProblem(String id); @@ -46,13 +53,14 @@ public interface IProblemProfile extends IProblemElement { * Find and return category by id if it is contained in this profile * * @param id - * - category id + * - category id * @return category instance */ IProblemCategory findCategory(String id); /** - * Get all problems defined in this profile (if problem duplicated in a category tree, it returns only one instance of each) + * Get all problems defined in this profile (if problem duplicated in a + * category tree, it returns only one instance of each) * * @return array of problems defined in profile */ diff --git a/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/IProblemReporter.java b/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/IProblemReporter.java index 86af12323df..f7d6407dd21 100644 --- a/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/IProblemReporter.java +++ b/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/IProblemReporter.java @@ -13,7 +13,6 @@ package org.eclipse.cdt.codan.core.model; /** * IProblemReporter - interface to report problems * - * Clients may implement and extend this interface * <p> * <strong>EXPERIMENTAL</strong>. This class or interface has been added as * part of a work in progress. There is no guarantee that this API will @@ -21,14 +20,22 @@ package org.eclipse.cdt.codan.core.model; * </p> */ public interface IProblemReporter { + /** + * id of generic codan problem marker + */ public static final String GENERIC_CODE_ANALYSIS_MARKER_TYPE = "org.eclipse.cdt.codan.core.codanProblem"; //$NON-NLS-1$ /** - * Report a problem with "problemId" id on the location determined by "loc", + * Report a problem with "problemId" id on the location determined by "loc", * using problem specific error message customized by args. + * * @param problemId - id of the problem registered with a checker - * @param loc - location object - * @param args - custom arguments, can be null, in this case default message is reported + * @param loc - location object, can be created using + * getRuntime().getProblemLocationFactory().createProblemLocation + * methods + * @param args - custom arguments, can be null, in this case default message + * is reported */ - public void reportProblem(String problemId, IProblemLocation loc, Object... args); + public void reportProblem(String problemId, IProblemLocation loc, + Object... args); }
\ No newline at end of file diff --git a/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/IProblemWorkingCopy.java b/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/IProblemWorkingCopy.java index df586b764ac..2059964bc36 100644 --- a/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/IProblemWorkingCopy.java +++ b/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/IProblemWorkingCopy.java @@ -28,7 +28,7 @@ public interface IProblemWorkingCopy extends IProblem { * in profile not by checker when printing problems. * * @param sev - * - codan severity + * - codan severity */ void setSeverity(CodanSeverity sev); @@ -36,7 +36,7 @@ public interface IProblemWorkingCopy extends IProblem { * Set checker enablement. * * @param enabled - * - true if problem is enabled in profile + * - true if problem is enabled in profile */ void setEnabled(boolean enabled); @@ -46,7 +46,7 @@ public interface IProblemWorkingCopy extends IProblem { * pattern should be set in checker extension * * @param messagePattern - * - java style message patter i.e. "Variable {0} is never used" + * - java style message patter i.e. "Variable {0} is never used" */ void setMessagePattern(String messagePattern); @@ -55,6 +55,8 @@ public interface IProblemWorkingCopy extends IProblem { * initialization only, which would the default. User control this values * through ui later. * + * @param pref - preference to set + * */ public void setPreference(IProblemPreference pref); @@ -62,7 +64,7 @@ public interface IProblemWorkingCopy extends IProblem { * Set problem description * * @param desc - * - problem description - short version, but longer than name + * - problem description - short version, but longer than name */ public void setDescription(String desc); } diff --git a/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/cfg/IBasicBlock.java b/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/cfg/IBasicBlock.java index f1414733349..ea3ed632c9a 100644 --- a/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/cfg/IBasicBlock.java +++ b/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/cfg/IBasicBlock.java @@ -1,21 +1,33 @@ package org.eclipse.cdt.codan.core.model.cfg; - /** - * - * Control flow graph basic block node - superinterface of all nodes. Each node - * has iterator and size over incoming and outgoing arc + * Control flow graph basic block node - super interface of all nodes. + * It has set on incoming nodes and outgoing nodes. * <p/> - * The following are speciazed versions of the nodes: - * <li>{@link IStartNode} - start node of the graph - * <li>{@link I} */ public interface IBasicBlock { + /** + * Incoming nodes - nodes that executed immediately before this one + * + * @return array of incoming nodes, empty array of none + */ IBasicBlock[] getIncomingNodes(); + /** + * Outgoing nodes - where control would be passed. Can be more than one if + * node is condition. + * + * @return array of outgoing nodes, empty of none + */ IBasicBlock[] getOutgoingNodes(); + /** + * @return size of array of incoming nodes + */ int getIncomingSize(); + /** + * @return size of array of outgoing nodes + */ int getOutgoingSize(); } diff --git a/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/cfg/IDecisionNode.java b/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/cfg/IDecisionNode.java index bb81e673efc..eda008cea0c 100644 --- a/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/cfg/IDecisionNode.java +++ b/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/cfg/IDecisionNode.java @@ -10,7 +10,7 @@ public interface IDecisionNode extends IBasicBlock, ISingleIncoming { /** * Node where branches of decision node merge * - * @return + * @return the "merge" node */ IConnectorNode getMergeNode(); } diff --git a/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/param/AbstractProblemPreference.java b/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/param/AbstractProblemPreference.java index 0236c721524..cd72d0acba8 100644 --- a/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/param/AbstractProblemPreference.java +++ b/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/param/AbstractProblemPreference.java @@ -21,7 +21,10 @@ import java.io.StreamTokenizer; * */ public abstract class AbstractProblemPreference implements IProblemPreference { - public static final String PARAM = "param"; //$NON-NLS-1$ + /** + * default key for a preference + */ + public static final String PARAM = "params"; //$NON-NLS-1$ private String key = PARAM; private String label = ""; //$NON-NLS-1$ private String toolTip = null; @@ -44,6 +47,11 @@ public abstract class AbstractProblemPreference implements IProblemPreference { return uiInfo; } + /** + * Set preference key for itself + * + * @param key + */ public void setKey(String key) { if (key == null) throw new NullPointerException("key"); //$NON-NLS-1$ @@ -68,16 +76,31 @@ public abstract class AbstractProblemPreference implements IProblemPreference { return true; } + /** + * Sets a label for UI control + * + * @param label + */ public void setLabel(String label) { if (label == null) throw new NullPointerException("Label cannot be null"); //$NON-NLS-1$ this.label = label; } + /** + * Sets tooltip for ui control. Not supported now. + * + * @param tooltip + */ public void setToolTip(String tooltip) { this.toolTip = tooltip; } + /** + * Sets uiinfo for ui control. Not supported now. + * + * @param uiinfo + */ public void setUiInfo(String uiinfo) { this.uiInfo = uiinfo; } @@ -141,7 +164,6 @@ public abstract class AbstractProblemPreference implements IProblemPreference { /** * @param tokenizer - * @return * @throws IOException */ public abstract void importValue(StreamTokenizer tokenizer) diff --git a/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/param/BasicProblemPreference.java b/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/param/BasicProblemPreference.java index 08a20248363..b5f22351e8b 100644 --- a/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/param/BasicProblemPreference.java +++ b/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/param/BasicProblemPreference.java @@ -29,6 +29,11 @@ public class BasicProblemPreference extends AbstractProblemPreference { return type; } + /** + * Set preferene type + * + * @param type + */ public void setType(PreferenceType type) { if (type == null) throw new NullPointerException("Type cannot be null"); //$NON-NLS-1$ @@ -44,7 +49,6 @@ public class BasicProblemPreference extends AbstractProblemPreference { * - label to be shown to user * @param type * - parameter type - * @return */ public BasicProblemPreference(String key, String label, PreferenceType type) { this(key, label); @@ -58,7 +62,6 @@ public class BasicProblemPreference extends AbstractProblemPreference { * - property id (use in actual property hash of a checker) * @param label * - label to be shown to user - * @return */ public BasicProblemPreference(String key, String label) { setKey(key); diff --git a/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/param/FileScopeProblemPreference.java b/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/param/FileScopeProblemPreference.java index c10d9a5e61c..8ec3b870200 100644 --- a/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/param/FileScopeProblemPreference.java +++ b/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/param/FileScopeProblemPreference.java @@ -66,6 +66,7 @@ public class FileScopeProblemPreference extends AbstractProblemPreference { * Set attribute to a value. Possible keys are EXCUSION and INCLUSION * * @param key + * @param value */ public void setAttribute(String key, IPath[] value) { if (key == EXCLUSION) diff --git a/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/param/IProblemPreferenceCompositeDescriptor.java b/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/param/IProblemPreferenceCompositeDescriptor.java index fd792bd08f1..392e0a292fc 100644 --- a/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/param/IProblemPreferenceCompositeDescriptor.java +++ b/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/param/IProblemPreferenceCompositeDescriptor.java @@ -22,19 +22,30 @@ public interface IProblemPreferenceCompositeDescriptor { * name of key. For the "list" type key is the number (index). * * @param key - * - name of the subdescriptor. - * @return + * - name of the subdescriptor. + * @return child preference of the given key */ IProblemPreference getChildDescriptor(String key); /** * Available for composite types. Returns array of children. * - * @return + * @return array of children. 0 size of none. */ IProblemPreference[] getChildDescriptors(); - IProblemPreference addChildDescriptor(IProblemPreference info); + /** + * Add preference + * + * @param preference + * @return added preference + */ + IProblemPreference addChildDescriptor(IProblemPreference preference); - void removeChildDescriptor(IProblemPreference info); + /** + * Remove preference + * + * @param preference + */ + void removeChildDescriptor(IProblemPreference preference); } |