builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/error/parsers/AbstractGCCEErrorParser.java
author timkelly
Thu, 13 Aug 2009 17:12:47 -0500
changeset 439 a29cb5e793d3
parent 125 b878114e8cc2
child 632 4a8b1092f0a4
permissions -rw-r--r--
fixed GCCE error parser & tests to work with CDT 6.0 changes.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
125
b878114e8cc2 Overhaul of RCOMP/GCCE error parsing to fix 8901:
tzelaw
parents:
diff changeset
     1
/*
b878114e8cc2 Overhaul of RCOMP/GCCE error parsing to fix 8901:
tzelaw
parents:
diff changeset
     2
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
b878114e8cc2 Overhaul of RCOMP/GCCE error parsing to fix 8901:
tzelaw
parents:
diff changeset
     3
* All rights reserved.
b878114e8cc2 Overhaul of RCOMP/GCCE error parsing to fix 8901:
tzelaw
parents:
diff changeset
     4
* This component and the accompanying materials are made available
b878114e8cc2 Overhaul of RCOMP/GCCE error parsing to fix 8901:
tzelaw
parents:
diff changeset
     5
* under the terms of the License "Eclipse Public License v1.0"
b878114e8cc2 Overhaul of RCOMP/GCCE error parsing to fix 8901:
tzelaw
parents:
diff changeset
     6
* which accompanies this distribution, and is available
b878114e8cc2 Overhaul of RCOMP/GCCE error parsing to fix 8901:
tzelaw
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
b878114e8cc2 Overhaul of RCOMP/GCCE error parsing to fix 8901:
tzelaw
parents:
diff changeset
     8
*
b878114e8cc2 Overhaul of RCOMP/GCCE error parsing to fix 8901:
tzelaw
parents:
diff changeset
     9
* Initial Contributors:
b878114e8cc2 Overhaul of RCOMP/GCCE error parsing to fix 8901:
tzelaw
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
b878114e8cc2 Overhaul of RCOMP/GCCE error parsing to fix 8901:
tzelaw
parents:
diff changeset
    11
*
b878114e8cc2 Overhaul of RCOMP/GCCE error parsing to fix 8901:
tzelaw
parents:
diff changeset
    12
* Contributors:
b878114e8cc2 Overhaul of RCOMP/GCCE error parsing to fix 8901:
tzelaw
parents:
diff changeset
    13
*
b878114e8cc2 Overhaul of RCOMP/GCCE error parsing to fix 8901:
tzelaw
parents:
diff changeset
    14
* Description: 
b878114e8cc2 Overhaul of RCOMP/GCCE error parsing to fix 8901:
tzelaw
parents:
diff changeset
    15
*
b878114e8cc2 Overhaul of RCOMP/GCCE error parsing to fix 8901:
tzelaw
parents:
diff changeset
    16
* Handles GCCE specific error before invoking CDT error parser
b878114e8cc2 Overhaul of RCOMP/GCCE error parsing to fix 8901:
tzelaw
parents:
diff changeset
    17
* 
b878114e8cc2 Overhaul of RCOMP/GCCE error parsing to fix 8901:
tzelaw
parents:
diff changeset
    18
*/
b878114e8cc2 Overhaul of RCOMP/GCCE error parsing to fix 8901:
tzelaw
parents:
diff changeset
    19
package com.nokia.carbide.cdt.internal.builder.error.parsers;
b878114e8cc2 Overhaul of RCOMP/GCCE error parsing to fix 8901:
tzelaw
parents:
diff changeset
    20
b878114e8cc2 Overhaul of RCOMP/GCCE error parsing to fix 8901:
tzelaw
parents:
diff changeset
    21
import java.util.regex.Matcher;
b878114e8cc2 Overhaul of RCOMP/GCCE error parsing to fix 8901:
tzelaw
parents:
diff changeset
    22
b878114e8cc2 Overhaul of RCOMP/GCCE error parsing to fix 8901:
tzelaw
parents:
diff changeset
    23
import org.eclipse.cdt.core.ErrorParserManager;
b878114e8cc2 Overhaul of RCOMP/GCCE error parsing to fix 8901:
tzelaw
parents:
diff changeset
    24
import org.eclipse.cdt.core.IMarkerGenerator;
439
a29cb5e793d3 fixed GCCE error parser & tests to work with CDT 6.0 changes.
timkelly
parents: 125
diff changeset
    25
import org.eclipse.cdt.core.errorparsers.AbstractErrorParser;
a29cb5e793d3 fixed GCCE error parser & tests to work with CDT 6.0 changes.
timkelly
parents: 125
diff changeset
    26
import org.eclipse.cdt.core.errorparsers.ErrorPattern;
125
b878114e8cc2 Overhaul of RCOMP/GCCE error parsing to fix 8901:
tzelaw
parents:
diff changeset
    27
b878114e8cc2 Overhaul of RCOMP/GCCE error parsing to fix 8901:
tzelaw
parents:
diff changeset
    28
/*
b878114e8cc2 Overhaul of RCOMP/GCCE error parsing to fix 8901:
tzelaw
parents:
diff changeset
    29
 * AbstractErrorParser/ErrorPattern are going to public API in CDT 5.1
b878114e8cc2 Overhaul of RCOMP/GCCE error parsing to fix 8901:
tzelaw
parents:
diff changeset
    30
 */
b878114e8cc2 Overhaul of RCOMP/GCCE error parsing to fix 8901:
tzelaw
parents:
diff changeset
    31
abstract public class AbstractGCCEErrorParser extends AbstractErrorParser {
b878114e8cc2 Overhaul of RCOMP/GCCE error parsing to fix 8901:
tzelaw
parents:
diff changeset
    32
	private String toolNameString;
b878114e8cc2 Overhaul of RCOMP/GCCE error parsing to fix 8901:
tzelaw
parents:
diff changeset
    33
	private static final ErrorPattern[] patterns = {
b878114e8cc2 Overhaul of RCOMP/GCCE error parsing to fix 8901:
tzelaw
parents:
diff changeset
    34
		/*
b878114e8cc2 Overhaul of RCOMP/GCCE error parsing to fix 8901:
tzelaw
parents:
diff changeset
    35
		 *	int groupFileName,
b878114e8cc2 Overhaul of RCOMP/GCCE error parsing to fix 8901:
tzelaw
parents:
diff changeset
    36
		 *	int groupLineNum,
b878114e8cc2 Overhaul of RCOMP/GCCE error parsing to fix 8901:
tzelaw
parents:
diff changeset
    37
		 *	int groupDesc,
b878114e8cc2 Overhaul of RCOMP/GCCE error parsing to fix 8901:
tzelaw
parents:
diff changeset
    38
		 *	int groupVarName,
b878114e8cc2 Overhaul of RCOMP/GCCE error parsing to fix 8901:
tzelaw
parents:
diff changeset
    39
		 *	int severity
b878114e8cc2 Overhaul of RCOMP/GCCE error parsing to fix 8901:
tzelaw
parents:
diff changeset
    40
		 */
b878114e8cc2 Overhaul of RCOMP/GCCE error parsing to fix 8901:
tzelaw
parents:
diff changeset
    41
			// arm-none-symbianelf-g++: \test\test.cpp: No such file or directory
b878114e8cc2 Overhaul of RCOMP/GCCE error parsing to fix 8901:
tzelaw
parents:
diff changeset
    42
			new ErrorPattern("(.*):\\s*(.*:)\\s*(.*(?:[Nn]o such file:\\s*)?[Nn]o such file or directory)", 2, 0, 3, 0, IMarkerGenerator.SEVERITY_ERROR_RESOURCE),	//$NON-NLS-1$
b878114e8cc2 Overhaul of RCOMP/GCCE error parsing to fix 8901:
tzelaw
parents:
diff changeset
    43
			// arm-none-symbianelf-g++: no input files
b878114e8cc2 Overhaul of RCOMP/GCCE error parsing to fix 8901:
tzelaw
parents:
diff changeset
    44
			new ErrorPattern("(.*):\\s*(.*[Nn]o input files)", 0, 0, 2, 0, IMarkerGenerator.SEVERITY_ERROR_RESOURCE),	//$NON-NLS-1$
b878114e8cc2 Overhaul of RCOMP/GCCE error parsing to fix 8901:
tzelaw
parents:
diff changeset
    45
			//arm-none-symbianelf-g++: warning: `-x c++' after last input file has no effect
b878114e8cc2 Overhaul of RCOMP/GCCE error parsing to fix 8901:
tzelaw
parents:
diff changeset
    46
			//arm-none-symbianelf-g++: error: some message
b878114e8cc2 Overhaul of RCOMP/GCCE error parsing to fix 8901:
tzelaw
parents:
diff changeset
    47
			new ErrorPattern("(.*):\\s*(.*[(?:[Ww]arning)(?:[Ee]rror)]):\\s*(.*)", 0, 0, 3, 0, IMarkerGenerator.SEVERITY_INFO) {	//$NON-NLS-1$
b878114e8cc2 Overhaul of RCOMP/GCCE error parsing to fix 8901:
tzelaw
parents:
diff changeset
    48
b878114e8cc2 Overhaul of RCOMP/GCCE error parsing to fix 8901:
tzelaw
parents:
diff changeset
    49
				@Override
b878114e8cc2 Overhaul of RCOMP/GCCE error parsing to fix 8901:
tzelaw
parents:
diff changeset
    50
				public int getSeverity(Matcher matcher) {
b878114e8cc2 Overhaul of RCOMP/GCCE error parsing to fix 8901:
tzelaw
parents:
diff changeset
    51
					String warningGroup = matcher.group(2);
b878114e8cc2 Overhaul of RCOMP/GCCE error parsing to fix 8901:
tzelaw
parents:
diff changeset
    52
					if (warningGroup != null && warningGroup.indexOf("arning") >= 0) //$NON-NLS-1$
b878114e8cc2 Overhaul of RCOMP/GCCE error parsing to fix 8901:
tzelaw
parents:
diff changeset
    53
						return IMarkerGenerator.SEVERITY_WARNING;
b878114e8cc2 Overhaul of RCOMP/GCCE error parsing to fix 8901:
tzelaw
parents:
diff changeset
    54
					
b878114e8cc2 Overhaul of RCOMP/GCCE error parsing to fix 8901:
tzelaw
parents:
diff changeset
    55
					return IMarkerGenerator.SEVERITY_ERROR_RESOURCE;
b878114e8cc2 Overhaul of RCOMP/GCCE error parsing to fix 8901:
tzelaw
parents:
diff changeset
    56
				}
b878114e8cc2 Overhaul of RCOMP/GCCE error parsing to fix 8901:
tzelaw
parents:
diff changeset
    57
b878114e8cc2 Overhaul of RCOMP/GCCE error parsing to fix 8901:
tzelaw
parents:
diff changeset
    58
			}
b878114e8cc2 Overhaul of RCOMP/GCCE error parsing to fix 8901:
tzelaw
parents:
diff changeset
    59
	};
b878114e8cc2 Overhaul of RCOMP/GCCE error parsing to fix 8901:
tzelaw
parents:
diff changeset
    60
	
b878114e8cc2 Overhaul of RCOMP/GCCE error parsing to fix 8901:
tzelaw
parents:
diff changeset
    61
	protected AbstractGCCEErrorParser(String toolNameString) {
b878114e8cc2 Overhaul of RCOMP/GCCE error parsing to fix 8901:
tzelaw
parents:
diff changeset
    62
		super(patterns);
b878114e8cc2 Overhaul of RCOMP/GCCE error parsing to fix 8901:
tzelaw
parents:
diff changeset
    63
		this.toolNameString = toolNameString;
b878114e8cc2 Overhaul of RCOMP/GCCE error parsing to fix 8901:
tzelaw
parents:
diff changeset
    64
	}
b878114e8cc2 Overhaul of RCOMP/GCCE error parsing to fix 8901:
tzelaw
parents:
diff changeset
    65
	
b878114e8cc2 Overhaul of RCOMP/GCCE error parsing to fix 8901:
tzelaw
parents:
diff changeset
    66
	/*
b878114e8cc2 Overhaul of RCOMP/GCCE error parsing to fix 8901:
tzelaw
parents:
diff changeset
    67
	 * (non-Javadoc)
b878114e8cc2 Overhaul of RCOMP/GCCE error parsing to fix 8901:
tzelaw
parents:
diff changeset
    68
	 * @see org.eclipse.cdt.internal.errorparsers.AbstractErrorParser#processLine(java.lang.String, org.eclipse.cdt.core.ErrorParserManager)
b878114e8cc2 Overhaul of RCOMP/GCCE error parsing to fix 8901:
tzelaw
parents:
diff changeset
    69
	 * 
b878114e8cc2 Overhaul of RCOMP/GCCE error parsing to fix 8901:
tzelaw
parents:
diff changeset
    70
	 * Only pick up message that matches the tool name pattern
b878114e8cc2 Overhaul of RCOMP/GCCE error parsing to fix 8901:
tzelaw
parents:
diff changeset
    71
	 * 
b878114e8cc2 Overhaul of RCOMP/GCCE error parsing to fix 8901:
tzelaw
parents:
diff changeset
    72
	 */
b878114e8cc2 Overhaul of RCOMP/GCCE error parsing to fix 8901:
tzelaw
parents:
diff changeset
    73
	public boolean processLine(String line, ErrorParserManager eoParser) {
b878114e8cc2 Overhaul of RCOMP/GCCE error parsing to fix 8901:
tzelaw
parents:
diff changeset
    74
		if (line.startsWith(toolNameString)) {
b878114e8cc2 Overhaul of RCOMP/GCCE error parsing to fix 8901:
tzelaw
parents:
diff changeset
    75
			return super.processLine(line, eoParser);
b878114e8cc2 Overhaul of RCOMP/GCCE error parsing to fix 8901:
tzelaw
parents:
diff changeset
    76
		}
b878114e8cc2 Overhaul of RCOMP/GCCE error parsing to fix 8901:
tzelaw
parents:
diff changeset
    77
		return false;
b878114e8cc2 Overhaul of RCOMP/GCCE error parsing to fix 8901:
tzelaw
parents:
diff changeset
    78
	}
b878114e8cc2 Overhaul of RCOMP/GCCE error parsing to fix 8901:
tzelaw
parents:
diff changeset
    79
}