buildframework/helium/sf/java/quality/src/com/nokia/helium/quality/ant/taskdefs/Coverity.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/sf/java/quality/src/com/nokia/helium/quality/ant/taskdefs/Coverity.java Tue Apr 27 08:33:08 2010 +0300
@@ -0,0 +1,198 @@
+/*
+* Copyright (c) 2007-2008 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+package com.nokia.helium.quality.ant.taskdefs;
+
+import java.io.File;
+import java.util.Vector;
+import java.util.Map.Entry;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Task;
+import org.apache.tools.ant.taskdefs.ExecTask;
+
+import com.nokia.helium.core.ant.types.Variable;
+import com.nokia.helium.core.ant.types.VariableSet;
+
+/**
+ * To run the coverity commands.
+ *
+ *
+ * <pre>
+ * <hlm:coverity command="cov-link" dir="${build.drive}/">
+ <hlm:arg name="--dir" value="${coverity.output.dir}/intermidiate"/>
+ <hlm:arg name="--compile-arg" value="armv5"/>
+ <hlm:arg name="--output" value="${coverity.output.dir}/coveritylink/armv5.link"/>
+ <hlm:arg name="${coverity.output.dir}/coveritylink/all.link" value=""/>
+ </hlm:coverity >
+ *
+ * </pre>
+ *
+ * @ant.task name="coverity" category="Quality".
+ *
+ */
+
+
+public class Coverity extends Task {
+
+ private String command;
+ private boolean failOnError;
+ private boolean execute = true;
+ private String dir;
+ private Vector<VariableSet> coverityOptions = new Vector<VariableSet>();
+ private Vector<Variable> coverityArgs = new Vector<Variable>();
+
+
+ public void execute() {
+
+ validateParameters();
+
+ runCommand(command);
+
+ }
+
+
+
+ /**
+ * To run the command passed into coverity tsask.
+ * @param command
+ */
+ private void runCommand(String command) {
+
+ String commandString = command;
+ if (!command.startsWith("cov-")) {
+ throw new BuildException("Coverity task can run only coverity prevent tool commands.");
+ }
+
+ ExecTask task = new ExecTask();
+ task.setProject(getProject());
+ task.setTaskName(this.getTaskName());
+ task.setFailonerror(failOnError);
+ task.setExecutable(command);
+ task.setDir(new File(this.dir));
+
+ for (VariableSet coverityArg : coverityOptions) {
+ for (Entry<String, Variable> entry : coverityArg.getVariablesMap().entrySet() ) {
+ task.createArg().setValue(entry.getKey());
+ task.createArg().setValue(entry.getValue().getValue());
+ commandString = commandString + " " + entry.getKey() + " " + entry.getValue().getValue();
+ }
+ }
+
+ for (Variable coverityArg : coverityArgs) {
+ task.createArg().setValue(coverityArg.getName());
+ task.createArg().setValue(coverityArg.getValue());
+ commandString = commandString + " " + coverityArg.getName() + " " + coverityArg.getValue();
+ }
+
+ try {
+ log("run command: " + commandString);
+ if (execute) {
+ task.execute();
+ }
+ } catch (BuildException be) {
+ if (failOnError) {
+ throw new BuildException("exception during coverity command '" + command + "' execution:", be);
+ }
+ }
+
+ }
+
+
+
+ /**
+ * To validate the parameters passed into coverity task.
+ */
+ private void validateParameters() {
+
+ if (command == null) {
+ throw new BuildException("'command' parameter should not be null for coverity task.");
+ }
+
+ }
+
+
+
+ /**
+ * @param command the command to set
+ * @ant.required
+ */
+ public void setCommand(String command) {
+ this.command = command;
+ }
+
+ /**
+ * @return the command
+ */
+ public String getCommand() {
+ return command;
+ }
+
+ /**
+ * @param failOnError the failOnError to set
+ * @ant.not-required
+ */
+ public void setFailOnError(boolean failOnError) {
+ this.failOnError = failOnError;
+ }
+
+ /**
+ * @return the dir
+ */
+ public String getDir() {
+ return dir;
+ }
+
+ /**
+ * @param dir the dir to set
+ * @ant.not-required
+ */
+ public void setDir(String dir) {
+ this.dir = dir;
+ }
+
+ /**
+ * @param execute the execute to set
+ */
+ public void setExecute(boolean execute) {
+ this.execute = execute;
+ }
+
+
+
+ /**
+ * To read the coverity arguments for coverity commands.
+ * @param variableArg
+ */
+ public void addCoverityOptions(VariableSet coverityArg) {
+ if (!coverityOptions.contains(coverityArg)) {
+ coverityOptions.add(coverityArg);
+ }
+ }
+
+ /**
+ * To read the individual arguments.
+ * @param coverityArg
+ */
+ public void addArg(Variable coverityArg) {
+ if (!coverityArgs.contains(coverityArg)) {
+ coverityArgs.add(coverityArg);
+ }
+ }
+
+
+
+}