buildframework/helium/sf/java/quality/src/com/nokia/helium/quality/ant/taskdefs/CodeScannerTask.java
author wbernard
Fri, 13 Aug 2010 14:59:05 +0300
changeset 628 7c4a911dc066
parent 588 c7c26511138f
child 645 b8d81fa19e7d
permissions -rw-r--r--
helium_11.0.0-e00f171ca185
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
588
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
     1
/*
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
     2
 * Copyright (c) 2007-2008 Nokia Corporation and/or its subsidiary(-ies).
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
     3
 * All rights reserved.
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
     4
 * This component and the accompanying materials are made available
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
     5
 * under the terms of the License "Eclipse Public License v1.0"
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
     6
 * which accompanies this distribution, and is available
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
     7
 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
     8
 *
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
     9
 * Initial Contributors:
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    10
 * Nokia Corporation - initial contribution.
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    11
 *
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    12
 * Contributors:
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    13
 *
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    14
 * Description:  
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    15
 *
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    16
 */
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    17
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    18
package com.nokia.helium.quality.ant.taskdefs;
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    19
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    20
import java.io.File;
588
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    21
import java.util.Vector;
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    22
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    23
import org.apache.tools.ant.BuildException;
588
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    24
import org.apache.tools.ant.Task;
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    25
import org.apache.tools.ant.taskdefs.ExecTask;
588
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    26
import org.apache.tools.ant.types.Path;
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    27
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    28
/**
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    29
 * This task executes codescanner - and writes the results to the output directory. Codescanner
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    30
 * parses C++ code and flags any inconsistencies or errors in output files. Configuration files are
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    31
 * used to determine what passes and fails the checking e.g. maximum length of lines, whether 'C'
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    32
 * type comments are allowed as well as C++ comments, does it adhere to the company coding
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    33
 * guidelines and much more. Every person writing any C++ code should run codescanner on their code
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    34
 * to ensure it follows the coding guidelines. The output logs should have no errors and preferably
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    35
 * no warnings before the code should be checked into SCM, e.g. synergy or SVN.
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    36
 * 
588
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    37
 * Below is an example of how to use the target to run codescanner.
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    38
 * 
588
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    39
 * <pre>
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    40
 * &lt;property name="codescanner.output.dir" location="./cs" /&gt;
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    41
 * &lt;property name="codescanner.output.type" value="html" /&gt;
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    42
 * &lt;property name="codescanner.config" location="./codescanner_config.xml" /&gt;
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    43
 * 
588
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    44
 * &lt;hlm:codescanner dest="${codescanner.output.dir}"
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    45
 *      format="${codescanner.output.type}"
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    46
 *      failonerror="true"
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    47
 *      configuration="${codescanner.config}"&gt;
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    48
 *      &lt;path refid="src.path"/&gt;
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    49
 *  &lt;/hlm:codescanner&gt;
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    50
 *  &lt;au:assertLogContains text="Successfully executed codescanner"/&gt;
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    51
 *  &lt;au:assertLogContains text="Output format: xml,html"/&gt;
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    52
 *  &lt;au:assertFileExists file="${codescanner.output.dir}/problemIndex.xml"/&gt;
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    53
 * </pre>
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    54
 * 
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    55
 * @ant.task name="codescanner" category="Quality"
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    56
 */
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    57
public class CodeScannerTask extends Task {
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    58
    private Vector<Path> paths = new Vector<Path>();
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    59
    private File configuration;
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    60
    private String dest;
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    61
    private String format = "xml,html";
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    62
    private boolean auto;
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    63
    private File log;
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    64
    private boolean failonerror;
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    65
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    66
    /**
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    67
     * This defines if the task should fails in case of error while executing codescanner.
588
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    68
     * 
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    69
     * @param failonerror
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    70
     * @ant.not-required Default is false for backward compatibility.
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    71
     */
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    72
    public void setFailonerror(boolean failonerror) {
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    73
        this.failonerror = failonerror;
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    74
    }
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    75
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    76
    /**
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    77
     * Add path datatype to the task.
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    78
     * 
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    79
     * @param path
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    80
     */
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    81
    public void add(Path path) {
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    82
        paths.add(path);
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    83
    }
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    84
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    85
    /**
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    86
     * Get dest attribute.
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    87
     * 
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    88
     */
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    89
    public String getDest() {
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    90
        return this.dest;
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    91
    }
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    92
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    93
    /**
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    94
     * Set dest attribute.
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    95
     * 
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    96
     * @param dest
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    97
     * @ant.required
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    98
     */
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    99
    public void setDest(String dest) {
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   100
        this.dest = dest;
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   101
    }
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   102
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   103
    /**
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   104
     * Get format attribute.
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   105
     * 
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   106
     */
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   107
    public String getFormat() {
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   108
        return this.format;
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   109
    }
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   110
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   111
    /**
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   112
     * Set format attribute.
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   113
     * 
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   114
     * @param format
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   115
     * @ant.not-required Default is xml,html
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   116
     */
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   117
    public void setFormat(String format) {
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   118
        this.format = format;
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   119
    }
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   120
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   121
    /**
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   122
     * Get configuration attribute.
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   123
     * 
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   124
     */
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   125
    public File getConfiguration() {
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   126
        return this.configuration;
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   127
    }
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   128
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   129
    /**
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   130
     * Set configuration attribute.
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   131
     * 
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   132
     * @param configuration
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   133
     * @ant.required
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   134
     */
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   135
    public void setConfiguration(File configuration) {
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   136
        this.configuration = configuration;
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   137
    }
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   138
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   139
    /**
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   140
     * Set auto attribute.
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   141
     * 
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   142
     * @param auto
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   143
     * @ant.not-required Default is false.
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   144
     */
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   145
    public void setAuto(boolean auto) {
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   146
        this.auto = auto;
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   147
    }
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   148
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   149
    /**
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   150
     * Set log attribute.
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   151
     * 
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   152
     * @param log
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   153
     * @ant.not-required
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   154
     */
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   155
    public void setLog(File log) {
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   156
        this.log = log;
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   157
    }
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   158
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   159
    /**
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   160
     * {@inheritDoc}
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   161
     */
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   162
    @Override
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   163
    public void execute() {
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   164
        // creating the exec subtask
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   165
        ExecTask task = new ExecTask();
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   166
        task.setProject(getProject());
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   167
        task.setTaskName(this.getTaskName());
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   168
        task.setFailonerror(failonerror);
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   169
        task.setExecutable("codescanner");
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   170
        task.setDir(new File("."));
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   171
        if (dest == null) {
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   172
            throw new BuildException("'dest' attribute must be defined");
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   173
        }
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   174
        if (configuration != null) {
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   175
            if (!configuration.exists()) {
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   176
                throw new BuildException("Could not find the file " + configuration);
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   177
            }
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   178
            else {
588
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   179
                task.createArg().setValue("-c");
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   180
                task.createArg().setValue(configuration.getAbsolutePath());
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   181
            }
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   182
        }
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   183
        else {
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   184
            throw new BuildException("'configuration' attribute must be defined");
588
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   185
        }
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   186
        if (!format.contains("xml")) {
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   187
            setFormat("xml," + format);
588
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   188
        }
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   189
        this.log("Output format: " + format);
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   190
        // -t off
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   191
        task.createArg().setValue("-t");
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   192
        task.createArg().setValue(auto ? "on" : "off");
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   193
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   194
        // -l log
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   195
        if (log != null) {
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   196
            this.log("Output log: " + log.getAbsolutePath());
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   197
            task.createArg().setValue("-l");
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   198
            task.createArg().setValue(log.getAbsolutePath());
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   199
        }
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   200
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   201
        // -o type
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   202
        task.createArg().setValue("-o");
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   203
        task.createArg().setValue(format);
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   204
        if (paths.isEmpty()) {
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   205
            throw new BuildException("No input directory defined");
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   206
        }
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   207
        // Getting the list of source dir to scan
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   208
        Vector<String> srcs = new Vector<String>();
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   209
        for (Path path : paths) {
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   210
            if (path.isReference()) {
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   211
                path = (Path) path.getRefid().getReferencedObject();
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   212
            }
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   213
            for (String apath : path.list()) {
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   214
                srcs.add(apath);
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   215
            }
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   216
        }
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   217
        for (int i = 0; i < srcs.size(); i++) {
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   218
            if (i != srcs.size() - 1) {
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   219
                task.createArg().setValue("-i");
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   220
                task.createArg().setValue(srcs.elementAt(i));
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   221
            }
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   222
            else {
588
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   223
                task.createArg().setValue(srcs.elementAt(i));
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   224
                task.createArg().setValue(dest.toString());
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   225
            }
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   226
        }
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   227
        // output path
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   228
        this.log("Output dir " + dest);
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   229
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   230
        // Run codescanner
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   231
        task.execute();
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   232
        this.log("Successfully executed codescanner");
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   233
    }
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   234
}