Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [cdt-dev] Static code analysis - > Codan and Sonar

Actually it's totally possible to get Codan running headlessly with a few 
minor modifications (following
http://www.developertesting.com/archives/month200508/20050823-HeadlessHelloWorldInEclipse.html 
)

As a proof of concept, the following patch will add an application entry 
so that you can run the analysis
headlessly - in order for this to work, you must have the project opened 
in a workspace somewhere.


-----

### Eclipse Workspace Patch 1.0
#P org.eclipse.cdt.codan.core
Index: plugin.xml
===================================================================
RCS file: 
/cvsroot/tools/org.eclipse.cdt/codan/org.eclipse.cdt.codan.core/plugin.xml,v
retrieving revision 1.3
diff -u -r1.3 plugin.xml
--- plugin.xml  29 Jul 2009 17:01:46 -0000      1.3
+++ plugin.xml  30 Jul 2009 16:20:32 -0000
@@ -53,5 +53,17 @@
 
       </category>
    </extension>
+      <extension
+            id="codan"
+            point="org.eclipse.core.runtime.applications">
+         <application
+               cardinality="singleton-global"
+               thread="main"
+               visible="true">
+            <run
+                  class="org.eclipse.cdt.codan.core.Application">
+            </run>
+         </application>
+      </extension>
 
 </plugin>
Index: src/org/eclipse/cdt/codan/core/model/CodanRuntime.java
===================================================================
RCS file: 
/cvsroot/tools/org.eclipse.cdt/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/CodanRuntime.java,v
retrieving revision 1.1
diff -u -r1.1 CodanRuntime.java
--- src/org/eclipse/cdt/codan/core/model/CodanRuntime.java      21 Apr 
2009 00:53:33 -0000     1.1
+++ src/org/eclipse/cdt/codan/core/model/CodanRuntime.java      30 Jul 
2009 16:20:32 -0000
@@ -16,7 +16,11 @@
  */
 public class CodanRuntime {
        private static CodanRuntime instance = new CodanRuntime();
-       private CodanProblemReporter problemReporter = new 
CodanProblemReporter();
+       private CodanProblemReporter problemReporter = new 
CodanProblemReporter() {
+               public void reportProblem(String id, 
org.eclipse.core.resources.IFile file, int lineNumber, String message) {
+                       System.out.println(file.getLocation() + ":" + 
lineNumber + " " + id); 
+               };
+       };
 
        public CodanProblemReporter getProblemReporter() {
                return problemReporter;
Index: src/org/eclipse/cdt/codan/core/Application.java
===================================================================
RCS file: src/org/eclipse/cdt/codan/core/Application.java
diff -N src/org/eclipse/cdt/codan/core/Application.java
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ src/org/eclipse/cdt/codan/core/Application.java     1 Jan 1970 
00:00:00 -0000
@@ -0,0 +1,24 @@
+package org.eclipse.cdt.codan.core;
+
+import org.eclipse.cdt.codan.core.builder.CodanBuilder;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.equinox.app.IApplication;
+import org.eclipse.equinox.app.IApplicationContext;
+
+public class Application implements IApplication {
+
+       public Object start(IApplicationContext context) throws Exception 
{ 
+               String[] args = (String[]) 
context.getArguments().get("application.args");
+ 
+               System.out.println("Launching analysis on project " + 
args[0]);
+ ResourcesPlugin.getWorkspace().getRoot().getProject(args[0]).accept(
+                               new CodanBuilder().new 
CodanResourceVisitor());
+ 
+               return EXIT_OK;
+       }
+
+       public void stop() {
+       }
+
+}






Back to the top