Added "Task Tags" functionality (TODO,...)
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpdt / internal / compiler / impl / CompilerOptions.java
1 /*******************************************************************************
2  * Copyright (c) 2000, 2004 IBM Corporation and others.
3  * All rights reserved. This program and the accompanying materials 
4  * are made available under the terms of the Common Public License v1.0
5  * which accompanies this distribution, and is available at
6  * http://www.eclipse.org/legal/cpl-v10.html
7  * 
8  * Contributors:
9  *     IBM Corporation - initial API and implementation
10  *******************************************************************************/
11 package net.sourceforge.phpdt.internal.compiler.impl;
12
13 import java.io.ByteArrayInputStream;
14 import java.io.InputStreamReader;
15 import java.io.UnsupportedEncodingException;
16 import java.util.HashMap;
17 import java.util.Map;
18
19 import net.sourceforge.phpdt.core.compiler.CharOperation;
20 import net.sourceforge.phpdt.internal.compiler.Compiler;
21 import net.sourceforge.phpdt.internal.compiler.env.IConstants;
22 import net.sourceforge.phpdt.internal.compiler.lookup.ProblemReasons;
23 import net.sourceforge.phpdt.internal.compiler.problem.ProblemSeverities;
24
25 public class CompilerOptions implements ProblemReasons, ProblemSeverities, IConstants {
26         
27         /**
28          * Option IDs
29          */
30         public static final String OPTION_LocalVariableAttribute = "net.sourceforge.phpeclipse.compiler.debug.localVariable"; //$NON-NLS-1$
31         public static final String OPTION_LineNumberAttribute = "net.sourceforge.phpeclipse.compiler.debug.lineNumber"; //$NON-NLS-1$
32         public static final String OPTION_SourceFileAttribute = "net.sourceforge.phpeclipse.compiler.debug.sourceFile"; //$NON-NLS-1$
33 //      public static final String OPTION_PreserveUnusedLocal = "net.sourceforge.phpeclipse.compiler.codegen.unusedLocal"; //$NON-NLS-1$
34         public static final String OPTION_ReportMethodWithConstructorName = "net.sourceforge.phpeclipse.compiler.problem.methodWithConstructorName"; //$NON-NLS-1$
35         public static final String OPTION_ReportOverridingPackageDefaultMethod = "net.sourceforge.phpeclipse.compiler.problem.overridingPackageDefaultMethod"; //$NON-NLS-1$
36         public static final String OPTION_ReportDeprecation = "net.sourceforge.phpeclipse.compiler.problem.deprecation"; //$NON-NLS-1$
37         public static final String OPTION_ReportDeprecationInDeprecatedCode = "net.sourceforge.phpeclipse.compiler.problem.deprecationInDeprecatedCode"; //$NON-NLS-1$
38         public static final String OPTION_ReportDeprecationWhenOverridingDeprecatedMethod = "net.sourceforge.phpeclipse.compiler.problem.deprecationWhenOverridingDeprecatedMethod"; //$NON-NLS-1$
39         public static final String OPTION_ReportHiddenCatchBlock = "net.sourceforge.phpeclipse.compiler.problem.hiddenCatchBlock"; //$NON-NLS-1$
40         public static final String OPTION_ReportUnusedLocal = "net.sourceforge.phpeclipse.compiler.problem.unusedLocal"; //$NON-NLS-1$
41         public static final String OPTION_ReportUnusedParameter = "net.sourceforge.phpeclipse.compiler.problem.unusedParameter"; //$NON-NLS-1$
42         public static final String OPTION_ReportUnusedParameterWhenImplementingAbstract = "net.sourceforge.phpeclipse.compiler.problem.unusedParameterWhenImplementingAbstract"; //$NON-NLS-1$
43         public static final String OPTION_ReportUnusedParameterWhenOverridingConcrete = "net.sourceforge.phpeclipse.compiler.problem.unusedParameterWhenOverridingConcrete"; //$NON-NLS-1$
44         public static final String OPTION_ReportUnusedImport = "net.sourceforge.phpeclipse.compiler.problem.unusedImport"; //$NON-NLS-1$
45         public static final String OPTION_ReportSyntheticAccessEmulation = "net.sourceforge.phpeclipse.compiler.problem.syntheticAccessEmulation"; //$NON-NLS-1$
46         public static final String OPTION_ReportNoEffectAssignment = "net.sourceforge.phpeclipse.compiler.problem.noEffectAssignment"; //$NON-NLS-1$
47         public static final String OPTION_ReportLocalVariableHiding = "net.sourceforge.phpeclipse.compiler.problem.localVariableHiding"; //$NON-NLS-1$
48         public static final String OPTION_ReportSpecialParameterHidingField = "net.sourceforge.phpeclipse.compiler.problem.specialParameterHidingField"; //$NON-NLS-1$
49         public static final String OPTION_ReportFieldHiding = "net.sourceforge.phpeclipse.compiler.problem.fieldHiding"; //$NON-NLS-1$
50         public static final String OPTION_ReportPossibleAccidentalBooleanAssignment = "net.sourceforge.phpeclipse.compiler.problem.possibleAccidentalBooleanAssignment"; //$NON-NLS-1$
51         public static final String OPTION_ReportNonExternalizedStringLiteral = "net.sourceforge.phpeclipse.compiler.problem.nonExternalizedStringLiteral"; //$NON-NLS-1$
52         public static final String OPTION_ReportIncompatibleNonInheritedInterfaceMethod = "net.sourceforge.phpeclipse.compiler.problem.incompatibleNonInheritedInterfaceMethod"; //$NON-NLS-1$
53         public static final String OPTION_ReportUnusedPrivateMember = "net.sourceforge.phpeclipse.compiler.problem.unusedPrivateMember"; //$NON-NLS-1$
54         public static final String OPTION_ReportNoImplicitStringConversion = "net.sourceforge.phpeclipse.compiler.problem.noImplicitStringConversion"; //$NON-NLS-1$
55         public static final String OPTION_ReportAssertIdentifier = "net.sourceforge.phpeclipse.compiler.problem.assertIdentifier"; //$NON-NLS-1$
56         public static final String OPTION_ReportNonStaticAccessToStatic = "net.sourceforge.phpeclipse.compiler.problem.staticAccessReceiver"; //$NON-NLS-1$
57         public static final String OPTION_ReportIndirectStaticAccess = "net.sourceforge.phpeclipse.compiler.problem.indirectStaticAccess"; //$NON-NLS-1$
58         public static final String OPTION_ReportSuperfluousSemicolon = "net.sourceforge.phpeclipse.compiler.problem.superfluousSemicolon"; //$NON-NLS-1$
59         public static final String OPTION_ReportUnnecessaryTypeCheck = "net.sourceforge.phpeclipse.compiler.problem.unnecessaryTypeCheck"; //$NON-NLS-1$
60         public static final String OPTION_ReportUndocumentedEmptyBlock = "net.sourceforge.phpeclipse.compiler.problem.undocumentedEmptyBlock"; //$NON-NLS-1$
61         public static final String OPTION_ReportInvalidJavadoc = "net.sourceforge.phpeclipse.compiler.problem.invalidJavadoc"; //$NON-NLS-1$
62         public static final String OPTION_ReportInvalidJavadocTags = "net.sourceforge.phpeclipse.compiler.problem.invalidJavadocTags"; //$NON-NLS-1$
63         public static final String OPTION_ReportInvalidJavadocTagsVisibility = "net.sourceforge.phpeclipse.compiler.problem.invalidJavadocTagsVisibility"; //$NON-NLS-1$
64         public static final String OPTION_ReportMissingJavadocTags = "net.sourceforge.phpeclipse.compiler.problem.missingJavadocTags"; //$NON-NLS-1$
65         public static final String OPTION_ReportMissingJavadocTagsVisibility = "net.sourceforge.phpeclipse.compiler.problem.missingJavadocTagsVisibility"; //$NON-NLS-1$
66         public static final String OPTION_ReportMissingJavadocTagsOverriding = "net.sourceforge.phpeclipse.compiler.problem.missingJavadocTagsOverriding"; //$NON-NLS-1$
67         public static final String OPTION_ReportMissingJavadocComments = "net.sourceforge.phpeclipse.compiler.problem.missingJavadocComments"; //$NON-NLS-1$
68         public static final String OPTION_ReportMissingJavadocCommentsVisibility = "net.sourceforge.phpeclipse.compiler.problem.missingJavadocCommentsVisibility"; //$NON-NLS-1$
69         public static final String OPTION_ReportMissingJavadocCommentsOverriding = "net.sourceforge.phpeclipse.compiler.problem.missingJavadocCommentsOverriding"; //$NON-NLS-1$
70         public static final String OPTION_ReportFinallyBlockNotCompletingNormally = "net.sourceforge.phpeclipse.compiler.problem.finallyBlockNotCompletingNormally"; //$NON-NLS-1$
71         public static final String OPTION_ReportUnusedDeclaredThrownException = "net.sourceforge.phpeclipse.compiler.problem.unusedDeclaredThrownException"; //$NON-NLS-1$
72         public static final String OPTION_ReportUnusedDeclaredThrownExceptionWhenOverriding = "net.sourceforge.phpeclipse.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding"; //$NON-NLS-1$
73         public static final String OPTION_ReportUnqualifiedFieldAccess = "net.sourceforge.phpeclipse.compiler.problem.unqualifiedFieldAccess"; //$NON-NLS-1$
74 //      public static final String OPTION_Source = "net.sourceforge.phpeclipse.compiler.source"; //$NON-NLS-1$
75 //      public static final String OPTION_TargetPlatform = "net.sourceforge.phpeclipse.compiler.codegen.targetPlatform"; //$NON-NLS-1$
76 //      public static final String OPTION_Compliance = "net.sourceforge.phpeclipse.compiler.compliance"; //$NON-NLS-1$
77         public static final String OPTION_Encoding = "net.sourceforge.phpeclipse.encoding"; //$NON-NLS-1$
78         public static final String OPTION_MaxProblemPerUnit = "net.sourceforge.phpeclipse.compiler.maxProblemPerUnit"; //$NON-NLS-1$
79         public static final String OPTION_TaskTags = "net.sourceforge.phpeclipse.compiler.taskTags"; //$NON-NLS-1$
80         public static final String OPTION_TaskPriorities = "net.sourceforge.phpeclipse.compiler.taskPriorities"; //$NON-NLS-1$
81         
82         // Backward compatibility
83         public static final String OPTION_ReportInvalidAnnotation = "net.sourceforge.phpeclipse.compiler.problem.invalidAnnotation"; //$NON-NLS-1$
84         public static final String OPTION_ReportMissingAnnotation = "net.sourceforge.phpeclipse.compiler.problem.missingAnnotation"; //$NON-NLS-1$
85         public static final String OPTION_ReportMissingJavadoc = "net.sourceforge.phpeclipse.compiler.problem.missingJavadoc"; //$NON-NLS-1$
86
87         /* should surface ??? */
88 //      public static final String OPTION_PrivateConstructorAccess = "net.sourceforge.phpeclipse.compiler.codegen.constructorAccessEmulation"; //$NON-NLS-1$
89
90         /**
91          * Possible values for configurable options
92          */
93         public static final String GENERATE = "generate";//$NON-NLS-1$
94         public static final String DO_NOT_GENERATE = "do not generate"; //$NON-NLS-1$ 
95         public static final String PRESERVE = "preserve"; //$NON-NLS-1$
96 //      public static final String OPTIMIZE_OUT = "optimize out"; //$NON-NLS-1$
97 //      public static final String VERSION_1_1 = "1.1"; //$NON-NLS-1$
98 //      public static final String VERSION_1_2 = "1.2"; //$NON-NLS-1$
99 //      public static final String VERSION_1_3 = "1.3"; //$NON-NLS-1$
100 //      public static final String VERSION_1_4 = "1.4"; //$NON-NLS-1$
101 //      public static final String VERSION_1_5 = "1.5"; //$NON-NLS-1$
102         public static final String ERROR = "error"; //$NON-NLS-1$
103         public static final String WARNING = "warning"; //$NON-NLS-1$
104         public static final String IGNORE = "ignore"; //$NON-NLS-1$
105         public static final String ENABLED = "enabled"; //$NON-NLS-1$
106         public static final String DISABLED = "disabled"; //$NON-NLS-1$
107         public static final String PUBLIC = "public";   //$NON-NLS-1$
108         public static final String PROTECTED = "protected";     //$NON-NLS-1$
109         public static final String DEFAULT = "default"; //$NON-NLS-1$
110         public static final String PRIVATE = "private"; //$NON-NLS-1$
111         
112         /**
113          * Bit mask for configurable problems (error/warning threshold)
114          */
115         // 0x100L unused
116         // 0x200L unused
117         // 0x400L unused
118         // 0x800L unused
119         public static final long MethodWithConstructorName = 0x1000L;
120         public static final long OverriddenPackageDefaultMethod = 0x2000L;
121         public static final long UsingDeprecatedAPI = 0x4000L;
122         public static final long MaskedCatchBlock = 0x8000L;
123         public static final long UnusedLocalVariable = 0x10000L;
124         public static final long UnusedArgument = 0x20000L;
125         public static final long NoImplicitStringConversion = 0x40000L;
126         public static final long AccessEmulation = 0x80000L;
127         public static final long NonExternalizedString = 0x100000L;
128         public static final long AssertUsedAsAnIdentifier = 0x200000L;
129         public static final long UnusedImport = 0x400000L;
130         public static final long NonStaticAccessToStatic = 0x800000L;
131         public static final long Task = 0x1000000L;
132         public static final long NoEffectAssignment = 0x2000000L;
133         public static final long IncompatibleNonInheritedInterfaceMethod = 0x4000000L;
134         public static final long UnusedPrivateMember = 0x8000000L;
135         public static final long LocalVariableHiding = 0x10000000L;
136         public static final long FieldHiding = 0x20000000L;
137         public static final long AccidentalBooleanAssign = 0x40000000L;
138         public static final long SuperfluousSemicolon = 0x80000000L;
139         public static final long IndirectStaticAccess = 0x100000000L;
140         public static final long UndocumentedEmptyBlock = 0x200000000L;
141         public static final long UnnecessaryTypeCheck = 0x400000000L;
142         public static final long InvalidJavadoc = 0x800000000L;
143         public static final long FinallyBlockNotCompleting = 0x1000000000L;
144         public static final long UnusedDeclaredThrownException = 0x2000000000L;
145         public static final long UnqualifiedFieldAccess = 0x4000000000L;
146         public static final long MissingJavadocTags = 0x8000000000L;
147         public static final long MissingJavadocComments  = 0x10000000000L;
148
149         // Default severity level for handlers
150         public long errorThreshold = 0;
151                 
152         public long warningThreshold = 
153                 MethodWithConstructorName 
154                 | UsingDeprecatedAPI 
155                 | MaskedCatchBlock 
156                 | OverriddenPackageDefaultMethod
157                 | UnusedImport
158                 | NonStaticAccessToStatic
159                 | NoEffectAssignment
160                 | IncompatibleNonInheritedInterfaceMethod
161                 | NoImplicitStringConversion
162                 | FinallyBlockNotCompleting
163                 | AssertUsedAsAnIdentifier;
164
165         // Debug attributes
166         public static final int Source = 1; // SourceFileAttribute
167         public static final int Lines = 2; // LineNumberAttribute
168         public static final int Vars = 4; // LocalVariableTableAttribute
169
170         // By default only lines and source attributes are generated.
171         public int produceDebugAttributes = Lines | Source;
172
173 //      public long complianceLevel = JDK1_4; // by default be compliant with 1.4
174 //      public long sourceLevel = JDK1_3; //1.3 source behavior by default
175 //      public long targetJDK = JDK1_2; // default generates for JVM1.2
176
177         // toggle private access emulation for 1.2 (constr. accessor has extra arg on constructor) or 1.3 (make private constructor default access when access needed)
178         public boolean isPrivateConstructorAccessChangingVisibility = false; // by default, follows 1.2
179         
180         // source encoding format
181         public String defaultEncoding = null; // will use the platform default encoding
182         
183         // print what unit is being processed
184         public boolean verbose = Compiler.DEBUG;
185
186         // indicates if reference info is desired
187         public boolean produceReferenceInfo = false;
188
189         // indicates if unused/optimizable local variables need to be preserved (debugging purpose)
190         public boolean preserveAllLocalVariables = false;
191
192         // indicates whether literal expressions are inlined at parse-time or not
193         public boolean parseLiteralExpressionsAsConstants = true;
194
195         // max problems per compilation unit
196         public int maxProblemsPerUnit = 100; // no more than 100 problems per default
197         
198         // tags used to recognize tasks in comments
199         public char[][] taskTags = null;
200
201         // priorities of tasks in comments
202         public char[][] taskPriorites = null;
203
204         // deprecation report
205         public boolean reportDeprecationInsideDeprecatedCode = false;
206         public boolean reportDeprecationWhenOverridingDeprecatedMethod = false;
207         
208         // unused parameters report
209         public boolean reportUnusedParameterWhenImplementingAbstract = false;
210         public boolean reportUnusedParameterWhenOverridingConcrete = false;
211
212         // unused declaration of thrown exception
213         public boolean reportUnusedDeclaredThrownExceptionWhenOverriding = false;
214         
215         // constructor/setter parameter hiding
216         public boolean reportSpecialParameterHidingField = false;
217
218         // check javadoc comments
219         public int reportInvalidJavadocTagsVisibility = AccPrivate; 
220         public boolean reportInvalidJavadocTags = true; 
221
222         // check missing javadoc tags
223         public int reportMissingJavadocTagsVisibility = AccPrivate; 
224         public boolean reportMissingJavadocTagsOverriding = true;
225
226         // check missing javadoc comments
227         public int reportMissingJavadocCommentsVisibility = AccPublic; 
228         public boolean reportMissingJavadocCommentsOverriding = true; 
229         
230         /** 
231          * Initializing the compiler options with defaults
232          */
233         public CompilerOptions(){
234                 // use default options
235         }
236
237         /** 
238          * Initializing the compiler options with external settings
239          * @param settings
240          */
241         public CompilerOptions(Map settings){
242
243                 if (settings == null) return;
244                 set(settings);          
245         }
246
247         public Map getMap() {
248                 Map optionsMap = new HashMap(30);
249                 optionsMap.put(OPTION_LocalVariableAttribute, (this.produceDebugAttributes & Vars) != 0 ? GENERATE : DO_NOT_GENERATE); 
250                 optionsMap.put(OPTION_LineNumberAttribute, (this.produceDebugAttributes & Lines) != 0 ? GENERATE : DO_NOT_GENERATE);
251                 optionsMap.put(OPTION_SourceFileAttribute, (this.produceDebugAttributes & Source) != 0 ? GENERATE : DO_NOT_GENERATE);
252 //              optionsMap.put(OPTION_PreserveUnusedLocal, this.preserveAllLocalVariables ? PRESERVE : OPTIMIZE_OUT);
253                 optionsMap.put(OPTION_ReportMethodWithConstructorName, getSeverityString(MethodWithConstructorName)); 
254                 optionsMap.put(OPTION_ReportOverridingPackageDefaultMethod, getSeverityString(OverriddenPackageDefaultMethod)); 
255                 optionsMap.put(OPTION_ReportDeprecation, getSeverityString(UsingDeprecatedAPI)); 
256                 optionsMap.put(OPTION_ReportDeprecationInDeprecatedCode, this.reportDeprecationInsideDeprecatedCode ? ENABLED : DISABLED); 
257                 optionsMap.put(OPTION_ReportDeprecationWhenOverridingDeprecatedMethod, this.reportDeprecationWhenOverridingDeprecatedMethod ? ENABLED : DISABLED); 
258                 optionsMap.put(OPTION_ReportHiddenCatchBlock, getSeverityString(MaskedCatchBlock)); 
259                 optionsMap.put(OPTION_ReportUnusedLocal, getSeverityString(UnusedLocalVariable)); 
260                 optionsMap.put(OPTION_ReportUnusedParameter, getSeverityString(UnusedArgument)); 
261                 optionsMap.put(OPTION_ReportUnusedImport, getSeverityString(UnusedImport)); 
262                 optionsMap.put(OPTION_ReportSyntheticAccessEmulation, getSeverityString(AccessEmulation)); 
263                 optionsMap.put(OPTION_ReportNoEffectAssignment, getSeverityString(NoEffectAssignment)); 
264                 optionsMap.put(OPTION_ReportNonExternalizedStringLiteral, getSeverityString(NonExternalizedString)); 
265                 optionsMap.put(OPTION_ReportNoImplicitStringConversion, getSeverityString(NoImplicitStringConversion)); 
266                 optionsMap.put(OPTION_ReportNonStaticAccessToStatic, getSeverityString(NonStaticAccessToStatic)); 
267                 optionsMap.put(OPTION_ReportIndirectStaticAccess, getSeverityString(IndirectStaticAccess)); 
268                 optionsMap.put(OPTION_ReportIncompatibleNonInheritedInterfaceMethod, getSeverityString(IncompatibleNonInheritedInterfaceMethod)); 
269                 optionsMap.put(OPTION_ReportUnusedPrivateMember, getSeverityString(UnusedPrivateMember)); 
270                 optionsMap.put(OPTION_ReportLocalVariableHiding, getSeverityString(LocalVariableHiding)); 
271                 optionsMap.put(OPTION_ReportFieldHiding, getSeverityString(FieldHiding)); 
272                 optionsMap.put(OPTION_ReportPossibleAccidentalBooleanAssignment, getSeverityString(AccidentalBooleanAssign)); 
273                 optionsMap.put(OPTION_ReportSuperfluousSemicolon, getSeverityString(SuperfluousSemicolon)); 
274                 optionsMap.put(OPTION_ReportAssertIdentifier, getSeverityString(AssertUsedAsAnIdentifier)); 
275                 optionsMap.put(OPTION_ReportUndocumentedEmptyBlock, getSeverityString(UndocumentedEmptyBlock)); 
276                 optionsMap.put(OPTION_ReportUnnecessaryTypeCheck, getSeverityString(UnnecessaryTypeCheck)); 
277                 optionsMap.put(OPTION_ReportInvalidJavadoc, getSeverityString(InvalidJavadoc));
278                 optionsMap.put(OPTION_ReportInvalidJavadocTagsVisibility, getVisibilityString(this.reportInvalidJavadocTagsVisibility));
279                 optionsMap.put(OPTION_ReportInvalidJavadocTags, this.reportInvalidJavadocTags? ENABLED : DISABLED);
280                 optionsMap.put(OPTION_ReportMissingJavadocTags, getSeverityString(MissingJavadocTags));
281                 optionsMap.put(OPTION_ReportMissingJavadocTagsVisibility, getVisibilityString(this.reportMissingJavadocTagsVisibility));
282                 optionsMap.put(OPTION_ReportMissingJavadocTagsOverriding, this.reportMissingJavadocTagsOverriding ? ENABLED : DISABLED);
283                 optionsMap.put(OPTION_ReportMissingJavadocComments, getSeverityString(MissingJavadocComments));
284                 optionsMap.put(OPTION_ReportMissingJavadocCommentsVisibility, getVisibilityString(this.reportMissingJavadocCommentsVisibility));
285                 optionsMap.put(OPTION_ReportMissingJavadocCommentsOverriding, this.reportMissingJavadocCommentsOverriding ? ENABLED : DISABLED);
286                 optionsMap.put(OPTION_ReportFinallyBlockNotCompletingNormally, getSeverityString(FinallyBlockNotCompleting));
287                 optionsMap.put(OPTION_ReportUnusedDeclaredThrownException, getSeverityString(UnusedDeclaredThrownException));
288                 optionsMap.put(OPTION_ReportUnusedDeclaredThrownExceptionWhenOverriding, this.reportUnusedDeclaredThrownExceptionWhenOverriding ? ENABLED : DISABLED); 
289                 optionsMap.put(OPTION_ReportUnqualifiedFieldAccess, getSeverityString(UnqualifiedFieldAccess));
290 //              optionsMap.put(OPTION_Compliance, versionFromJdkLevel(this.complianceLevel)); 
291 //              optionsMap.put(OPTION_Source, versionFromJdkLevel(this.sourceLevel)); 
292 //              optionsMap.put(OPTION_TargetPlatform, versionFromJdkLevel(this.targetJDK)); 
293                 if (this.defaultEncoding != null) {
294                         optionsMap.put(OPTION_Encoding, this.defaultEncoding); 
295                 }
296                 optionsMap.put(OPTION_TaskTags, this.taskTags == null ? "" : new String(CharOperation.concatWith(this.taskTags,','))); //$NON-NLS-1$
297                 optionsMap.put(OPTION_TaskPriorities, this.taskPriorites == null ? "" : new String(CharOperation.concatWith(this.taskPriorites,','))); //$NON-NLS-1$
298                 optionsMap.put(OPTION_ReportUnusedParameterWhenImplementingAbstract, this.reportUnusedParameterWhenImplementingAbstract ? ENABLED : DISABLED); 
299                 optionsMap.put(OPTION_ReportUnusedParameterWhenOverridingConcrete, this.reportUnusedParameterWhenOverridingConcrete ? ENABLED : DISABLED); 
300                 optionsMap.put(OPTION_ReportSpecialParameterHidingField, this.reportSpecialParameterHidingField ? ENABLED : DISABLED); 
301                 optionsMap.put(OPTION_MaxProblemPerUnit, String.valueOf(this.maxProblemsPerUnit));
302
303                 return optionsMap;              
304         }
305         
306         public int getSeverity(long irritant) {
307                 if((this.warningThreshold & irritant) != 0)
308                         return Warning;
309                 if((this.errorThreshold & irritant) != 0)
310                         return Error;
311                 return Ignore;
312         }
313
314         public String getSeverityString(long irritant) {
315                 if((this.warningThreshold & irritant) != 0)
316                         return WARNING;
317                 if((this.errorThreshold & irritant) != 0)
318                         return ERROR;
319                 return IGNORE;
320         }
321         
322         public String getVisibilityString(int level) {
323                 switch (level) {
324                         case AccPublic:
325                                 return PUBLIC;
326                         case AccProtected:
327                                 return PROTECTED;
328                         case AccPrivate:
329                                 return PRIVATE;
330                         default:
331                                 return DEFAULT;
332                 }
333         }
334         
335         public void set(Map optionsMap) {
336
337                 Object optionValue;
338                 if ((optionValue = optionsMap.get(OPTION_LocalVariableAttribute)) != null) {
339                         if (GENERATE.equals(optionValue)) {
340                                 this.produceDebugAttributes |= Vars;
341                         } else if (DO_NOT_GENERATE.equals(optionValue)) {
342                                 this.produceDebugAttributes &= ~Vars;
343                         }
344                 }
345                 if ((optionValue = optionsMap.get(OPTION_LineNumberAttribute)) != null) {
346                         if (GENERATE.equals(optionValue)) {
347                                 this.produceDebugAttributes |= Lines;
348                         } else if (DO_NOT_GENERATE.equals(optionValue)) {
349                                 this.produceDebugAttributes &= ~Lines;
350                         }
351                 }
352                 if ((optionValue = optionsMap.get(OPTION_SourceFileAttribute)) != null) {
353                         if (GENERATE.equals(optionValue)) {
354                                 this.produceDebugAttributes |= Source;
355                         } else if (DO_NOT_GENERATE.equals(optionValue)) {
356                                 this.produceDebugAttributes &= ~Source;
357                         }
358                 }
359 //              if ((optionValue = optionsMap.get(OPTION_PreserveUnusedLocal)) != null) {
360 //                      if (PRESERVE.equals(optionValue)) {
361 //                              this.preserveAllLocalVariables = true;
362 //                      } else if (OPTIMIZE_OUT.equals(optionValue)) {
363 //                              this.preserveAllLocalVariables = false;
364 //                      }
365 //              }
366                 if ((optionValue = optionsMap.get(OPTION_ReportDeprecationInDeprecatedCode)) != null) {
367                         if (ENABLED.equals(optionValue)) {
368                                 this.reportDeprecationInsideDeprecatedCode = true;
369                         } else if (DISABLED.equals(optionValue)) {
370                                 this.reportDeprecationInsideDeprecatedCode = false;
371                         }
372                 }
373                 if ((optionValue = optionsMap.get(OPTION_ReportDeprecationWhenOverridingDeprecatedMethod)) != null) {
374                         if (ENABLED.equals(optionValue)) {
375                                 this.reportDeprecationWhenOverridingDeprecatedMethod = true;
376                         } else if (DISABLED.equals(optionValue)) {
377                                 this.reportDeprecationWhenOverridingDeprecatedMethod = false;
378                         }
379                 }
380                 if ((optionValue = optionsMap.get(OPTION_ReportUnusedDeclaredThrownExceptionWhenOverriding)) != null) {
381                         if (ENABLED.equals(optionValue)) {
382                                 this.reportUnusedDeclaredThrownExceptionWhenOverriding = true;
383                         } else if (DISABLED.equals(optionValue)) {
384                                 this.reportUnusedDeclaredThrownExceptionWhenOverriding = false;
385                         }
386                 }
387 //              if ((optionValue = optionsMap.get(OPTION_Compliance)) != null) {
388 //                      long level = versionToJdkLevel(optionValue);
389 //                      if (level != 0) this.complianceLevel = level;
390 //              }
391 //              if ((optionValue = optionsMap.get(OPTION_Source)) != null) {
392 //                      long level = versionToJdkLevel(optionValue);
393 //                      if (level != 0) this.sourceLevel = level;
394 //              }
395 //              if ((optionValue = optionsMap.get(OPTION_TargetPlatform)) != null) {
396 //                      long level = versionToJdkLevel(optionValue);
397 //                      if (level != 0) this.targetJDK = level;
398 //              }
399                 if ((optionValue = optionsMap.get(OPTION_Encoding)) != null) {
400                         if (optionValue instanceof String) {
401                                 this.defaultEncoding = null;
402                                 String stringValue = (String) optionValue;
403                                 if (stringValue.length() > 0){
404                                         try { 
405                                                 new InputStreamReader(new ByteArrayInputStream(new byte[0]), stringValue);
406                                                 this.defaultEncoding = stringValue;
407                                         } catch(UnsupportedEncodingException e){
408                                                 // ignore unsupported encoding
409                                         }
410                                 }
411                         }
412                 }
413 //              if ((optionValue = optionsMap.get(OPTION_PrivateConstructorAccess)) != null) {
414 //                      long level = versionToJdkLevel(optionValue);
415 //                      if (level >= JDK1_3) this.isPrivateConstructorAccessChangingVisibility = true;
416 //              }
417                 if ((optionValue = optionsMap.get(OPTION_ReportUnusedParameterWhenImplementingAbstract)) != null) {
418                         if (ENABLED.equals(optionValue)) {
419                                 this.reportUnusedParameterWhenImplementingAbstract = true;
420                         } else if (DISABLED.equals(optionValue)) {
421                                 this.reportUnusedParameterWhenImplementingAbstract = false;
422                         }
423                 }
424                 if ((optionValue = optionsMap.get(OPTION_ReportUnusedParameterWhenOverridingConcrete)) != null) {
425                         if (ENABLED.equals(optionValue)) {
426                                 this.reportUnusedParameterWhenOverridingConcrete = true;
427                         } else if (DISABLED.equals(optionValue)) {
428                                 this.reportUnusedParameterWhenOverridingConcrete = false;
429                         }
430                 }
431                 if ((optionValue = optionsMap.get(OPTION_ReportSpecialParameterHidingField)) != null) {
432                         if (ENABLED.equals(optionValue)) {
433                                 this.reportSpecialParameterHidingField = true;
434                         } else if (DISABLED.equals(optionValue)) {
435                                 this.reportSpecialParameterHidingField = false;
436                         }
437                 }
438                 if ((optionValue = optionsMap.get(OPTION_MaxProblemPerUnit)) != null) {
439                         if (optionValue instanceof String) {
440                                 String stringValue = (String) optionValue;
441                                 try {
442                                         int val = Integer.parseInt(stringValue);
443                                         if (val >= 0) this.maxProblemsPerUnit = val;
444                                 } catch(NumberFormatException e){
445                                         // ignore ill-formatted limit
446                                 }                               
447                         }
448                 }
449                 if ((optionValue = optionsMap.get(OPTION_TaskTags)) != null) {
450                         if (optionValue instanceof String) {
451                                 String stringValue = (String) optionValue;
452                                 if (stringValue.length() == 0) {
453                                         this.taskTags = null;
454                                 } else {
455                                         this.taskTags = CharOperation.splitAndTrimOn(',', stringValue.toCharArray());
456                                 }
457                         }
458                 }
459                 if ((optionValue = optionsMap.get(OPTION_TaskPriorities)) != null) {
460                         if (optionValue instanceof String) {
461                                 String stringValue = (String) optionValue;
462                                 if (stringValue.length() == 0) {
463                                         this.taskPriorites = null;
464                                 } else {
465                                         this.taskPriorites = CharOperation.splitAndTrimOn(',', stringValue.toCharArray());
466                                 }
467                         }
468                 }
469                 if ((optionValue = optionsMap.get(OPTION_ReportMethodWithConstructorName)) != null) updateSeverity(MethodWithConstructorName, optionValue);
470                 if ((optionValue = optionsMap.get(OPTION_ReportOverridingPackageDefaultMethod)) != null) updateSeverity(OverriddenPackageDefaultMethod, optionValue);
471                 if ((optionValue = optionsMap.get(OPTION_ReportDeprecation)) != null) updateSeverity(UsingDeprecatedAPI, optionValue);
472                 if ((optionValue = optionsMap.get(OPTION_ReportHiddenCatchBlock)) != null) updateSeverity(MaskedCatchBlock, optionValue);
473                 if ((optionValue = optionsMap.get(OPTION_ReportUnusedLocal)) != null) updateSeverity(UnusedLocalVariable, optionValue);
474                 if ((optionValue = optionsMap.get(OPTION_ReportUnusedParameter)) != null) updateSeverity(UnusedArgument, optionValue);
475                 if ((optionValue = optionsMap.get(OPTION_ReportUnusedImport)) != null) updateSeverity(UnusedImport, optionValue);
476                 if ((optionValue = optionsMap.get(OPTION_ReportUnusedPrivateMember)) != null) updateSeverity(UnusedPrivateMember, optionValue);
477                 if ((optionValue = optionsMap.get(OPTION_ReportUnusedDeclaredThrownException)) != null) updateSeverity(UnusedDeclaredThrownException, optionValue);
478                 if ((optionValue = optionsMap.get(OPTION_ReportNoImplicitStringConversion)) != null) updateSeverity(NoImplicitStringConversion, optionValue);
479                 if ((optionValue = optionsMap.get(OPTION_ReportSyntheticAccessEmulation)) != null) updateSeverity(AccessEmulation, optionValue);
480                 if ((optionValue = optionsMap.get(OPTION_ReportLocalVariableHiding)) != null) updateSeverity(LocalVariableHiding, optionValue);
481                 if ((optionValue = optionsMap.get(OPTION_ReportFieldHiding)) != null) updateSeverity(FieldHiding, optionValue);
482                 if ((optionValue = optionsMap.get(OPTION_ReportPossibleAccidentalBooleanAssignment)) != null) updateSeverity(AccidentalBooleanAssign, optionValue);
483                 if ((optionValue = optionsMap.get(OPTION_ReportSuperfluousSemicolon)) != null) updateSeverity(SuperfluousSemicolon, optionValue);
484                 if ((optionValue = optionsMap.get(OPTION_ReportNonExternalizedStringLiteral)) != null) updateSeverity(NonExternalizedString, optionValue);
485                 if ((optionValue = optionsMap.get(OPTION_ReportAssertIdentifier)) != null) updateSeverity(AssertUsedAsAnIdentifier, optionValue);
486                 if ((optionValue = optionsMap.get(OPTION_ReportNonStaticAccessToStatic)) != null) updateSeverity(NonStaticAccessToStatic, optionValue);
487                 if ((optionValue = optionsMap.get(OPTION_ReportIndirectStaticAccess)) != null) updateSeverity(IndirectStaticAccess, optionValue);
488                 if ((optionValue = optionsMap.get(OPTION_ReportIncompatibleNonInheritedInterfaceMethod)) != null) updateSeverity(IncompatibleNonInheritedInterfaceMethod, optionValue);
489                 if ((optionValue = optionsMap.get(OPTION_ReportUndocumentedEmptyBlock)) != null) updateSeverity(UndocumentedEmptyBlock, optionValue);
490                 if ((optionValue = optionsMap.get(OPTION_ReportUnnecessaryTypeCheck)) != null) updateSeverity(UnnecessaryTypeCheck, optionValue);
491                 if ((optionValue = optionsMap.get(OPTION_ReportFinallyBlockNotCompletingNormally)) != null) updateSeverity(FinallyBlockNotCompleting, optionValue);
492                 if ((optionValue = optionsMap.get(OPTION_ReportUnqualifiedFieldAccess)) != null) updateSeverity(UnqualifiedFieldAccess, optionValue);
493                 if ((optionValue = optionsMap.get(OPTION_ReportNoEffectAssignment)) != null) updateSeverity(NoEffectAssignment, optionValue);
494
495                 // Javadoc options
496                 if ((optionValue = optionsMap.get(OPTION_ReportInvalidJavadoc)) != null) {
497                         updateSeverity(InvalidJavadoc, optionValue);
498                 }
499                 if ((optionValue = optionsMap.get(OPTION_ReportInvalidJavadocTagsVisibility)) != null) {
500                         if (PUBLIC.equals(optionValue)) {
501                                 this.reportInvalidJavadocTagsVisibility = AccPublic;
502                         } else if (PROTECTED.equals(optionValue)) {
503                                 this.reportInvalidJavadocTagsVisibility = AccProtected;
504 //                      } else if (DEFAULT.equals(optionValue)) {
505 //                              this.reportInvalidJavadocTagsVisibility = AccDefault;
506                         } else if (PRIVATE.equals(optionValue)) {
507                                 this.reportInvalidJavadocTagsVisibility = AccPrivate;
508                         }
509                 }
510                 if ((optionValue = optionsMap.get(OPTION_ReportInvalidJavadocTags)) != null) {
511                         if (ENABLED.equals(optionValue)) {
512                                 this.reportInvalidJavadocTags= true;
513                         } else if (DISABLED.equals(optionValue)) {
514                                 this.reportInvalidJavadocTags = false;
515                         }
516                 }
517                 if ((optionValue = optionsMap.get(OPTION_ReportMissingJavadocTags)) != null) {
518                         updateSeverity(MissingJavadocTags, optionValue);
519                 }
520                 if ((optionValue = optionsMap.get(OPTION_ReportMissingJavadocTagsVisibility)) != null) {
521                         if (PUBLIC.equals(optionValue)) {
522                                 this.reportMissingJavadocTagsVisibility = AccPublic;
523                         } else if (PROTECTED.equals(optionValue)) {
524                                 this.reportMissingJavadocTagsVisibility = AccProtected;
525 //                      } else if (DEFAULT.equals(optionValue)) {
526 //                              this.reportMissingJavadocTagsVisibility = AccDefault;
527                         } else if (PRIVATE.equals(optionValue)) {
528                                 this.reportMissingJavadocTagsVisibility = AccPrivate;
529                         }
530                 }
531                 if ((optionValue = optionsMap.get(OPTION_ReportMissingJavadocTagsOverriding)) != null) {
532                         if (ENABLED.equals(optionValue)) {
533                                 this.reportMissingJavadocTagsOverriding = true;
534                         } else if (DISABLED.equals(optionValue)) {
535                                 this.reportMissingJavadocTagsOverriding = false;
536                         }
537                 }
538                 if ((optionValue = optionsMap.get(OPTION_ReportMissingJavadocComments)) != null) {
539                         updateSeverity(MissingJavadocComments, optionValue);
540                 }
541                 if ((optionValue = optionsMap.get(OPTION_ReportMissingJavadocCommentsVisibility)) != null) {
542                         if (PUBLIC.equals(optionValue)) {
543                                 this.reportMissingJavadocCommentsVisibility = AccPublic;
544                         } else if (PROTECTED.equals(optionValue)) {
545                                 this.reportMissingJavadocCommentsVisibility = AccProtected;
546 //                      } else if (DEFAULT.equals(optionValue)) {
547 //                              this.reportMissingJavadocCommentsVisibility = AccDefault;
548                         } else if (PRIVATE.equals(optionValue)) {
549                                 this.reportMissingJavadocCommentsVisibility = AccPrivate;
550                         }
551                 }
552                 if ((optionValue = optionsMap.get(OPTION_ReportMissingJavadocCommentsOverriding)) != null) {
553                         if (ENABLED.equals(optionValue)) {
554                                 this.reportMissingJavadocCommentsOverriding = true;
555                         } else if (DISABLED.equals(optionValue)) {
556                                 this.reportMissingJavadocCommentsOverriding = false;
557                         }
558                 }
559         }
560
561         public void setVerboseMode(boolean flag) {
562                 this.verbose = flag;
563         }
564
565         public String toString() {
566         
567                 StringBuffer buf = new StringBuffer("CompilerOptions:"); //$NON-NLS-1$
568                 buf.append("\n\t- local variables debug attributes: ").append((this.produceDebugAttributes & Vars) != 0 ? "ON" : " OFF"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
569                 buf.append("\n\t- line number debug attributes: ").append((this.produceDebugAttributes & Lines) != 0 ? "ON" : " OFF"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
570                 buf.append("\n\t- source debug attributes: ").append((this.produceDebugAttributes & Source) != 0 ? "ON" : " OFF"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
571                 buf.append("\n\t- preserve all local variables: ").append(this.preserveAllLocalVariables ? "ON" : " OFF"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
572                 buf.append("\n\t- method with constructor name: ").append(getSeverityString(MethodWithConstructorName)); //$NON-NLS-1$
573                 buf.append("\n\t- overridden package default method: ").append(getSeverityString(OverriddenPackageDefaultMethod)); //$NON-NLS-1$
574                 buf.append("\n\t- deprecation: ").append(getSeverityString(UsingDeprecatedAPI)); //$NON-NLS-1$
575                 buf.append("\n\t- masked catch block: ").append(getSeverityString(MaskedCatchBlock)); //$NON-NLS-1$
576                 buf.append("\n\t- unused local variable: ").append(getSeverityString(UnusedLocalVariable)); //$NON-NLS-1$
577                 buf.append("\n\t- unused parameter: ").append(getSeverityString(UnusedArgument)); //$NON-NLS-1$
578                 buf.append("\n\t- unused import: ").append(getSeverityString(UnusedImport)); //$NON-NLS-1$
579                 buf.append("\n\t- synthetic access emulation: ").append(getSeverityString(AccessEmulation)); //$NON-NLS-1$
580                 buf.append("\n\t- assignment with no effect: ").append(getSeverityString(NoEffectAssignment)); //$NON-NLS-1$
581                 buf.append("\n\t- non externalized string: ").append(getSeverityString(NonExternalizedString)); //$NON-NLS-1$
582                 buf.append("\n\t- static access receiver: ").append(getSeverityString(NonStaticAccessToStatic)); //$NON-NLS-1$
583                 buf.append("\n\t- indirect static access: ").append(getSeverityString(IndirectStaticAccess)); //$NON-NLS-1$
584                 buf.append("\n\t- incompatible non inherited interface method: ").append(getSeverityString(IncompatibleNonInheritedInterfaceMethod)); //$NON-NLS-1$
585                 buf.append("\n\t- unused private member: ").append(getSeverityString(UnusedPrivateMember)); //$NON-NLS-1$
586                 buf.append("\n\t- local variable hiding another variable: ").append(getSeverityString(LocalVariableHiding)); //$NON-NLS-1$
587                 buf.append("\n\t- field hiding another variable: ").append(getSeverityString(FieldHiding)); //$NON-NLS-1$
588                 buf.append("\n\t- possible accidental boolean assignment: ").append(getSeverityString(AccidentalBooleanAssign)); //$NON-NLS-1$
589                 buf.append("\n\t- superfluous semicolon: ").append(getSeverityString(SuperfluousSemicolon)); //$NON-NLS-1$
590                 buf.append("\n\t- uncommented empty block: ").append(getSeverityString(UndocumentedEmptyBlock)); //$NON-NLS-1$
591                 buf.append("\n\t- unnecessary type check: ").append(getSeverityString(UnnecessaryTypeCheck)); //$NON-NLS-1$
592                 buf.append("\n\t- invalid javadoc: ").append(getSeverityString(InvalidJavadoc)); //$NON-NLS-1$
593                 buf.append("\n\t- report invalid javadoc tags: ").append(this.reportInvalidJavadocTags ? ENABLED : DISABLED); //$NON-NLS-1$
594                 buf.append("\n\t- visibility level to report invalid javadoc tags: ").append(getVisibilityString(this.reportInvalidJavadocTagsVisibility)); //$NON-NLS-1$
595                 buf.append("\n\t- missing javadoc tags: ").append(getSeverityString(MissingJavadocTags)); //$NON-NLS-1$
596                 buf.append("\n\t- visibility level to report missing javadoc tags: ").append(getVisibilityString(this.reportMissingJavadocTagsVisibility)); //$NON-NLS-1$
597                 buf.append("\n\t- report missing javadoc tags in overriding methods: ").append(this.reportMissingJavadocTagsOverriding ? ENABLED : DISABLED); //$NON-NLS-1$
598                 buf.append("\n\t- missing javadoc comments: ").append(getSeverityString(MissingJavadocComments)); //$NON-NLS-1$
599                 buf.append("\n\t- visibility level to report missing javadoc comments: ").append(getVisibilityString(this.reportMissingJavadocCommentsVisibility)); //$NON-NLS-1$
600                 buf.append("\n\t- report missing javadoc comments in overriding methods: ").append(this.reportMissingJavadocCommentsOverriding ? ENABLED : DISABLED); //$NON-NLS-1$
601                 buf.append("\n\t- finally block not completing normally: ").append(getSeverityString(FinallyBlockNotCompleting)); //$NON-NLS-1$
602                 buf.append("\n\t- unused declared thrown exception: ").append(getSeverityString(UnusedDeclaredThrownException)); //$NON-NLS-1$
603                 buf.append("\n\t- unused declared thrown exception when overriding ").append(this.reportUnusedDeclaredThrownExceptionWhenOverriding ? ENABLED : DISABLED); //$NON-NLS-1$
604 //              buf.append("\n\t- JDK compliance level: "+ versionFromJdkLevel(this.complianceLevel)); //$NON-NLS-1$
605 //              buf.append("\n\t- JDK source level: "+ versionFromJdkLevel(this.sourceLevel)); //$NON-NLS-1$
606 //              buf.append("\n\t- JDK target level: "+ versionFromJdkLevel(this.targetJDK)); //$NON-NLS-1$
607                 buf.append("\n\t- private constructor access: ").append(this.isPrivateConstructorAccessChangingVisibility ? "extra argument" : "make default access"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
608                 buf.append("\n\t- verbose : ").append(this.verbose ? "ON" : "OFF"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
609                 buf.append("\n\t- produce reference info : ").append(this.produceReferenceInfo ? "ON" : "OFF"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
610                 buf.append("\n\t- parse literal expressions as constants : ").append(this.parseLiteralExpressionsAsConstants ? "ON" : "OFF"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
611                 buf.append("\n\t- encoding : ").append(this.defaultEncoding == null ? "<default>" : this.defaultEncoding); //$NON-NLS-1$ //$NON-NLS-2$
612                 buf.append("\n\t- task tags: ").append(this.taskTags == null ? "" : new String(CharOperation.concatWith(this.taskTags,',')));  //$NON-NLS-1$ //$NON-NLS-2$
613                 buf.append("\n\t- task priorities : ").append(this.taskPriorites == null ? "" : new String(CharOperation.concatWith(this.taskPriorites,','))); //$NON-NLS-1$ //$NON-NLS-2$
614                 buf.append("\n\t- report deprecation inside deprecated code : ").append(this.reportDeprecationInsideDeprecatedCode ? "ENABLED" : "DISABLED"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
615                 buf.append("\n\t- report deprecation when overriding deprecated method : ").append(this.reportDeprecationWhenOverridingDeprecatedMethod ? "ENABLED" : "DISABLED"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
616                 buf.append("\n\t- report unused parameter when implementing abstract method : ").append(this.reportUnusedParameterWhenImplementingAbstract ? "ENABLED" : "DISABLED"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
617                 buf.append("\n\t- report unused parameter when overriding concrete method : ").append(this.reportUnusedParameterWhenOverridingConcrete ? "ENABLED" : "DISABLED"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
618                 buf.append("\n\t- report constructor/setter parameter hiding existing field : ").append(this.reportSpecialParameterHidingField ? "ENABLED" : "DISABLED"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
619                 return buf.toString();
620         }
621
622         void updateSeverity(long irritant, Object severityString) {
623                 if (ERROR.equals(severityString)) {
624                         this.errorThreshold |= irritant;
625                         this.warningThreshold &= ~irritant;
626                 } else if (WARNING.equals(severityString)) {
627                         this.errorThreshold &= ~irritant;
628                         this.warningThreshold |= irritant;
629                 } else if (IGNORE.equals(severityString)) {
630                         this.errorThreshold &= ~irritant;
631                         this.warningThreshold &= ~irritant;
632                 }
633         }                               
634 //      public static long versionToJdkLevel(Object versionID) {
635 //              if (VERSION_1_1.equals(versionID)) {
636 //                      return JDK1_1;
637 //              } else if (VERSION_1_2.equals(versionID)) {
638 //                      return JDK1_2;
639 //              } else if (VERSION_1_3.equals(versionID)) {
640 //                      return JDK1_3;
641 //              } else if (VERSION_1_4.equals(versionID)) {
642 //                      return JDK1_4;
643 //              } else if (VERSION_1_5.equals(versionID)) {
644 //                      return JDK1_5;
645 //              }
646 //              return 0; // unknown
647 //      }
648
649 //      public static String versionFromJdkLevel(long jdkLevel) {
650 //              if (jdkLevel == JDK1_1) {
651 //                      return VERSION_1_1;
652 //              } else if (jdkLevel == JDK1_2) {
653 //                      return VERSION_1_2;
654 //              } else if (jdkLevel == JDK1_3) {
655 //                      return VERSION_1_3;
656 //              } else if (jdkLevel == JDK1_4) {
657 //                      return VERSION_1_4;
658 //              } else if (jdkLevel == JDK1_5) {
659 //                      return VERSION_1_5;
660 //              }
661 //              return ""; // unknown version //$NON-NLS-1$
662 //      }
663 }