diff options
author | Elliott Baron <ebaron@fedoraproject.org> | 2009-08-25 21:01:56 -0400 |
---|---|---|
committer | Elliott Baron <ebaron@fedoraproject.org> | 2009-08-25 21:01:56 -0400 |
commit | 0c290ae7eabb8cb32e1eb28f55cceb9e6350d596 (patch) | |
tree | ca8dda9f30ed2be55b5f06cbf59c3d29e82a8832 /org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal | |
download | codan-0c290ae7eabb8cb32e1eb28f55cceb9e6350d596.tar.gz codan-0c290ae7eabb8cb32e1eb28f55cceb9e6350d596.tar.xz codan-0c290ae7eabb8cb32e1eb28f55cceb9e6350d596.zip |
Initial commit: New file.
* .gitignore: New file.
* org.eclipse.cdt.codan.checkers.ui/.classpath: New file.
* org.eclipse.cdt.codan.checkers.ui/.project: New file.
* org.eclipse.cdt.codan.checkers.ui/.settings/CVS/Entries: New file.
* org.eclipse.cdt.codan.checkers.ui/.settings/CVS/Repository: New file.
* org.eclipse.cdt.codan.checkers.ui/.settings/CVS/Root: New file.
* org.eclipse.cdt.codan.checkers.ui/.settings/org.eclipse.jdt.core.prefs: New file.
* org.eclipse.cdt.codan.checkers.ui/CVS/Entries: New file.
* org.eclipse.cdt.codan.checkers.ui/CVS/Repository: New file.
* org.eclipse.cdt.codan.checkers.ui/CVS/Root: New file.
* org.eclipse.cdt.codan.checkers.ui/CVS/Template: New file.
* org.eclipse.cdt.codan.checkers.ui/META-INF/CVS/Entries: New file.
* org.eclipse.cdt.codan.checkers.ui/META-INF/CVS/Repository: New file.
* org.eclipse.cdt.codan.checkers.ui/META-INF/CVS/Root: New file.
* org.eclipse.cdt.codan.checkers.ui/META-INF/MANIFEST.MF: New file.
* org.eclipse.cdt.codan.checkers.ui/build.properties: New file.
* org.eclipse.cdt.codan.checkers.ui/plugin.xml: New file.
* org.eclipse.cdt.codan.checkers.ui/src/CVS/Entries: New file.
* org.eclipse.cdt.codan.checkers.ui/src/CVS/Repository: New file.
* org.eclipse.cdt.codan.checkers.ui/src/CVS/Root: New file.
* org.eclipse.cdt.codan.checkers.ui/src/org/CVS/Entries: New file.
* org.eclipse.cdt.codan.checkers.ui/src/org/CVS/Repository: New file.
* org.eclipse.cdt.codan.checkers.ui/src/org/CVS/Root: New file.
* org.eclipse.cdt.codan.checkers.ui/src/org/eclipse/CVS/Entries: New file.
* org.eclipse.cdt.codan.checkers.ui/src/org/eclipse/CVS/Repository: New file.
* org.eclipse.cdt.codan.checkers.ui/src/org/eclipse/CVS/Root: New file.
* org.eclipse.cdt.codan.checkers.ui/src/org/eclipse/cdt/CVS/Entries: New file.
* org.eclipse.cdt.codan.checkers.ui/src/org/eclipse/cdt/CVS/Repository: New file.
* org.eclipse.cdt.codan.checkers.ui/src/org/eclipse/cdt/CVS/Root: New file.
* org.eclipse.cdt.codan.checkers.ui/src/org/eclipse/cdt/codan/CVS/Entries: New file.
* org.eclipse.cdt.codan.checkers.ui/src/org/eclipse/cdt/codan/CVS/Repository: New file.
* org.eclipse.cdt.codan.checkers.ui/src/org/eclipse/cdt/codan/CVS/Root: New file.
* org.eclipse.cdt.codan.checkers.ui/src/org/eclipse/cdt/codan/checkers/CVS/Entries: New file.
* org.eclipse.cdt.codan.checkers.ui/src/org/eclipse/cdt/codan/checkers/CVS/Repository: New file.
* org.eclipse.cdt.codan.checkers.ui/src/org/eclipse/cdt/codan/checkers/CVS/Root: New file.
* org.eclipse.cdt.codan.checkers.ui/src/org/eclipse/cdt/codan/checkers/ui/CVS/Entries: New file.
* org.eclipse.cdt.codan.checkers.ui/src/org/eclipse/cdt/codan/checkers/ui/CVS/Repository: New file.
* org.eclipse.cdt.codan.checkers.ui/src/org/eclipse/cdt/codan/checkers/ui/CVS/Root: New file.
* org.eclipse.cdt.codan.checkers.ui/src/org/eclipse/cdt/codan/checkers/ui/CheckersUiActivator.java: New file.
* org.eclipse.cdt.codan.checkers.ui/src/org/eclipse/cdt/codan/checkers/ui/quickfix/CVS/Entries: New file.
* org.eclipse.cdt.codan.checkers.ui/src/org/eclipse/cdt/codan/checkers/ui/quickfix/CVS/Repository: New file.
* org.eclipse.cdt.codan.checkers.ui/src/org/eclipse/cdt/codan/checkers/ui/quickfix/CVS/Root: New file.
* org.eclipse.cdt.codan.checkers.ui/src/org/eclipse/cdt/codan/checkers/ui/quickfix/CodanProblemMarkerResolutionGenerator.java: New file.
* org.eclipse.cdt.codan.checkers.ui/src/org/eclipse/cdt/codan/checkers/ui/quickfix/QuickFixAssignmentInCondition.java: New file.
* org.eclipse.cdt.codan.checkers/.classpath: New file.
* org.eclipse.cdt.codan.checkers/.project: New file.
* org.eclipse.cdt.codan.checkers/.settings/CVS/Entries: New file.
* org.eclipse.cdt.codan.checkers/.settings/CVS/Repository: New file.
* org.eclipse.cdt.codan.checkers/.settings/CVS/Root: New file.
* org.eclipse.cdt.codan.checkers/.settings/org.eclipse.jdt.core.prefs: New file.
* org.eclipse.cdt.codan.checkers/CVS/Entries: New file.
* org.eclipse.cdt.codan.checkers/CVS/Repository: New file.
* org.eclipse.cdt.codan.checkers/CVS/Root: New file.
* org.eclipse.cdt.codan.checkers/CVS/Template: New file.
* org.eclipse.cdt.codan.checkers/META-INF/CVS/Entries: New file.
* org.eclipse.cdt.codan.checkers/META-INF/CVS/Repository: New file.
* org.eclipse.cdt.codan.checkers/META-INF/CVS/Root: New file.
* org.eclipse.cdt.codan.checkers/META-INF/MANIFEST.MF: New file.
* org.eclipse.cdt.codan.checkers/build.properties: New file.
* org.eclipse.cdt.codan.checkers/plugin.xml: New file.
* org.eclipse.cdt.codan.checkers/src/CVS/Entries: New file.
* org.eclipse.cdt.codan.checkers/src/CVS/Repository: New file.
* org.eclipse.cdt.codan.checkers/src/CVS/Root: New file.
* org.eclipse.cdt.codan.checkers/src/org/CVS/Entries: New file.
* org.eclipse.cdt.codan.checkers/src/org/CVS/Repository: New file.
* org.eclipse.cdt.codan.checkers/src/org/CVS/Root: New file.
* org.eclipse.cdt.codan.checkers/src/org/eclipse/CVS/Entries: New file.
* org.eclipse.cdt.codan.checkers/src/org/eclipse/CVS/Repository: New file.
* org.eclipse.cdt.codan.checkers/src/org/eclipse/CVS/Root: New file.
* org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/CVS/Entries: New file.
* org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/CVS/Repository: New file.
* org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/CVS/Root: New file.
* org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/CVS/Entries: New file.
* org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/CVS/Repository: New file.
* org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/CVS/Root: New file.
* org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/checkers/Activator.java: New file.
* org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/checkers/CVS/Entries: New file.
* org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/checkers/CVS/Repository: New file.
* org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/checkers/CVS/Root: New file.
* org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/checkers/CloseOpenedFilesChecker.java: New file.
* org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/checkers/sample/AssignmentInConditionChecker.java: New file.
* org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/checkers/sample/CVS/Entries: New file.
* org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/checkers/sample/CVS/Repository: New file.
* org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/checkers/sample/CVS/Root: New file.
* org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/checkers/sample/NonVirtualDestructor.java: New file.
* org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/checkers/sample/StatementHasNoEffectChecker.java: New file.
* org.eclipse.cdt.codan.core/.classpath: New file.
* org.eclipse.cdt.codan.core/.project: New file.
* org.eclipse.cdt.codan.core/.settings/CVS/Entries: New file.
* org.eclipse.cdt.codan.core/.settings/CVS/Repository: New file.
* org.eclipse.cdt.codan.core/.settings/CVS/Root: New file.
* org.eclipse.cdt.codan.core/.settings/org.eclipse.jdt.core.prefs: New file.
* org.eclipse.cdt.codan.core/CVS/Entries: New file.
* org.eclipse.cdt.codan.core/CVS/Repository: New file.
* org.eclipse.cdt.codan.core/CVS/Root: New file.
* org.eclipse.cdt.codan.core/CVS/Template: New file.
* org.eclipse.cdt.codan.core/META-INF/CVS/Entries: New file.
* org.eclipse.cdt.codan.core/META-INF/CVS/Repository: New file.
* org.eclipse.cdt.codan.core/META-INF/CVS/Root: New file.
* org.eclipse.cdt.codan.core/META-INF/MANIFEST.MF: New file.
* org.eclipse.cdt.codan.core/build.properties: New file.
* org.eclipse.cdt.codan.core/plugin.xml: New file.
* org.eclipse.cdt.codan.core/schema/CVS/Entries: New file.
* org.eclipse.cdt.codan.core/schema/CVS/Repository: New file.
* org.eclipse.cdt.codan.core/schema/CVS/Root: New file.
* org.eclipse.cdt.codan.core/schema/checkers.exsd: New file.
* org.eclipse.cdt.codan.core/src/CVS/Entries: New file.
* org.eclipse.cdt.codan.core/src/CVS/Repository: New file.
* org.eclipse.cdt.codan.core/src/CVS/Root: New file.
* org.eclipse.cdt.codan.core/src/org/CVS/Entries: New file.
* org.eclipse.cdt.codan.core/src/org/CVS/Repository: New file.
* org.eclipse.cdt.codan.core/src/org/CVS/Root: New file.
* org.eclipse.cdt.codan.core/src/org/eclipse/CVS/Entries: New file.
* org.eclipse.cdt.codan.core/src/org/eclipse/CVS/Repository: New file.
* org.eclipse.cdt.codan.core/src/org/eclipse/CVS/Root: New file.
* org.eclipse.cdt.codan.core/src/org/eclipse/cdt/CVS/Entries: New file.
* org.eclipse.cdt.codan.core/src/org/eclipse/cdt/CVS/Repository: New file.
* org.eclipse.cdt.codan.core/src/org/eclipse/cdt/CVS/Root: New file.
* org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/CVS/Entries: New file.
* org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/CVS/Repository: New file.
* org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/CVS/Root: New file.
* org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/CVS/Entries: New file.
* org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/CVS/Repository: New file.
* org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/CVS/Root: New file.
* org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/CodanApplication.java: New file.
* org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/CodanCorePlugin.java: New file.
* org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/CodanPreferencesLoader.java: New file.
* org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/CodanRuntime.java: New file.
* org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/PreferenceConstants.java: New file.
* org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/AbstractChecker.java: New file.
* org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/AbstractIndexAstChecker.java: New file.
* org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/CVS/Entries: New file.
* org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/CVS/Repository: New file.
* org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/CVS/Root: New file.
* org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/CodanSeverity.java: New file.
* org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/ICAstChecker.java: New file.
* org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/IChecker.java: New file.
* org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/ICheckersRegistry.java: New file.
* org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/ICodanAstReconciler.java: New file.
* org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/ICodanBuilder.java: New file.
* org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/IProblem.java: New file.
* org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/IProblemCategory.java: New file.
* org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/IProblemElement.java: New file.
* org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/IProblemLocation.java: New file.
* org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/IProblemProfile.java: New file.
* org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/IProblemReporter.java: New file.
* org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/ProblemLocation.java: New file.
* org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/ProblemProfile.java: New file.
* org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/CVS/Entries: New file.
* org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/CVS/Repository: New file.
* org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/CVS/Root: New file.
* org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/core/CVS/Entries: New file.
* org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/core/CVS/Repository: New file.
* org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/core/CVS/Root: New file.
* org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/core/CheckersRegisry.java: New file.
* org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/core/CodanBuilder.java: New file.
* org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/core/CodeAnlysisNature.java: New file.
* org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/core/model/CVS/Entries: New file.
* org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/core/model/CVS/Repository: New file.
* org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/core/model/CVS/Root: New file.
* org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/core/model/CodanMarkerProblemReporter.java: New file.
* org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/core/model/CodanProblem.java: New file.
* org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/core/model/CodanProblemCategory.java: New file.
* org.eclipse.cdt.codan.ui/.classpath: New file.
* org.eclipse.cdt.codan.ui/.project: New file.
* org.eclipse.cdt.codan.ui/.settings/CVS/Entries: New file.
* org.eclipse.cdt.codan.ui/.settings/CVS/Repository: New file.
* org.eclipse.cdt.codan.ui/.settings/CVS/Root: New file.
* org.eclipse.cdt.codan.ui/.settings/org.eclipse.jdt.core.prefs: New file.
* org.eclipse.cdt.codan.ui/CVS/Entries: New file.
* org.eclipse.cdt.codan.ui/CVS/Repository: New file.
* org.eclipse.cdt.codan.ui/CVS/Root: New file.
* org.eclipse.cdt.codan.ui/CVS/Template: New file.
* org.eclipse.cdt.codan.ui/META-INF/CVS/Entries: New file.
* org.eclipse.cdt.codan.ui/META-INF/CVS/Repository: New file.
* org.eclipse.cdt.codan.ui/META-INF/CVS/Root: New file.
* org.eclipse.cdt.codan.ui/META-INF/MANIFEST.MF: New file.
* org.eclipse.cdt.codan.ui/build.properties: New file.
* org.eclipse.cdt.codan.ui/plugin.xml: New file.
* org.eclipse.cdt.codan.ui/src/CVS/Entries: New file.
* org.eclipse.cdt.codan.ui/src/CVS/Repository: New file.
* org.eclipse.cdt.codan.ui/src/CVS/Root: New file.
* org.eclipse.cdt.codan.ui/src/org/CVS/Entries: New file.
* org.eclipse.cdt.codan.ui/src/org/CVS/Repository: New file.
* org.eclipse.cdt.codan.ui/src/org/CVS/Root: New file.
* org.eclipse.cdt.codan.ui/src/org/eclipse/CVS/Entries: New file.
* org.eclipse.cdt.codan.ui/src/org/eclipse/CVS/Repository: New file.
* org.eclipse.cdt.codan.ui/src/org/eclipse/CVS/Root: New file.
* org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/CVS/Entries: New file.
* org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/CVS/Repository: New file.
* org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/CVS/Root: New file.
* org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/CVS/Entries: New file.
* org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/CVS/Repository: New file.
* org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/CVS/Root: New file.
* org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/CVS/Entries: New file.
* org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/CVS/Repository: New file.
* org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/CVS/Root: New file.
* org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/CVS/Entries: New file.
* org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/CVS/Repository: New file.
* org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/CVS/Root: New file.
* org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/preferences/BuildPropertyPage.java: New file.
* org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/preferences/CVS/Entries: New file.
* org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/preferences/CVS/Repository: New file.
* org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/preferences/CVS/Root: New file.
* org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/preferences/CheckedTreeEditor.java: New file.
* org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/preferences/CodanPreferencePage.java: New file.
* org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/preferences/FieldEditorOverlayPage.java: New file.
* org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/preferences/Messages.java: New file.
* org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/preferences/Messages.properties: New file.
* org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/preferences/PreferenceInitializer.java: New file.
* org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/preferences/ProblemsTreeEditor.java: New file.
* org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/ui/Activator.java: New file.
* org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/ui/CVS/Entries: New file.
* org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/ui/CVS/Repository: New file.
* org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/ui/CVS/Root: New file.
* org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/ui/CodanCReconciler.java: New file.
* org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/ui/Startup.java: New file.
* org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/ui/actions/CVS/Entries: New file.
* org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/ui/actions/CVS/Repository: New file.
* org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/ui/actions/CVS/Root: New file.
* org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/ui/actions/RunCodeAnalysis.java: New file.
* org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/ui/actions/ToggleNatureAction.java: New file.
Diffstat (limited to 'org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal')
15 files changed, 948 insertions, 0 deletions
diff --git a/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/CVS/Entries b/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/CVS/Entries new file mode 100644 index 0000000..8d16cd3 --- /dev/null +++ b/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/CVS/Entries @@ -0,0 +1 @@ +D/core//// diff --git a/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/CVS/Repository b/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/CVS/Repository new file mode 100644 index 0000000..badff3b --- /dev/null +++ b/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/CVS/Repository @@ -0,0 +1 @@ +org.eclipse.cdt/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal diff --git a/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/CVS/Root b/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/CVS/Root new file mode 100644 index 0000000..04efa23 --- /dev/null +++ b/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/CVS/Root @@ -0,0 +1 @@ +:pserver:anonymous@dev.eclipse.org:/cvsroot/tools diff --git a/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/core/CVS/Entries b/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/core/CVS/Entries new file mode 100644 index 0000000..74cd7a6 --- /dev/null +++ b/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/core/CVS/Entries @@ -0,0 +1,4 @@ +/CheckersRegisry.java/1.1/Sat Aug 22 21:16:49 2009// +/CodanBuilder.java/1.2/Sat Aug 22 21:31:29 2009// +/CodeAnlysisNature.java/1.1/Sat Aug 22 21:16:49 2009// +D/model//// diff --git a/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/core/CVS/Repository b/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/core/CVS/Repository new file mode 100644 index 0000000..408050d --- /dev/null +++ b/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/core/CVS/Repository @@ -0,0 +1 @@ +org.eclipse.cdt/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/core diff --git a/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/core/CVS/Root b/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/core/CVS/Root new file mode 100644 index 0000000..04efa23 --- /dev/null +++ b/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/core/CVS/Root @@ -0,0 +1 @@ +:pserver:anonymous@dev.eclipse.org:/cvsroot/tools diff --git a/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/core/CheckersRegisry.java b/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/core/CheckersRegisry.java new file mode 100644 index 0000000..82ace80 --- /dev/null +++ b/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/core/CheckersRegisry.java @@ -0,0 +1,319 @@ +/******************************************************************************* + * 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.internal.core; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Iterator; + +import org.eclipse.cdt.codan.core.CodanCorePlugin; +import org.eclipse.cdt.codan.core.CodanPreferencesLoader; +import org.eclipse.cdt.codan.core.PreferenceConstants; +import org.eclipse.cdt.codan.core.model.IChecker; +import org.eclipse.cdt.codan.core.model.ICheckersRegistry; +import org.eclipse.cdt.codan.core.model.IProblem; +import org.eclipse.cdt.codan.core.model.IProblemCategory; +import org.eclipse.cdt.codan.core.model.IProblemProfile; +import org.eclipse.cdt.codan.core.model.ProblemProfile; +import org.eclipse.cdt.codan.internal.core.model.CodanProblem; +import org.eclipse.cdt.codan.internal.core.model.CodanProblemCategory; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.ProjectScope; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IConfigurationElement; +import org.eclipse.core.runtime.IExtensionPoint; +import org.eclipse.core.runtime.Platform; +import org.eclipse.core.runtime.preferences.IEclipsePreferences; + +public class CheckersRegisry implements Iterable<IChecker>, ICheckersRegistry { + private static final String EXTENSION_POINT_NAME = "checkers"; + private static final String CHECKER_ELEMENT = "checker"; + private static final String PROBLEM_ELEMENT = "problem"; + private static final String CATEGORY_ELEMENT = "category"; + private static final Object DEFAULT = "DEFAULT"; + private Collection<IChecker> checkers = new ArrayList<IChecker>(); + private static CheckersRegisry instance; + private HashMap<Object, IProblemProfile> profiles = new HashMap<Object, IProblemProfile>(); + + private CheckersRegisry() { + instance = this; + profiles.put(DEFAULT, new ProblemProfile()); + readCheckersRegistry(); + } + + private void readCheckersRegistry() { + IExtensionPoint ep = Platform.getExtensionRegistry().getExtensionPoint( + CodanCorePlugin.PLUGIN_ID, EXTENSION_POINT_NAME); + if (ep == null) + return; + IConfigurationElement[] elements = ep.getConfigurationElements(); + // process categories + for (int i = 0; i < elements.length; i++) { + IConfigurationElement configurationElement = elements[i]; + processCategories(configurationElement); + } + // process shared problems + for (int i = 0; i < elements.length; i++) { + IConfigurationElement configurationElement = elements[i]; + processProblem(configurationElement); + } + // process checkers + for (int i = 0; i < elements.length; i++) { + IConfigurationElement configurationElement = elements[i]; + processChecker(configurationElement); + } + } + + /** + * @param configurationElement + */ + private void processCategories(IConfigurationElement configurationElement) { + if (configurationElement.getName().equals(CATEGORY_ELEMENT)) { + String id = getAtt(configurationElement, "id"); + if (id == null) + return; + String name = getAtt(configurationElement, "name"); + if (name == null) + return; + CodanProblemCategory cat = new CodanProblemCategory(id, name); + String category = getAtt(configurationElement, "parentCategory", + false); + addCategory(cat, category); + } + } + + /** + * @param configurationElement + */ + private void processChecker(IConfigurationElement configurationElement) { + try { + if (configurationElement.getName().equals(CHECKER_ELEMENT)) { + String id = getAtt(configurationElement, "id"); + if (id == null) + return; + String name = getAtt(configurationElement, "name", false); + if (name == null) + name = id; + IChecker checkerObj = null; + try { + Object checker = configurationElement + .createExecutableExtension("class"); + checkerObj = (IChecker) checker; + addChecker(checkerObj); + } catch (CoreException e) { + CodanCorePlugin.log(e); + return; + } + IConfigurationElement[] children1 = configurationElement + .getChildren("problemRef"); + boolean hasRef = false; + IConfigurationElement[] children2 = configurationElement + .getChildren(PROBLEM_ELEMENT); + if (children2 != null) { + for (IConfigurationElement ref : children2) { + IProblem p = processProblem(ref); + addRefProblem(checkerObj, p); + hasRef = true; + } + } + if (children1 != null) { + for (IConfigurationElement ref : children1) { + hasRef = true; + IProblem p = getDefaultProfile().findProblem( + ref.getAttribute("refId")); + addRefProblem(checkerObj, p); + } + } + if (!hasRef) { + addProblem(new CodanProblem(id, name), null); + } + } + } catch (Exception e) { + CodanCorePlugin.log(e); + } + } + + /** + * @param configurationElement + * @return + */ + private CodanProblem processProblem( + IConfigurationElement configurationElement) { + if (configurationElement.getName().equals(PROBLEM_ELEMENT)) { + String id = getAtt(configurationElement, "id"); + if (id == null) + return null; + String name = getAtt(configurationElement, "name"); + if (name == null) + name = id; + CodanProblem p = new CodanProblem(id, name); + String category = getAtt(configurationElement, "category", false); + if (category == null) + category = "org.eclipse.cdt.codan.core.categories.ProgrammingProblems"; + addProblem(p, category); + return p; + } + return null; + } + + private static String getAtt(IConfigurationElement configurationElement, + String name) { + return getAtt(configurationElement, name, true); + } + + private static String getAtt(IConfigurationElement configurationElement, + String name, boolean req) { + String elementValue = configurationElement.getAttribute(name); + if (elementValue == null && req) + CodanCorePlugin.log("Extension " + + configurationElement.getDeclaringExtension() + .getUniqueIdentifier() + + " missing required attribute: " + + configurationElement.getName() + "." + name); + return elementValue; + } + + /* (non-Javadoc) + * @see org.eclipse.cdt.codan.core.model.ICheckersRegistry#iterator() + */ + public Iterator<IChecker> iterator() { + return checkers.iterator(); + } + + public static CheckersRegisry getInstance() { + if (instance == null) + new CheckersRegisry(); + return instance; + } + + /* (non-Javadoc) + * @see org.eclipse.cdt.codan.core.model.ICheckersRegistry#addChecker(org.eclipse.cdt.codan.core.model.IChecker) + */ + public void addChecker(IChecker checker) { + checkers.add(checker); + } + + /* (non-Javadoc) + * @see org.eclipse.cdt.codan.core.model.ICheckersRegistry#addProblem(org.eclipse.cdt.codan.core.model.IProblem, java.lang.String) + */ + public void addProblem(IProblem p, String category) { + IProblemCategory cat = getDefaultProfile().findCategory(category); + if (cat == null) + cat = getDefaultProfile().getRoot(); + ((ProblemProfile) getDefaultProfile()).addProblem(p, cat); + } + + /* (non-Javadoc) + * @see org.eclipse.cdt.codan.core.model.ICheckersRegistry#addCategory(org.eclipse.cdt.codan.core.model.IProblemCategory, java.lang.String) + */ + public void addCategory(IProblemCategory p, String category) { + IProblemCategory cat = getDefaultProfile().findCategory(category); + if (cat == null) + cat = getDefaultProfile().getRoot(); + ((ProblemProfile) getDefaultProfile()).addCategory(p, cat); + } + + /* (non-Javadoc) + * @see org.eclipse.cdt.codan.core.model.ICheckersRegistry#addRefProblem(org.eclipse.cdt.codan.core.model.IChecker, org.eclipse.cdt.codan.core.model.IProblem) + */ + public void addRefProblem(IChecker c, IProblem p) { + } + + /* (non-Javadoc) + * @see org.eclipse.cdt.codan.core.model.ICheckersRegistry#getDefaultProfile() + */ + public IProblemProfile getDefaultProfile() { + return profiles.get(DEFAULT); + } + + /* (non-Javadoc) + * @see org.eclipse.cdt.codan.core.model.ICheckersRegistry#getWorkspaceProfile() + */ + public IProblemProfile getWorkspaceProfile() { + IProblemProfile wp = profiles.get(ResourcesPlugin.getWorkspace()); + if (wp == null) { + try { + wp = (IProblemProfile) getDefaultProfile().clone(); + // load default values + CodanPreferencesLoader loader = new CodanPreferencesLoader(wp); + loader.load(CodanCorePlugin.getDefault().getStorePreferences()); + } catch (CloneNotSupportedException e) { + wp = getDefaultProfile(); + } + } + return wp; + } + + public void updateProfile(IResource element, IProblemProfile profile) { + if (profile == null) + profiles.remove(element); + else + profiles.put(element, profile); + } + + /* (non-Javadoc) + * @see org.eclipse.cdt.codan.core.model.ICheckersRegistry#getResourceProfile(org.eclipse.core.resources.IResource) + */ + public IProblemProfile getResourceProfile(IResource element) { + IProblemProfile prof = profiles.get(element); + if (prof == null) { + if (element instanceof IProject) { + try { + prof = (IProblemProfile) getWorkspaceProfile().clone(); + // load default values + CodanPreferencesLoader loader = new CodanPreferencesLoader( + prof); + IEclipsePreferences node = new ProjectScope( + (IProject) element) + .getNode(CodanCorePlugin.PLUGIN_ID); + boolean useWorkspace = node.getBoolean( + PreferenceConstants.P_USE_PARENT, false); + if (!useWorkspace) { + loader.load(node); + } + updateProfile(element, prof); + } catch (CloneNotSupportedException e) { + // cant + } + } else if (element.getParent() != null) { + prof = getResourceProfile(element.getParent()); + } else { + prof = getResourceProfile(element.getProject()); + } + } else { + } + return prof; + } + + /* (non-Javadoc) + * @see org.eclipse.cdt.codan.core.model.ICheckersRegistry#getResourceProfileWorkingCopy(org.eclipse.core.resources.IResource) + */ + public IProblemProfile getResourceProfileWorkingCopy(IResource element) { + if (element instanceof IProject) { + try { + IProblemProfile prof = (IProblemProfile) getWorkspaceProfile() + .clone(); + // load default values + CodanPreferencesLoader loader = new CodanPreferencesLoader(prof); + IEclipsePreferences node = new ProjectScope((IProject) element) + .getNode(CodanCorePlugin.PLUGIN_ID); + loader.load(node); + return prof; + } catch (CloneNotSupportedException e) { + // cant + } + } + return null; + } +} diff --git a/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/core/CodanBuilder.java b/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/core/CodanBuilder.java new file mode 100644 index 0000000..7d58351 --- /dev/null +++ b/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/core/CodanBuilder.java @@ -0,0 +1,196 @@ +/******************************************************************************* + * 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.internal.core; + +import java.io.File; +import java.net.URI; +import java.util.Map; + +import org.eclipse.cdt.codan.core.CodanCorePlugin; +import org.eclipse.cdt.codan.core.CodanRuntime; +import org.eclipse.cdt.codan.core.model.ICAstChecker; +import org.eclipse.cdt.codan.core.model.IChecker; +import org.eclipse.cdt.codan.core.model.ICodanAstReconciler; +import org.eclipse.cdt.codan.core.model.ICodanBuilder; +import org.eclipse.cdt.codan.core.model.IProblemReporter; +import org.eclipse.cdt.codan.internal.core.model.CodanMarkerProblemReporter; +import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit; +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.IResourceDelta; +import org.eclipse.core.resources.IResourceDeltaVisitor; +import org.eclipse.core.resources.IResourceVisitor; +import org.eclipse.core.resources.IWorkspace; +import org.eclipse.core.resources.IWorkspaceRoot; +import org.eclipse.core.resources.IncrementalProjectBuilder; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.NullProgressMonitor; + +public class CodanBuilder extends IncrementalProjectBuilder implements + ICodanBuilder, ICodanAstReconciler { + public static final String BUILDER_ID = "org.eclipse.cdt.codan.core.codanBuilder"; + + public class CodanDeltaVisitor implements IResourceDeltaVisitor { + /* + * (non-Javadoc) + * + * @see + * org.eclipse.core.resources.IResourceDeltaVisitor#visit(org.eclipse + * .core.resources.IResourceDelta) + */ + /* + * (non-Javadoc) + * + * @see + * org.eclipse.cdt.codan.internal.core.ICodanBuilder#visit(org.eclipse + * .core.resources.IResourceDelta) + */ + public boolean visit(IResourceDelta delta) throws CoreException { + IResource resource = delta.getResource(); + switch (delta.getKind()) { + case IResourceDelta.ADDED: + // handle added resource + processResource(resource, new NullProgressMonitor()); + break; + case IResourceDelta.REMOVED: + // handle removed resource + break; + case IResourceDelta.CHANGED: + // handle changed resource + processResource(resource, new NullProgressMonitor()); + break; + } + // return true to continue visiting children. + return true; + } + } + + public class CodanResourceVisitor implements IResourceVisitor { + public boolean visit(IResource resource) { + if (!(resource instanceof IProject)) + processResource(resource, new NullProgressMonitor()); + // return true to continue visiting children. + return true; + } + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.core.internal.events.InternalBuilder#build(int, + * java.util.Map, org.eclipse.core.runtime.IProgressMonitor) + */ + protected IProject[] build(int kind, Map args, IProgressMonitor monitor) + throws CoreException { + if (kind == FULL_BUILD) { + fullBuild(monitor); + } else { + IResourceDelta delta = getDelta(getProject()); + if (delta == null) { + fullBuild(monitor); + } else { + incrementalBuild(delta, monitor); + } + } + return null; + } + + public void processResource(IResource resource, IProgressMonitor monitor) { + // String string = Platform.getPreferencesService().getString( + // CodanCorePlugin.PLUGIN_ID, "problems", "", null); + // System.err.println("set = " + string); + // delete general markers + IProblemReporter problemReporter = CodanRuntime.getInstance() + .getProblemReporter(); + if (problemReporter instanceof CodanMarkerProblemReporter) { + ((CodanMarkerProblemReporter) problemReporter) + .deleteMarkers(resource); + } + for (IChecker checker : CheckersRegisry.getInstance()) { + try { + boolean run = false; + if (checker.enabledInContext(resource)) + run = true; + if (run) + checker.processResource(resource); + } catch (Throwable e) { + CodanCorePlugin.log(e); + } + } + if (resource instanceof IProject) { + try { + resource.accept(getResourceVisitor()); + } catch (CoreException e) { + CodanCorePlugin.log(e); + } + } + } + + public void reconcileAst(IASTTranslationUnit ast, IProgressMonitor monitor) { + if (ast == null) + return; + String filePath = ast.getFilePath(); + IWorkspace workspace = ResourcesPlugin.getWorkspace(); + IWorkspaceRoot root = workspace.getRoot(); + IFile[] resources; + URI uri = new File(filePath).toURI(); + resources = root.findFilesForLocationURI(uri); + if (resources != null && resources.length > 0) { + IFile resource = resources[0]; + IProblemReporter problemReporter = CodanRuntime.getInstance() + .getProblemReporter(); + // TODO: this is wrong - should not delete all markers - + // only those that contributed by the checker that we run now + if (problemReporter instanceof CodanMarkerProblemReporter) { + ((CodanMarkerProblemReporter) problemReporter) + .deleteMarkers(resource); + } + for (IChecker checker : CheckersRegisry.getInstance()) { + try { + boolean run = false; + if (checker.enabledInContext(resource)) + run = true; + if (run && checker instanceof ICAstChecker + && checker.runInEditor()) + ((ICAstChecker) checker).processAst(ast); + } catch (Throwable e) { + CodanCorePlugin.log(e); + } + } + } + } + + protected void fullBuild(final IProgressMonitor monitor) + throws CoreException { + try { + getProject().accept(new CodanResourceVisitor()); + } catch (CoreException e) { + } + } + + protected void incrementalBuild(IResourceDelta delta, + IProgressMonitor monitor) throws CoreException { + // the visitor does the work. + delta.accept(new CodanDeltaVisitor()); + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.cdt.codan.core.model.ICodanBuilder#getResourceVisitor() + */ + public CodanResourceVisitor getResourceVisitor() { + return new CodanResourceVisitor(); + } +} diff --git a/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/core/CodeAnlysisNature.java b/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/core/CodeAnlysisNature.java new file mode 100644 index 0000000..5157e16 --- /dev/null +++ b/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/core/CodeAnlysisNature.java @@ -0,0 +1,88 @@ +/******************************************************************************* + * 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.internal.core; + +import org.eclipse.core.resources.ICommand; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IProjectDescription; +import org.eclipse.core.resources.IProjectNature; +import org.eclipse.core.runtime.CoreException; + +public class CodeAnlysisNature implements IProjectNature { + /** + * ID of this project nature + */ + public static final String NATURE_ID = "org.eclipse.cdt.codan.core.codanNature"; + private IProject project; + + /* + * (non-Javadoc) + * + * @see org.eclipse.core.resources.IProjectNature#configure() + */ + public void configure() throws CoreException { + IProjectDescription desc = project.getDescription(); + ICommand[] commands = desc.getBuildSpec(); + for (int i = 0; i < commands.length; ++i) { + if (commands[i].getBuilderName().equals(CodanBuilder.BUILDER_ID)) { + return; + } + } + ICommand[] newCommands = new ICommand[commands.length + 1]; + System.arraycopy(commands, 0, newCommands, 0, commands.length); + ICommand command = desc.newCommand(); + command.setBuilderName(CodanBuilder.BUILDER_ID); + newCommands[newCommands.length - 1] = command; + desc.setBuildSpec(newCommands); + project.setDescription(desc, null); + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.core.resources.IProjectNature#deconfigure() + */ + public void deconfigure() throws CoreException { + IProjectDescription description = getProject().getDescription(); + ICommand[] commands = description.getBuildSpec(); + for (int i = 0; i < commands.length; ++i) { + if (commands[i].getBuilderName().equals(CodanBuilder.BUILDER_ID)) { + ICommand[] newCommands = new ICommand[commands.length - 1]; + System.arraycopy(commands, 0, newCommands, 0, i); + System.arraycopy(commands, i + 1, newCommands, i, + commands.length - i - 1); + description.setBuildSpec(newCommands); + project.setDescription(description, null); + return; + } + } + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.core.resources.IProjectNature#getProject() + */ + public IProject getProject() { + return project; + } + + /* + * (non-Javadoc) + * + * @see + * org.eclipse.core.resources.IProjectNature#setProject(org.eclipse.core + * .resources.IProject) + */ + public void setProject(IProject project) { + this.project = project; + } +} diff --git a/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/core/model/CVS/Entries b/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/core/model/CVS/Entries new file mode 100644 index 0000000..19054e0 --- /dev/null +++ b/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/core/model/CVS/Entries @@ -0,0 +1,3 @@ +/CodanMarkerProblemReporter.java/1.1/Sat Aug 22 21:16:48 2009// +/CodanProblem.java/1.1/Sat Aug 22 21:16:48 2009// +/CodanProblemCategory.java/1.1/Sat Aug 22 21:16:48 2009// diff --git a/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/core/model/CVS/Repository b/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/core/model/CVS/Repository new file mode 100644 index 0000000..cf80971 --- /dev/null +++ b/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/core/model/CVS/Repository @@ -0,0 +1 @@ +org.eclipse.cdt/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/core/model diff --git a/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/core/model/CVS/Root b/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/core/model/CVS/Root new file mode 100644 index 0000000..04efa23 --- /dev/null +++ b/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/core/model/CVS/Root @@ -0,0 +1 @@ +:pserver:anonymous@dev.eclipse.org:/cvsroot/tools diff --git a/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/core/model/CodanMarkerProblemReporter.java b/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/core/model/CodanMarkerProblemReporter.java new file mode 100644 index 0000000..ebf00c9 --- /dev/null +++ b/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/core/model/CodanMarkerProblemReporter.java @@ -0,0 +1,122 @@ +/******************************************************************************* + * 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.internal.core.model; + +import java.text.MessageFormat; + +import org.eclipse.cdt.codan.core.model.IProblem; +import org.eclipse.cdt.codan.core.model.IProblemLocation; +import org.eclipse.cdt.codan.core.model.IProblemReporter; +import org.eclipse.cdt.codan.internal.core.CheckersRegisry; +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IMarker; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.CoreException; + +public class CodanMarkerProblemReporter implements IProblemReporter { + public static final String GENERIC_CODE_ANALYSIS_MARKER_TYPE = "org.eclipse.cdt.codan.core.codanProblem"; + + /* + * (non-Javadoc) + * + * @see + * org.eclipse.cdt.codan.core.model.IProblemReporter#reportProblem(java. + * lang.String, org.eclipse.cdt.codan.core.model.IProblemLocation, + * java.lang.Object[]) + */ + public void reportProblem(String id, IProblemLocation loc, Object... args) { + IFile file = loc.getFile(); + int lineNumber = loc.getLineNumber(); + if (file == null) + throw new NullPointerException("file"); + if (id == null) + throw new NullPointerException("id"); + IProblem problem = CheckersRegisry.getInstance().getResourceProfile( + file).findProblem(id); + if (problem == null) + throw new IllegalArgumentException("Id is not registered"); + if (problem.isEnabled() == false) + return; // skip + int severity = problem.getSeverity().intValue(); + String messagePattern = problem.getMessagePattern(); + String message = id; + if (messagePattern == null) { + if (args != null && args.length > 0 && args[0] instanceof String) + message = (String) args[0]; + } else { + MessageFormat.format(messagePattern, args); + } + reportProblem(id, severity, file, lineNumber, loc.getStartingChar(), + loc.getEndingChar(), message); + } + + /* + * (non-Javadoc) + * + * @see + * org.eclipse.cdt.codan.core.model.IProblemReporter#reportProblem(java. + * lang.String, org.eclipse.core.resources.IFile, int, java.lang.String) + */ + public void reportProblem(String id, int severity, IFile file, + int lineNumber, int startChar, int endChar, String message) { + try { + // Do not put in duplicates + IMarker[] cur = file.findMarkers(GENERIC_CODE_ANALYSIS_MARKER_TYPE, + false, IResource.DEPTH_ZERO); + if (cur != null) { + for (IMarker element : cur) { + int line = ((Integer) element + .getAttribute(IMarker.LINE_NUMBER)).intValue(); + if (line == lineNumber) { + String mesg = (String) element + .getAttribute(IMarker.MESSAGE); + int sev = ((Integer) element + .getAttribute(IMarker.SEVERITY)).intValue(); + if (sev == severity && mesg.equals(message)) + return; + } + } + } + IMarker marker = file + .createMarker(GENERIC_CODE_ANALYSIS_MARKER_TYPE); + marker.setAttribute(IMarker.MESSAGE, message); + marker.setAttribute(IMarker.SEVERITY, severity); + marker.setAttribute(IMarker.LINE_NUMBER, lineNumber); + marker.setAttribute(IMarker.PROBLEM, id); + marker.setAttribute(IMarker.CHAR_END, endChar); + marker.setAttribute(IMarker.CHAR_START, startChar); + } catch (CoreException e) { + e.printStackTrace(); + } + } + + public void deleteMarkers(IResource file) { + try { + file.deleteMarkers(GENERIC_CODE_ANALYSIS_MARKER_TYPE, false, + IResource.DEPTH_ZERO); + } catch (CoreException ce) { + ce.printStackTrace(); + } + } + + public void deleteAllMarkers() { + try { + // TODO delete contributed markers too + ResourcesPlugin.getWorkspace().getRoot().deleteMarkers( + GENERIC_CODE_ANALYSIS_MARKER_TYPE, false, + IResource.DEPTH_INFINITE); + } catch (CoreException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } +} diff --git a/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/core/model/CodanProblem.java b/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/core/model/CodanProblem.java new file mode 100644 index 0000000..a094cc1 --- /dev/null +++ b/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/core/model/CodanProblem.java @@ -0,0 +1,106 @@ +/******************************************************************************* + * 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.internal.core.model; + +import java.util.Collection; +import java.util.HashMap; + +import org.eclipse.cdt.codan.core.model.CodanSeverity; +import org.eclipse.cdt.codan.core.model.IProblem; +import org.eclipse.cdt.codan.core.model.IProblemCategory; + +public class CodanProblem implements IProblem { + private String id; + private String name; + private String message; + private CodanSeverity severity = CodanSeverity.Warning; + private boolean enabled = true; + private HashMap<Object, Object> properties = new HashMap<Object, Object>(0); + + public CodanSeverity getSeverity() { + return severity; + } + + public CodanProblem(String problemId, String name) { + this.id = problemId; + this.name = name; + } + + public String getName() { + return name; + } + + public String getId() { + return id; + } + + public IProblemCategory getCategory() { + // TODO Auto-generated method stub + return null; + } + + @Override + public String toString() { + return name; + } + + public boolean isEnabled() { + return enabled; + } + + public void setSeverity(CodanSeverity sev) { + if (sev == null) + throw new NullPointerException(); + this.severity = sev; + } + + public void setEnabled(boolean checked) { + this.enabled = checked; + } + + /* + * (non-Javadoc) + * + * @see java.lang.Object#clone() + */ + @Override + public Object clone() throws CloneNotSupportedException { + return super.clone(); + } + + public void setProperty(Object key, Object value) { + properties.put(key, value); + } + + public Object getProperty(Object key) { + return properties.get(key); + }; + + public Collection<Object> getPropertyKeys() { + return properties.keySet(); + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.cdt.codan.core.model.IProblem#getMessagePattern() + */ + public String getMessagePattern() { + return message; + } + + /** + * @param message the message to set + */ + public void setMessagePattern(String message) { + this.message = message; + } +} diff --git a/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/core/model/CodanProblemCategory.java b/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/core/model/CodanProblemCategory.java new file mode 100644 index 0000000..289e0fd --- /dev/null +++ b/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/core/model/CodanProblemCategory.java @@ -0,0 +1,103 @@ +/******************************************************************************* + * 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.internal.core.model; + +import java.util.ArrayList; +import java.util.Iterator; + +import org.eclipse.cdt.codan.core.model.IProblem; +import org.eclipse.cdt.codan.core.model.IProblemCategory; +import org.eclipse.cdt.codan.core.model.IProblemElement; + +public class CodanProblemCategory implements IProblemCategory, Cloneable { + private String id; + private String name; + private ArrayList<IProblemElement> list = new ArrayList<IProblemElement>(); + + public CodanProblemCategory(String id, String name) { + this.id = id; + this.name = name; + } + + public String getName() { + return name; + } + + public String getId() { + return id; + } + + @Override + public String toString() { + return name; + } + + public Object[] getChildren() { + return list.toArray(); + } + + public void addChild(IProblemElement p) { + list.add(p); + } + + public IProblem findProblem(String id) { + Object[] children = this.getChildren(); + for (Object object : children) { + if (object instanceof IProblemCategory) { + IProblemCategory cat = (IProblemCategory) object; + IProblem found = cat.findProblem(id); + if (found != null) + return found; + } else if (object instanceof IProblem) { + IProblem p = (IProblem) object; + if (p.getId().equals(id)) + return p; + } + } + return null; + } + + public IProblemCategory findCategory(String id) { + if (getId().equals(id)) + return this; + Object[] children = getChildren(); + for (Object object : children) { + if (object instanceof IProblemCategory) { + IProblemCategory cat = (IProblemCategory) object; + IProblemCategory found = cat.findCategory(id); + if (found != null) + return found; + } + } + return null; + } + + /* + * (non-Javadoc) + * + * @see java.lang.Object#clone() + */ + @Override + public Object clone() { + try { + CodanProblemCategory clone = (CodanProblemCategory) super.clone(); + clone.list = new ArrayList<IProblemElement>(); + for (Iterator<IProblemElement> iterator = this.list.iterator(); iterator + .hasNext();) { + IProblemElement child = iterator.next(); + clone.list.add((IProblemElement) child.clone()); + } + return clone; + } catch (CloneNotSupportedException e) { + return this; + } + } +} |