core/com.nokia.carbide.cpp.codescanner/src/com/nokia/carbide/cpp/internal/codescanner/config/CSConfigManager.java
author cawthron
Tue, 24 Mar 2009 22:20:21 -0500
changeset 2 d760517a8095
child 33 2d1c891725ea
permissions -rw-r--r--
new
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2
cawthron
parents:
diff changeset
     1
/*
cawthron
parents:
diff changeset
     2
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
cawthron
parents:
diff changeset
     3
* All rights reserved.
cawthron
parents:
diff changeset
     4
* This component and the accompanying materials are made available
cawthron
parents:
diff changeset
     5
* under the terms of the License "Eclipse Public License v1.0"
cawthron
parents:
diff changeset
     6
* which accompanies this distribution, and is available
cawthron
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
cawthron
parents:
diff changeset
     8
*
cawthron
parents:
diff changeset
     9
* Initial Contributors:
cawthron
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
cawthron
parents:
diff changeset
    11
*
cawthron
parents:
diff changeset
    12
* Contributors:
cawthron
parents:
diff changeset
    13
*
cawthron
parents:
diff changeset
    14
* Description: 
cawthron
parents:
diff changeset
    15
*
cawthron
parents:
diff changeset
    16
*/
cawthron
parents:
diff changeset
    17
cawthron
parents:
diff changeset
    18
package com.nokia.carbide.cpp.internal.codescanner.config;
cawthron
parents:
diff changeset
    19
cawthron
parents:
diff changeset
    20
import java.io.File;
cawthron
parents:
diff changeset
    21
import java.util.ArrayList;
cawthron
parents:
diff changeset
    22
import java.util.HashMap;
cawthron
parents:
diff changeset
    23
import java.util.Iterator;
cawthron
parents:
diff changeset
    24
import java.util.List;
cawthron
parents:
diff changeset
    25
import java.util.Map;
cawthron
parents:
diff changeset
    26
import java.util.StringTokenizer;
cawthron
parents:
diff changeset
    27
cawthron
parents:
diff changeset
    28
import org.eclipse.core.resources.IProject;
cawthron
parents:
diff changeset
    29
import org.eclipse.core.resources.IResourceChangeEvent;
cawthron
parents:
diff changeset
    30
import org.eclipse.core.resources.IResourceChangeListener;
cawthron
parents:
diff changeset
    31
import org.eclipse.core.runtime.IPath;
cawthron
parents:
diff changeset
    32
import org.eclipse.core.runtime.Path;
cawthron
parents:
diff changeset
    33
import org.eclipse.emf.common.util.EList;
cawthron
parents:
diff changeset
    34
import org.eclipse.jface.dialogs.IDialogSettings;
cawthron
parents:
diff changeset
    35
import org.eclipse.jface.preference.IPreferenceStore;
cawthron
parents:
diff changeset
    36
cawthron
parents:
diff changeset
    37
import com.nokia.carbide.cpp.internal.codescanner.CSPlugin;
cawthron
parents:
diff changeset
    38
import com.nokia.carbide.cpp.internal.codescanner.ui.CSPreferenceConstants;
cawthron
parents:
diff changeset
    39
cawthron
parents:
diff changeset
    40
/**
cawthron
parents:
diff changeset
    41
 * A class for handling global and project specific Codescanner configuration settings.
cawthron
parents:
diff changeset
    42
 */
cawthron
parents:
diff changeset
    43
public class CSConfigManager implements IResourceChangeListener {
cawthron
parents:
diff changeset
    44
cawthron
parents:
diff changeset
    45
	// name of CodeScanner configuration file generated by this plugin
cawthron
parents:
diff changeset
    46
	public static final String CS_CONFIG_SETTINGS_FILE = "carbide_cs_config.xml";
cawthron
parents:
diff changeset
    47
cawthron
parents:
diff changeset
    48
	// name of CodeScanner commandline tool
cawthron
parents:
diff changeset
    49
	public static final String CS_CMDLINE_TOOL = "codescanner.exe";
cawthron
parents:
diff changeset
    50
cawthron
parents:
diff changeset
    51
	// private members
cawthron
parents:
diff changeset
    52
	private static CSConfigSettings defaultConfig;
cawthron
parents:
diff changeset
    53
	private String codescannerDir = null;
cawthron
parents:
diff changeset
    54
	private String resultsDir = null;
cawthron
parents:
diff changeset
    55
	private String outputFormatArgument = null;
cawthron
parents:
diff changeset
    56
	private List<String> inputArguments = null;
cawthron
parents:
diff changeset
    57
	private boolean htmlResults = false;
cawthron
parents:
diff changeset
    58
	private boolean xmlResults = false;
cawthron
parents:
diff changeset
    59
	private Map<IProject, CSProjectSettings> settingsMap;
cawthron
parents:
diff changeset
    60
cawthron
parents:
diff changeset
    61
	/**
cawthron
parents:
diff changeset
    62
	 * Create an instance of CSConfigManager.
cawthron
parents:
diff changeset
    63
	 */
cawthron
parents:
diff changeset
    64
	public CSConfigManager() {
cawthron
parents:
diff changeset
    65
		super();
cawthron
parents:
diff changeset
    66
		defaultConfig = new CSConfigSettings();
cawthron
parents:
diff changeset
    67
		defaultConfig.loadDefaultConfig();
cawthron
parents:
diff changeset
    68
		settingsMap = new HashMap<IProject, CSProjectSettings>();
cawthron
parents:
diff changeset
    69
	}
cawthron
parents:
diff changeset
    70
	
cawthron
parents:
diff changeset
    71
	/**
cawthron
parents:
diff changeset
    72
	 * Get the default CodeScanner configuration settings.
cawthron
parents:
diff changeset
    73
	 * @return default CodeScanner configuration settings
cawthron
parents:
diff changeset
    74
	 */
cawthron
parents:
diff changeset
    75
	public CSConfigSettings getDefaultConfig() {
cawthron
parents:
diff changeset
    76
		if (defaultConfig == null) {
cawthron
parents:
diff changeset
    77
			defaultConfig = new CSConfigSettings();
cawthron
parents:
diff changeset
    78
			defaultConfig.loadDefaultConfig();
cawthron
parents:
diff changeset
    79
		}
cawthron
parents:
diff changeset
    80
		return defaultConfig;
cawthron
parents:
diff changeset
    81
	}
cawthron
parents:
diff changeset
    82
cawthron
parents:
diff changeset
    83
	/**
cawthron
parents:
diff changeset
    84
	 * Find out whether the CodeScanner commandline tool exists in the specified
cawthron
parents:
diff changeset
    85
	 * CodeScanner directory. If it does, return its full path, otherwise return null.
cawthron
parents:
diff changeset
    86
	 * @return full path of the CodeScanner commandline tool if it exists
cawthron
parents:
diff changeset
    87
	 */
cawthron
parents:
diff changeset
    88
	public String getCSCommandLineTool() {
cawthron
parents:
diff changeset
    89
        String csCmdLineTool = CS_CMDLINE_TOOL;
cawthron
parents:
diff changeset
    90
        if (codescannerDir != null && codescannerDir.length() > 0) {
cawthron
parents:
diff changeset
    91
        	csCmdLineTool = codescannerDir + csCmdLineTool;
cawthron
parents:
diff changeset
    92
		}
cawthron
parents:
diff changeset
    93
        IPath fullPath = new Path(csCmdLineTool);
cawthron
parents:
diff changeset
    94
        if (fullPath.toFile().exists()) {
cawthron
parents:
diff changeset
    95
        	return csCmdLineTool;
cawthron
parents:
diff changeset
    96
        }
cawthron
parents:
diff changeset
    97
        else {
cawthron
parents:
diff changeset
    98
        	return null;
cawthron
parents:
diff changeset
    99
        }
cawthron
parents:
diff changeset
   100
	}
cawthron
parents:
diff changeset
   101
cawthron
parents:
diff changeset
   102
	/**
cawthron
parents:
diff changeset
   103
	 * Return the directory for scanning results.
cawthron
parents:
diff changeset
   104
	 * @return the directory for scanning results
cawthron
parents:
diff changeset
   105
	 */
cawthron
parents:
diff changeset
   106
	public String getCSResultsDirectory() {
cawthron
parents:
diff changeset
   107
		return resultsDir;
cawthron
parents:
diff changeset
   108
	}
cawthron
parents:
diff changeset
   109
cawthron
parents:
diff changeset
   110
	/**
cawthron
parents:
diff changeset
   111
	 * Are we generating html reports for scanning results?
cawthron
parents:
diff changeset
   112
	 * @return true if generating html reports
cawthron
parents:
diff changeset
   113
	 */
cawthron
parents:
diff changeset
   114
	public boolean generateHtmlResults() {
cawthron
parents:
diff changeset
   115
		return htmlResults;
cawthron
parents:
diff changeset
   116
	}
cawthron
parents:
diff changeset
   117
cawthron
parents:
diff changeset
   118
	/**
cawthron
parents:
diff changeset
   119
	 * Are we generating xml reports for scanning results?
cawthron
parents:
diff changeset
   120
	 * @return true if generating xml reports
cawthron
parents:
diff changeset
   121
	 */
cawthron
parents:
diff changeset
   122
	public boolean generateXmlResults() {
cawthron
parents:
diff changeset
   123
		return xmlResults;
cawthron
parents:
diff changeset
   124
	}
cawthron
parents:
diff changeset
   125
cawthron
parents:
diff changeset
   126
	/**
cawthron
parents:
diff changeset
   127
	 * Create CodeScanner settings for a given project and store it.
cawthron
parents:
diff changeset
   128
	 * @param project - the project in question
cawthron
parents:
diff changeset
   129
	 * @return the project specific CodeScanner settings
cawthron
parents:
diff changeset
   130
	 */
cawthron
parents:
diff changeset
   131
	public CSProjectSettings createProjectSettings(IProject project) {
cawthron
parents:
diff changeset
   132
		synchronized (settingsMap) {
cawthron
parents:
diff changeset
   133
			assert(settingsMap.get(project) == null);
cawthron
parents:
diff changeset
   134
			CSProjectSettings settings = new CSProjectSettings(project);
cawthron
parents:
diff changeset
   135
			settingsMap.put(project, settings);
cawthron
parents:
diff changeset
   136
			return settings;
cawthron
parents:
diff changeset
   137
		}
cawthron
parents:
diff changeset
   138
	}
cawthron
parents:
diff changeset
   139
	
cawthron
parents:
diff changeset
   140
	/**
cawthron
parents:
diff changeset
   141
	 * Get the CodeScanner settings for a given project.
cawthron
parents:
diff changeset
   142
	 * @param project - the project in question
cawthron
parents:
diff changeset
   143
	 * @return the project specific CodeScanner settings
cawthron
parents:
diff changeset
   144
	 */
cawthron
parents:
diff changeset
   145
	public CSProjectSettings getProjectSettings(IProject project) {
cawthron
parents:
diff changeset
   146
		synchronized (settingsMap) {
cawthron
parents:
diff changeset
   147
			CSProjectSettings settings = settingsMap.get(project);
cawthron
parents:
diff changeset
   148
			if (settings == null) {
cawthron
parents:
diff changeset
   149
				settings = createProjectSettings(project);
cawthron
parents:
diff changeset
   150
			}
cawthron
parents:
diff changeset
   151
			return settings;
cawthron
parents:
diff changeset
   152
		}
cawthron
parents:
diff changeset
   153
	}
cawthron
parents:
diff changeset
   154
cawthron
parents:
diff changeset
   155
	/**
cawthron
parents:
diff changeset
   156
	 * Handle any resource change event
cawthron
parents:
diff changeset
   157
	 * @param event - the resource change event in question
cawthron
parents:
diff changeset
   158
	 */
cawthron
parents:
diff changeset
   159
	public void resourceChanged(IResourceChangeEvent event) {
cawthron
parents:
diff changeset
   160
		// remove projects from map when they are closed or deleted
cawthron
parents:
diff changeset
   161
		if (event.getType() == IResourceChangeEvent.PRE_CLOSE || event.getType() == IResourceChangeEvent.PRE_DELETE) {
cawthron
parents:
diff changeset
   162
			settingsMap.remove(event.getResource());
cawthron
parents:
diff changeset
   163
		}
cawthron
parents:
diff changeset
   164
	}
cawthron
parents:
diff changeset
   165
cawthron
parents:
diff changeset
   166
	/**
cawthron
parents:
diff changeset
   167
	 * Load either project specific or global CodeScanner configuration settings.
cawthron
parents:
diff changeset
   168
	 * @param project - project associated with currently selected resource
cawthron
parents:
diff changeset
   169
	 * @param configFilePath - path of CodeScanner configuration file
cawthron
parents:
diff changeset
   170
	 * @return true if settings has been successfully loaded
cawthron
parents:
diff changeset
   171
	 */
cawthron
parents:
diff changeset
   172
	public boolean loadConfigSettings(IProject project) {
cawthron
parents:
diff changeset
   173
		boolean success = false;
cawthron
parents:
diff changeset
   174
		if (project != null) {
cawthron
parents:
diff changeset
   175
			success = loadProjectConfigSettings(project);
cawthron
parents:
diff changeset
   176
		}
cawthron
parents:
diff changeset
   177
		if (!success) {
cawthron
parents:
diff changeset
   178
			success = loadGlobalConfigSettings();
cawthron
parents:
diff changeset
   179
		}
cawthron
parents:
diff changeset
   180
		clearArguments();
cawthron
parents:
diff changeset
   181
		return success;
cawthron
parents:
diff changeset
   182
	}
cawthron
parents:
diff changeset
   183
cawthron
parents:
diff changeset
   184
	/**
cawthron
parents:
diff changeset
   185
	 * Load project specific CodeScanner settings.
cawthron
parents:
diff changeset
   186
	 * @param project - project associated with currently selected resource
cawthron
parents:
diff changeset
   187
	 * @param configFilePath - path of CodeScanner configuration file
cawthron
parents:
diff changeset
   188
	 * @return true if settings has been successfully loaded
cawthron
parents:
diff changeset
   189
	 */
cawthron
parents:
diff changeset
   190
	public boolean loadProjectConfigSettings(IProject project) {
cawthron
parents:
diff changeset
   191
		if (project == null) {
cawthron
parents:
diff changeset
   192
			return false;
cawthron
parents:
diff changeset
   193
		}
cawthron
parents:
diff changeset
   194
		boolean success = false;
cawthron
parents:
diff changeset
   195
		CSProjectSettings projectSettings = getProjectSettings(project);
cawthron
parents:
diff changeset
   196
		IDialogSettings cSettings = projectSettings.getDialogSettings();
cawthron
parents:
diff changeset
   197
		IDialogSettings pageSettings = cSettings.getSection(CSPreferenceConstants.PROPERTY_SETTINGS_ID);
cawthron
parents:
diff changeset
   198
		if (pageSettings == null) {
cawthron
parents:
diff changeset
   199
			success = false;
cawthron
parents:
diff changeset
   200
		}
cawthron
parents:
diff changeset
   201
		else {
cawthron
parents:
diff changeset
   202
			success = pageSettings.getBoolean(CSPreferenceConstants.PROJ_SETTINGS);
cawthron
parents:
diff changeset
   203
			if (success) {
cawthron
parents:
diff changeset
   204
				codescannerDir = pageSettings.get(CSPreferenceConstants.CODESCANNER_FOLDER);
cawthron
parents:
diff changeset
   205
				htmlResults = pageSettings.getBoolean(CSPreferenceConstants.HTML_RESULTS);
cawthron
parents:
diff changeset
   206
				xmlResults = pageSettings.getBoolean(CSPreferenceConstants.XML_RESULTS);
cawthron
parents:
diff changeset
   207
				resultsDir = pageSettings.get(CSPreferenceConstants.RESULTS_FOLDER);
cawthron
parents:
diff changeset
   208
			}
cawthron
parents:
diff changeset
   209
			else {
cawthron
parents:
diff changeset
   210
				codescannerDir = "";
cawthron
parents:
diff changeset
   211
				htmlResults = false;
cawthron
parents:
diff changeset
   212
				xmlResults = false;
cawthron
parents:
diff changeset
   213
				resultsDir = "";
cawthron
parents:
diff changeset
   214
			}
cawthron
parents:
diff changeset
   215
		}
cawthron
parents:
diff changeset
   216
		return success;
cawthron
parents:
diff changeset
   217
	}
cawthron
parents:
diff changeset
   218
	
cawthron
parents:
diff changeset
   219
	/**
cawthron
parents:
diff changeset
   220
	 * Load global CodeScanner settings.
cawthron
parents:
diff changeset
   221
	 * @param project - project associated with currently selected resource
cawthron
parents:
diff changeset
   222
	 * @param configFilePath - path of CodeScanner configuration file
cawthron
parents:
diff changeset
   223
	 * @return true if settings has been successfully loaded
cawthron
parents:
diff changeset
   224
	 */
cawthron
parents:
diff changeset
   225
	public boolean loadGlobalConfigSettings() {
cawthron
parents:
diff changeset
   226
		IPreferenceStore store = CSPlugin.getCSPrefsStore();
cawthron
parents:
diff changeset
   227
		codescannerDir = store.getString(CSPreferenceConstants.CODESCANNER_FOLDER);
cawthron
parents:
diff changeset
   228
		htmlResults = store.getBoolean(CSPreferenceConstants.HTML_RESULTS);
cawthron
parents:
diff changeset
   229
		xmlResults = store.getBoolean(CSPreferenceConstants.XML_RESULTS);
cawthron
parents:
diff changeset
   230
		resultsDir = store.getString(CSPreferenceConstants.RESULTS_FOLDER);
cawthron
parents:
diff changeset
   231
		return true;
cawthron
parents:
diff changeset
   232
	}
cawthron
parents:
diff changeset
   233
	
cawthron
parents:
diff changeset
   234
	/**
cawthron
parents:
diff changeset
   235
	 * Create a CodeScanner configuration file from either project specific or 
cawthron
parents:
diff changeset
   236
	 * global CodeScanner configuration settings.
cawthron
parents:
diff changeset
   237
	 * @param project - project associated with currently selected resource
cawthron
parents:
diff changeset
   238
	 * @param configFilePath - path of CodeScanner configuration file
cawthron
parents:
diff changeset
   239
	 * @return true if configuration file has been successfully created
cawthron
parents:
diff changeset
   240
	 */
cawthron
parents:
diff changeset
   241
	public File createConfigFile(IProject project, String configFilePath) {
cawthron
parents:
diff changeset
   242
		File configFile = null;
cawthron
parents:
diff changeset
   243
		if (project != null) {
cawthron
parents:
diff changeset
   244
			configFile = createProjectConfigFile(project, configFilePath);
cawthron
parents:
diff changeset
   245
		}
cawthron
parents:
diff changeset
   246
		if (configFile == null) {
cawthron
parents:
diff changeset
   247
			configFile = createGlobalConfigFile(project, configFilePath);
cawthron
parents:
diff changeset
   248
		}
cawthron
parents:
diff changeset
   249
		return configFile;
cawthron
parents:
diff changeset
   250
	}
cawthron
parents:
diff changeset
   251
	
cawthron
parents:
diff changeset
   252
	/**
cawthron
parents:
diff changeset
   253
	 * Create a CodeScanner configuration file from project specific CodeScanner settings.
cawthron
parents:
diff changeset
   254
	 * @param configFilePath - path of CodeScanner configuration file
cawthron
parents:
diff changeset
   255
	 * @param settings - project specific CodeScanner settings
cawthron
parents:
diff changeset
   256
	 * @return CodeScanner configuration file
cawthron
parents:
diff changeset
   257
	 */
cawthron
parents:
diff changeset
   258
	public File createProjectConfigFile(IProject project, String configFilePath) {
cawthron
parents:
diff changeset
   259
		if (configFilePath.length() == 0) {
cawthron
parents:
diff changeset
   260
			return null;
cawthron
parents:
diff changeset
   261
		}
cawthron
parents:
diff changeset
   262
cawthron
parents:
diff changeset
   263
		// load project specific settings
cawthron
parents:
diff changeset
   264
		CSProjectSettings projectSettings = getProjectSettings(project);
cawthron
parents:
diff changeset
   265
		IDialogSettings cSettings = projectSettings.getDialogSettings();
cawthron
parents:
diff changeset
   266
		IDialogSettings pageSettings = cSettings.getSection(CSPreferenceConstants.PROPERTY_SETTINGS_ID);
cawthron
parents:
diff changeset
   267
		if (pageSettings == null) {
cawthron
parents:
diff changeset
   268
			return null;
cawthron
parents:
diff changeset
   269
		}
cawthron
parents:
diff changeset
   270
		if (!pageSettings.getBoolean(CSPreferenceConstants.PROJ_SETTINGS)) {
cawthron
parents:
diff changeset
   271
			return null;
cawthron
parents:
diff changeset
   272
		}
cawthron
parents:
diff changeset
   273
cawthron
parents:
diff changeset
   274
		// create and initialize a configuration file
cawthron
parents:
diff changeset
   275
		File configFile = new File(configFilePath);
cawthron
parents:
diff changeset
   276
		if (configFile.exists()) {
cawthron
parents:
diff changeset
   277
			configFile.delete();
cawthron
parents:
diff changeset
   278
		}
cawthron
parents:
diff changeset
   279
		CSConfigSettings configSettings = new CSConfigSettings();
cawthron
parents:
diff changeset
   280
		configSettings.loadDefaultConfig();
cawthron
parents:
diff changeset
   281
cawthron
parents:
diff changeset
   282
		// retrieve various stored values
cawthron
parents:
diff changeset
   283
		String fileFilterString = pageSettings.get(CSPreferenceConstants.FILE_FILTERS);
cawthron
parents:
diff changeset
   284
		if (fileFilterString != null) {
cawthron
parents:
diff changeset
   285
			StringTokenizer fileFilters = new StringTokenizer(fileFilterString, CSPreferenceConstants.DELIMETER);
cawthron
parents:
diff changeset
   286
			EList<String> fileFilterList = configSettings.getSourceFilters().getExclude();
cawthron
parents:
diff changeset
   287
			fileFilterList.clear();
cawthron
parents:
diff changeset
   288
			while (fileFilters.hasMoreTokens()) {
cawthron
parents:
diff changeset
   289
				String fileFilter = fileFilters.nextToken();
cawthron
parents:
diff changeset
   290
				fileFilterList.add(fileFilter);
cawthron
parents:
diff changeset
   291
			}
cawthron
parents:
diff changeset
   292
		}
cawthron
parents:
diff changeset
   293
cawthron
parents:
diff changeset
   294
		String scriptsString = pageSettings.get(CSPreferenceConstants.RULE_SCRIPTS);
cawthron
parents:
diff changeset
   295
		String categoriesString = pageSettings.get(CSPreferenceConstants.RULE_CATEGORIES);
cawthron
parents:
diff changeset
   296
		String severitiesString = pageSettings.get(CSPreferenceConstants.RULE_SEVERITIES);
cawthron
parents:
diff changeset
   297
		String enabledString = pageSettings.get(CSPreferenceConstants.RULES_ENABLED);
cawthron
parents:
diff changeset
   298
		if ((scriptsString != null) && 
cawthron
parents:
diff changeset
   299
			(categoriesString != null) && 
cawthron
parents:
diff changeset
   300
			(severitiesString != null) && 
cawthron
parents:
diff changeset
   301
			(enabledString != null)) {
cawthron
parents:
diff changeset
   302
			StringTokenizer scriptTokens = new StringTokenizer(scriptsString, CSPreferenceConstants.DELIMETER);
cawthron
parents:
diff changeset
   303
			StringTokenizer categoryTokens = new StringTokenizer(categoriesString, CSPreferenceConstants.DELIMETER);
cawthron
parents:
diff changeset
   304
			StringTokenizer severityTokens = new StringTokenizer(severitiesString, CSPreferenceConstants.DELIMETER);
cawthron
parents:
diff changeset
   305
			StringTokenizer enabledTokens = new StringTokenizer(enabledString, CSPreferenceConstants.DELIMETER);
cawthron
parents:
diff changeset
   306
			while (scriptTokens.hasMoreTokens() &&
cawthron
parents:
diff changeset
   307
				   categoryTokens.hasMoreTokens() &&
cawthron
parents:
diff changeset
   308
				   severityTokens.hasMoreTokens() &&
cawthron
parents:
diff changeset
   309
				   enabledTokens.hasMoreTokens()) {
cawthron
parents:
diff changeset
   310
				String scriptString = "script_" + scriptTokens.nextToken();
cawthron
parents:
diff changeset
   311
				String categoryString = categoryTokens.nextToken();
cawthron
parents:
diff changeset
   312
				String severityString = severityTokens.nextToken();
cawthron
parents:
diff changeset
   313
				int value = Integer.valueOf(enabledTokens.nextToken());
cawthron
parents:
diff changeset
   314
				boolean enabled = (value != 0);
cawthron
parents:
diff changeset
   315
				CSScript script = CSScript.toScript(scriptString);
cawthron
parents:
diff changeset
   316
				if (!script.equals(CSScript.script_unknown)) {
cawthron
parents:
diff changeset
   317
					configSettings.setScriptCategory(script, categoryString);
cawthron
parents:
diff changeset
   318
					configSettings.setScriptSeverity(script, severityString);
cawthron
parents:
diff changeset
   319
					configSettings.setScriptEnabled(script, enabled);
cawthron
parents:
diff changeset
   320
				}
cawthron
parents:
diff changeset
   321
			}
cawthron
parents:
diff changeset
   322
		}
cawthron
parents:
diff changeset
   323
cawthron
parents:
diff changeset
   324
		configSettings.setScriptCClassIgnore(pageSettings.get(CSPreferenceConstants.CCLASSIGNORE));
cawthron
parents:
diff changeset
   325
		configSettings.setScriptForbiddenWords(pageSettings.get(CSPreferenceConstants.FORBIDEENWORDS));
cawthron
parents:
diff changeset
   326
		configSettings.setScriptLFunctionIgnore(pageSettings.get(CSPreferenceConstants.LFUNCTIONIGNORE));
cawthron
parents:
diff changeset
   327
		configSettings.setScriptLongLinesLength(pageSettings.getInt(CSPreferenceConstants.LONGLINES_LENGTH));
cawthron
parents:
diff changeset
   328
		configSettings.setScriptOpenIgnore(pageSettings.get(CSPreferenceConstants.OPENIGNORE));
cawthron
parents:
diff changeset
   329
		configSettings.setScriptWorryingComments(pageSettings.get(CSPreferenceConstants.WORRYINGCOMMENTS));
cawthron
parents:
diff changeset
   330
cawthron
parents:
diff changeset
   331
		configSettings.setInputArguments(inputArguments);
cawthron
parents:
diff changeset
   332
        configSettings.setOutputFormatArgument(outputFormatArgument);
cawthron
parents:
diff changeset
   333
cawthron
parents:
diff changeset
   334
        if (isProjectKbScanningEnabled(pageSettings)) {
cawthron
parents:
diff changeset
   335
        	CSPlugin.getKbManager().clearRules();
cawthron
parents:
diff changeset
   336
            CSPlugin.getKbManager().addKBaseRulesToConfigSettings(project, configSettings);
cawthron
parents:
diff changeset
   337
        }
cawthron
parents:
diff changeset
   338
cawthron
parents:
diff changeset
   339
        // copy settings to the configuration file and return it
cawthron
parents:
diff changeset
   340
		configSettings.saveConfig(configFile);
cawthron
parents:
diff changeset
   341
		return configFile;
cawthron
parents:
diff changeset
   342
	}
cawthron
parents:
diff changeset
   343
cawthron
parents:
diff changeset
   344
	/**
cawthron
parents:
diff changeset
   345
	 * Create a CodeScanner configuration file from global CodeScanner settings.
cawthron
parents:
diff changeset
   346
	 * @param configFilePath - path of CodeScanner configuration file
cawthron
parents:
diff changeset
   347
	 * @return CodeScanner configuration file
cawthron
parents:
diff changeset
   348
	 */
cawthron
parents:
diff changeset
   349
	public File createGlobalConfigFile(IProject project, String configFilePath) {
cawthron
parents:
diff changeset
   350
		if (configFilePath.length() == 0) {
cawthron
parents:
diff changeset
   351
			return null;
cawthron
parents:
diff changeset
   352
		}
cawthron
parents:
diff changeset
   353
cawthron
parents:
diff changeset
   354
		// create and initialize a configuration file
cawthron
parents:
diff changeset
   355
		File configFile = new File(configFilePath);
cawthron
parents:
diff changeset
   356
		if (configFile.exists()) {
cawthron
parents:
diff changeset
   357
			configFile.delete();
cawthron
parents:
diff changeset
   358
		}
cawthron
parents:
diff changeset
   359
		CSConfigSettings configSettings = new CSConfigSettings();
cawthron
parents:
diff changeset
   360
		configSettings.loadDefaultConfig();
cawthron
parents:
diff changeset
   361
cawthron
parents:
diff changeset
   362
		// retrieve various stored values
cawthron
parents:
diff changeset
   363
		IPreferenceStore store = CSPlugin.getCSPrefsStore();
cawthron
parents:
diff changeset
   364
cawthron
parents:
diff changeset
   365
		String fileFilterString = store.getString(CSPreferenceConstants.FILE_FILTERS);
cawthron
parents:
diff changeset
   366
		if (fileFilterString != null) {
cawthron
parents:
diff changeset
   367
			StringTokenizer fileFilters = new StringTokenizer(fileFilterString, CSPreferenceConstants.DELIMETER);
cawthron
parents:
diff changeset
   368
			EList<String> fileFilterList = configSettings.getSourceFilters().getExclude();
cawthron
parents:
diff changeset
   369
			fileFilterList.clear();
cawthron
parents:
diff changeset
   370
			while (fileFilters.hasMoreTokens()) {
cawthron
parents:
diff changeset
   371
				String fileFilter = fileFilters.nextToken();
cawthron
parents:
diff changeset
   372
				fileFilterList.add(fileFilter);
cawthron
parents:
diff changeset
   373
			}
cawthron
parents:
diff changeset
   374
		}
cawthron
parents:
diff changeset
   375
cawthron
parents:
diff changeset
   376
		String scriptsString = store.getString(CSPreferenceConstants.RULE_SCRIPTS);
cawthron
parents:
diff changeset
   377
		String categoriesString = store.getString(CSPreferenceConstants.RULE_CATEGORIES);
cawthron
parents:
diff changeset
   378
		String severitiesString = store.getString(CSPreferenceConstants.RULE_SEVERITIES);
cawthron
parents:
diff changeset
   379
		String enabledString = store.getString(CSPreferenceConstants.RULES_ENABLED);
cawthron
parents:
diff changeset
   380
		if ((scriptsString != null) && 
cawthron
parents:
diff changeset
   381
			(categoriesString != null) && 
cawthron
parents:
diff changeset
   382
			(severitiesString != null) && 
cawthron
parents:
diff changeset
   383
			(enabledString != null)) {
cawthron
parents:
diff changeset
   384
			StringTokenizer scriptTokens = new StringTokenizer(scriptsString, CSPreferenceConstants.DELIMETER);
cawthron
parents:
diff changeset
   385
			StringTokenizer categoryTokens = new StringTokenizer(categoriesString, CSPreferenceConstants.DELIMETER);
cawthron
parents:
diff changeset
   386
			StringTokenizer severityTokens = new StringTokenizer(severitiesString, CSPreferenceConstants.DELIMETER);
cawthron
parents:
diff changeset
   387
			StringTokenizer enabledTokens = new StringTokenizer(enabledString, CSPreferenceConstants.DELIMETER);
cawthron
parents:
diff changeset
   388
			while (scriptTokens.hasMoreTokens() &&
cawthron
parents:
diff changeset
   389
				   categoryTokens.hasMoreTokens() &&
cawthron
parents:
diff changeset
   390
				   severityTokens.hasMoreTokens() &&
cawthron
parents:
diff changeset
   391
				   enabledTokens.hasMoreTokens()) {
cawthron
parents:
diff changeset
   392
				String scriptString = "script_" + scriptTokens.nextToken();
cawthron
parents:
diff changeset
   393
				String categoryString = categoryTokens.nextToken();
cawthron
parents:
diff changeset
   394
				String severityString = severityTokens.nextToken();
cawthron
parents:
diff changeset
   395
				int value = Integer.valueOf(enabledTokens.nextToken());
cawthron
parents:
diff changeset
   396
				boolean enabled = (value != 0);
cawthron
parents:
diff changeset
   397
				CSScript script = CSScript.toScript(scriptString);
cawthron
parents:
diff changeset
   398
				if (!script.equals(CSScript.script_unknown)) {
cawthron
parents:
diff changeset
   399
					configSettings.setScriptCategory(script, categoryString);
cawthron
parents:
diff changeset
   400
					configSettings.setScriptSeverity(script, severityString);
cawthron
parents:
diff changeset
   401
					configSettings.setScriptEnabled(script, enabled);
cawthron
parents:
diff changeset
   402
				}
cawthron
parents:
diff changeset
   403
			}
cawthron
parents:
diff changeset
   404
		}
cawthron
parents:
diff changeset
   405
cawthron
parents:
diff changeset
   406
		configSettings.setScriptCClassIgnore(store.getString(CSPreferenceConstants.CCLASSIGNORE));
cawthron
parents:
diff changeset
   407
		configSettings.setScriptForbiddenWords(store.getString(CSPreferenceConstants.FORBIDEENWORDS));
cawthron
parents:
diff changeset
   408
		configSettings.setScriptLFunctionIgnore(store.getString(CSPreferenceConstants.LFUNCTIONIGNORE));
cawthron
parents:
diff changeset
   409
		configSettings.setScriptLongLinesLength(store.getInt(CSPreferenceConstants.LONGLINES_LENGTH));
cawthron
parents:
diff changeset
   410
		configSettings.setScriptOpenIgnore(store.getString(CSPreferenceConstants.OPENIGNORE));
cawthron
parents:
diff changeset
   411
		configSettings.setScriptWorryingComments(store.getString(CSPreferenceConstants.WORRYINGCOMMENTS));		
cawthron
parents:
diff changeset
   412
		configSettings.setInputArguments(inputArguments);
cawthron
parents:
diff changeset
   413
        configSettings.setOutputFormatArgument(outputFormatArgument);
cawthron
parents:
diff changeset
   414
cawthron
parents:
diff changeset
   415
        if (isGlobalKbScanningEnabled()) {
cawthron
parents:
diff changeset
   416
        	CSPlugin.getKbManager().clearRules();
cawthron
parents:
diff changeset
   417
        	CSPlugin.getKbManager().addKBaseRulesToConfigSettings(project, configSettings);
cawthron
parents:
diff changeset
   418
        }
cawthron
parents:
diff changeset
   419
cawthron
parents:
diff changeset
   420
		// copy settings to the configuration file and return it
cawthron
parents:
diff changeset
   421
		configSettings.saveConfig(configFile);
cawthron
parents:
diff changeset
   422
		return configFile;
cawthron
parents:
diff changeset
   423
	}
cawthron
parents:
diff changeset
   424
cawthron
parents:
diff changeset
   425
	/**
cawthron
parents:
diff changeset
   426
	 * Load project specific CodeScanner settings from a CodeScanner configuration file.
cawthron
parents:
diff changeset
   427
	 * @param configFilePath - path of CodeScanner configuration file
cawthron
parents:
diff changeset
   428
	 * @param settings - project specific CodeScanner settings
cawthron
parents:
diff changeset
   429
	 */
cawthron
parents:
diff changeset
   430
	public void loadProjectConfigFile(String configFilePath, IDialogSettings settings) {
cawthron
parents:
diff changeset
   431
		if ((configFilePath.length() == 0) || (settings == null)) {
cawthron
parents:
diff changeset
   432
			return;
cawthron
parents:
diff changeset
   433
		}
cawthron
parents:
diff changeset
   434
cawthron
parents:
diff changeset
   435
		// load settings from a configuration file
cawthron
parents:
diff changeset
   436
		File configFile = new File(configFilePath);
cawthron
parents:
diff changeset
   437
    	CSConfigSettings configSettings = new CSConfigSettings();
cawthron
parents:
diff changeset
   438
    	configSettings.loadDefaultConfig();
cawthron
parents:
diff changeset
   439
    	if (configSettings.loadConfig(configFile)) {
cawthron
parents:
diff changeset
   440
    		// store various values
cawthron
parents:
diff changeset
   441
    		String fileFilters = "";
cawthron
parents:
diff changeset
   442
    		EList<String> fileFilterList = configSettings.getSourceFilters().getExclude();
cawthron
parents:
diff changeset
   443
    		for (Iterator<String> iterator = fileFilterList.iterator(); iterator.hasNext();) {
cawthron
parents:
diff changeset
   444
    			fileFilters += iterator.next() + CSPreferenceConstants.DELIMETER;
cawthron
parents:
diff changeset
   445
    		}
cawthron
parents:
diff changeset
   446
    		settings.put(CSPreferenceConstants.FILE_FILTERS, fileFilters);       		
cawthron
parents:
diff changeset
   447
cawthron
parents:
diff changeset
   448
    		String scriptString = "";
cawthron
parents:
diff changeset
   449
    		String categoryString = "";
cawthron
parents:
diff changeset
   450
    		String severityString = "";
cawthron
parents:
diff changeset
   451
    		String enabledString = "";
cawthron
parents:
diff changeset
   452
    		for (CSScript script : CSScript.values()) {
cawthron
parents:
diff changeset
   453
    			if (!script.equals(CSScript.script_unknown)) {
cawthron
parents:
diff changeset
   454
        			scriptString += script.toString() + CSPreferenceConstants.DELIMETER;
cawthron
parents:
diff changeset
   455
        			if (configSettings.getScript(script) != null) {
cawthron
parents:
diff changeset
   456
            			categoryString += configSettings.getScriptCategory(script) + CSPreferenceConstants.DELIMETER;
cawthron
parents:
diff changeset
   457
            			severityString += configSettings.getScriptSeverity(script) + CSPreferenceConstants.DELIMETER;
cawthron
parents:
diff changeset
   458
            			int flag = 1;
cawthron
parents:
diff changeset
   459
            			if (!configSettings.getScriptEnabled(script))
cawthron
parents:
diff changeset
   460
            				flag = 0;
cawthron
parents:
diff changeset
   461
            			enabledString += flag + CSPreferenceConstants.DELIMETER;
cawthron
parents:
diff changeset
   462
        			}
cawthron
parents:
diff changeset
   463
        			else {
cawthron
parents:
diff changeset
   464
            			categoryString += defaultConfig.getScriptCategory(script) + CSPreferenceConstants.DELIMETER;
cawthron
parents:
diff changeset
   465
            			severityString += defaultConfig.getScriptSeverity(script) + CSPreferenceConstants.DELIMETER;
cawthron
parents:
diff changeset
   466
            			int flag = 1;
cawthron
parents:
diff changeset
   467
            			if (!defaultConfig.getScriptEnabled(script))
cawthron
parents:
diff changeset
   468
            				flag = 0;
cawthron
parents:
diff changeset
   469
            			enabledString += flag + CSPreferenceConstants.DELIMETER;
cawthron
parents:
diff changeset
   470
        			}
cawthron
parents:
diff changeset
   471
    			}
cawthron
parents:
diff changeset
   472
    		}			
cawthron
parents:
diff changeset
   473
    		settings.put(CSPreferenceConstants.RULE_SCRIPTS, scriptString);
cawthron
parents:
diff changeset
   474
    		settings.put(CSPreferenceConstants.RULE_CATEGORIES, categoryString);
cawthron
parents:
diff changeset
   475
    		settings.put(CSPreferenceConstants.RULE_SEVERITIES, severityString);
cawthron
parents:
diff changeset
   476
    		settings.put(CSPreferenceConstants.RULES_ENABLED, enabledString);
cawthron
parents:
diff changeset
   477
cawthron
parents:
diff changeset
   478
    		settings.put(CSPreferenceConstants.CCLASSIGNORE, getCClassIgnoreFromConfig(configSettings));
cawthron
parents:
diff changeset
   479
    		settings.put(CSPreferenceConstants.FORBIDEENWORDS, getForbiddenWordsFromConfig(configSettings));
cawthron
parents:
diff changeset
   480
    		settings.put(CSPreferenceConstants.LFUNCTIONIGNORE, getLFunctionIgnoreFromConfig(configSettings));
cawthron
parents:
diff changeset
   481
    		settings.put(CSPreferenceConstants.LONGLINES_LENGTH, getLongLinesLengthFromConfig(configSettings));
cawthron
parents:
diff changeset
   482
    		settings.put(CSPreferenceConstants.OPENIGNORE, getOpenIgnoreFromConfig(configSettings));
cawthron
parents:
diff changeset
   483
    		settings.put(CSPreferenceConstants.WORRYINGCOMMENTS, getWorryingCommentsFromConfig(configSettings));	
cawthron
parents:
diff changeset
   484
    	}
cawthron
parents:
diff changeset
   485
	}
cawthron
parents:
diff changeset
   486
cawthron
parents:
diff changeset
   487
	/**
cawthron
parents:
diff changeset
   488
	 * Load global CodeScanner settings from a CodeScanner configuration file.
cawthron
parents:
diff changeset
   489
	 * @param configFilePath - path of CodeScanner configuration file
cawthron
parents:
diff changeset
   490
	 */
cawthron
parents:
diff changeset
   491
	public void loadGlobalConfigFile(String configFilePath) {
cawthron
parents:
diff changeset
   492
		if (configFilePath.length() == 0) {
cawthron
parents:
diff changeset
   493
			return;
cawthron
parents:
diff changeset
   494
		}
cawthron
parents:
diff changeset
   495
cawthron
parents:
diff changeset
   496
		// load settings from a configuration file
cawthron
parents:
diff changeset
   497
		File configFile = new File(configFilePath);
cawthron
parents:
diff changeset
   498
    	CSConfigSettings configSettings = new CSConfigSettings();
cawthron
parents:
diff changeset
   499
    	configSettings.loadDefaultConfig();
cawthron
parents:
diff changeset
   500
    	if (configSettings.loadConfig(configFile)) {
cawthron
parents:
diff changeset
   501
    		IPreferenceStore store = CSPlugin.getCSPrefsStore();
cawthron
parents:
diff changeset
   502
cawthron
parents:
diff changeset
   503
    		// store various values
cawthron
parents:
diff changeset
   504
    		String fileFilters = "";
cawthron
parents:
diff changeset
   505
    		EList<String> fileFilterList = configSettings.getSourceFilters().getExclude();
cawthron
parents:
diff changeset
   506
    		for (Iterator<String> iterator = fileFilterList.iterator(); iterator.hasNext();) {
cawthron
parents:
diff changeset
   507
    			fileFilters += iterator.next() + CSPreferenceConstants.DELIMETER;
cawthron
parents:
diff changeset
   508
    		}
cawthron
parents:
diff changeset
   509
    		store.setValue(CSPreferenceConstants.FILE_FILTERS, fileFilters);
cawthron
parents:
diff changeset
   510
cawthron
parents:
diff changeset
   511
    		String scriptString = "";
cawthron
parents:
diff changeset
   512
    		String categoryString = "";
cawthron
parents:
diff changeset
   513
    		String severityString = "";
cawthron
parents:
diff changeset
   514
    		String enabledString = "";
cawthron
parents:
diff changeset
   515
    		for (CSScript script : CSScript.values()) {
cawthron
parents:
diff changeset
   516
    			if (!script.equals(CSScript.script_unknown)) {
cawthron
parents:
diff changeset
   517
        			scriptString += script.toString() + CSPreferenceConstants.DELIMETER;
cawthron
parents:
diff changeset
   518
        			if (configSettings.getScript(script) != null) {
cawthron
parents:
diff changeset
   519
            			categoryString += configSettings.getScriptCategory(script) + CSPreferenceConstants.DELIMETER;
cawthron
parents:
diff changeset
   520
            			severityString += configSettings.getScriptSeverity(script) + CSPreferenceConstants.DELIMETER;
cawthron
parents:
diff changeset
   521
            			int flag = 1;
cawthron
parents:
diff changeset
   522
            			if (!configSettings.getScriptEnabled(script))
cawthron
parents:
diff changeset
   523
            				flag = 0;
cawthron
parents:
diff changeset
   524
            			enabledString += flag + CSPreferenceConstants.DELIMETER;
cawthron
parents:
diff changeset
   525
        			}
cawthron
parents:
diff changeset
   526
        			else {
cawthron
parents:
diff changeset
   527
            			categoryString += defaultConfig.getScriptCategory(script) + CSPreferenceConstants.DELIMETER;
cawthron
parents:
diff changeset
   528
            			severityString += defaultConfig.getScriptSeverity(script) + CSPreferenceConstants.DELIMETER;
cawthron
parents:
diff changeset
   529
            			int flag = 1;
cawthron
parents:
diff changeset
   530
            			if (!defaultConfig.getScriptEnabled(script))
cawthron
parents:
diff changeset
   531
            				flag = 0;
cawthron
parents:
diff changeset
   532
            			enabledString += flag + CSPreferenceConstants.DELIMETER;
cawthron
parents:
diff changeset
   533
        			}
cawthron
parents:
diff changeset
   534
    			}
cawthron
parents:
diff changeset
   535
    		}			
cawthron
parents:
diff changeset
   536
    		store.setValue(CSPreferenceConstants.RULE_SCRIPTS, scriptString);
cawthron
parents:
diff changeset
   537
    		store.setValue(CSPreferenceConstants.RULE_CATEGORIES, categoryString);
cawthron
parents:
diff changeset
   538
    		store.setValue(CSPreferenceConstants.RULE_SEVERITIES, severityString);
cawthron
parents:
diff changeset
   539
    		store.setValue(CSPreferenceConstants.RULES_ENABLED, enabledString);
cawthron
parents:
diff changeset
   540
cawthron
parents:
diff changeset
   541
    		store.setValue(CSPreferenceConstants.CCLASSIGNORE, getCClassIgnoreFromConfig(configSettings));
cawthron
parents:
diff changeset
   542
    		store.setValue(CSPreferenceConstants.FORBIDEENWORDS, getForbiddenWordsFromConfig(configSettings));
cawthron
parents:
diff changeset
   543
    		store.setValue(CSPreferenceConstants.LFUNCTIONIGNORE, getLFunctionIgnoreFromConfig(configSettings));
cawthron
parents:
diff changeset
   544
    		store.setValue(CSPreferenceConstants.LONGLINES_LENGTH, getLongLinesLengthFromConfig(configSettings));
cawthron
parents:
diff changeset
   545
        	store.setValue(CSPreferenceConstants.OPENIGNORE, getOpenIgnoreFromConfig(configSettings));
cawthron
parents:
diff changeset
   546
        	store.setValue(CSPreferenceConstants.WORRYINGCOMMENTS, getWorryingCommentsFromConfig(configSettings));	
cawthron
parents:
diff changeset
   547
    	}
cawthron
parents:
diff changeset
   548
	}
cawthron
parents:
diff changeset
   549
cawthron
parents:
diff changeset
   550
	/**
cawthron
parents:
diff changeset
   551
	 * Set the input arguments.
cawthron
parents:
diff changeset
   552
	 * @param configSettings - CodeScanner configuration settings to be set
cawthron
parents:
diff changeset
   553
	 * @param inputPaths - input paths to be converted into input arguments
cawthron
parents:
diff changeset
   554
	 */
cawthron
parents:
diff changeset
   555
	public void setInputArguments(List<IPath> inputPaths) {
cawthron
parents:
diff changeset
   556
		inputArguments = new ArrayList<String>();
cawthron
parents:
diff changeset
   557
		for (IPath inputPath : inputPaths){
cawthron
parents:
diff changeset
   558
			inputArguments.add(inputPath.toOSString());
cawthron
parents:
diff changeset
   559
		}
cawthron
parents:
diff changeset
   560
	}
cawthron
parents:
diff changeset
   561
cawthron
parents:
diff changeset
   562
	/**
cawthron
parents:
diff changeset
   563
	 * Set the output format argument.
cawthron
parents:
diff changeset
   564
	 * @param configSettings - CodeScanner configuration settings to be set
cawthron
parents:
diff changeset
   565
	 */
cawthron
parents:
diff changeset
   566
	public void setOutputFormatArgument() {
cawthron
parents:
diff changeset
   567
		outputFormatArgument = "std";
cawthron
parents:
diff changeset
   568
        if (generateHtmlResults()) {
cawthron
parents:
diff changeset
   569
        	outputFormatArgument += "|html";
cawthron
parents:
diff changeset
   570
        }
cawthron
parents:
diff changeset
   571
        if (generateXmlResults()) {
cawthron
parents:
diff changeset
   572
        	outputFormatArgument += "|xml";
cawthron
parents:
diff changeset
   573
        }
cawthron
parents:
diff changeset
   574
	}
cawthron
parents:
diff changeset
   575
cawthron
parents:
diff changeset
   576
	/**
cawthron
parents:
diff changeset
   577
	 * Clear various argument settings.
cawthron
parents:
diff changeset
   578
	 */
cawthron
parents:
diff changeset
   579
	private void clearArguments() {
cawthron
parents:
diff changeset
   580
		inputArguments = null;
cawthron
parents:
diff changeset
   581
		outputFormatArgument = null;
cawthron
parents:
diff changeset
   582
	}
cawthron
parents:
diff changeset
   583
cawthron
parents:
diff changeset
   584
	/**
cawthron
parents:
diff changeset
   585
	 * Get the C class ignore list from from a CodeScanner configuration settings. 
cawthron
parents:
diff changeset
   586
	 * If the list does not exist in, get it from the default configuration settings.
cawthron
parents:
diff changeset
   587
	 * @param configSettings - CodeScanner configuration settings to be read
cawthron
parents:
diff changeset
   588
	 * @return C class ignore list as a string
cawthron
parents:
diff changeset
   589
	 */
cawthron
parents:
diff changeset
   590
	private String getCClassIgnoreFromConfig(CSConfigSettings configSettings) {
cawthron
parents:
diff changeset
   591
		String value = configSettings.getScriptCClassIgnore();
cawthron
parents:
diff changeset
   592
		if (value == null) {
cawthron
parents:
diff changeset
   593
			value = getDefaultConfig().getScriptCClassIgnore();
cawthron
parents:
diff changeset
   594
		}
cawthron
parents:
diff changeset
   595
		return value;
cawthron
parents:
diff changeset
   596
	}
cawthron
parents:
diff changeset
   597
cawthron
parents:
diff changeset
   598
	/**
cawthron
parents:
diff changeset
   599
	 * Get the forbidden words list from from a CodeScanner configuration settings. 
cawthron
parents:
diff changeset
   600
	 * If the list does not exist in, get it from the default configuration settings.
cawthron
parents:
diff changeset
   601
	 * @param configSettings - CodeScanner configuration settings to be read
cawthron
parents:
diff changeset
   602
	 * @return forbidden words list as a string
cawthron
parents:
diff changeset
   603
	 */
cawthron
parents:
diff changeset
   604
	private String getForbiddenWordsFromConfig(CSConfigSettings configSettings) {
cawthron
parents:
diff changeset
   605
		String value = configSettings.getScriptForbiddenWords();
cawthron
parents:
diff changeset
   606
		if (value == null) {
cawthron
parents:
diff changeset
   607
			value = getDefaultConfig().getScriptForbiddenWords();
cawthron
parents:
diff changeset
   608
		}
cawthron
parents:
diff changeset
   609
		return value;
cawthron
parents:
diff changeset
   610
	}
cawthron
parents:
diff changeset
   611
cawthron
parents:
diff changeset
   612
	/**
cawthron
parents:
diff changeset
   613
	 * Get the L-function ignore list from from a CodeScanner configuration settings. 
cawthron
parents:
diff changeset
   614
	 * If the list does not exist in, get it from the default configuration settings.
cawthron
parents:
diff changeset
   615
	 * @param configSettings - CodeScanner configuration settings to be read
cawthron
parents:
diff changeset
   616
	 * @return L-function ignore list as a string
cawthron
parents:
diff changeset
   617
	 */
cawthron
parents:
diff changeset
   618
	private String getLFunctionIgnoreFromConfig(CSConfigSettings configSettings) {
cawthron
parents:
diff changeset
   619
		String value = configSettings.getScriptLFunctionIgnore();
cawthron
parents:
diff changeset
   620
		if (value == null) {
cawthron
parents:
diff changeset
   621
			value = getDefaultConfig().getScriptLFunctionIgnore();
cawthron
parents:
diff changeset
   622
		}
cawthron
parents:
diff changeset
   623
		return value;
cawthron
parents:
diff changeset
   624
	}
cawthron
parents:
diff changeset
   625
cawthron
parents:
diff changeset
   626
	/**
cawthron
parents:
diff changeset
   627
	 * Get the long lines length attribute value from a CodeScanner configuration settings.
cawthron
parents:
diff changeset
   628
	 * @param configSettings - CodeScanner configuration settings to be read
cawthron
parents:
diff changeset
   629
	 * @return the long lines length attribute value
cawthron
parents:
diff changeset
   630
	 */
cawthron
parents:
diff changeset
   631
	private int getLongLinesLengthFromConfig(CSConfigSettings configSettings) {
cawthron
parents:
diff changeset
   632
		return configSettings.getScriptLongLinesLength();
cawthron
parents:
diff changeset
   633
	}
cawthron
parents:
diff changeset
   634
cawthron
parents:
diff changeset
   635
	/**
cawthron
parents:
diff changeset
   636
	 * Get the Open() function ignore list from from a CodeScanner configuration settings. 
cawthron
parents:
diff changeset
   637
	 * If the list does not exist in, get it from the default configuration settings.
cawthron
parents:
diff changeset
   638
	 * @param configSettings - CodeScanner configuration settings to be read
cawthron
parents:
diff changeset
   639
	 * @return Open() function  ignore list as a string
cawthron
parents:
diff changeset
   640
	 */
cawthron
parents:
diff changeset
   641
	private String getOpenIgnoreFromConfig(CSConfigSettings configSettings) {
cawthron
parents:
diff changeset
   642
		String value = configSettings.getScriptOpenIgnore();
cawthron
parents:
diff changeset
   643
		if (value == null) {
cawthron
parents:
diff changeset
   644
			value = getDefaultConfig().getScriptOpenIgnore();
cawthron
parents:
diff changeset
   645
		}
cawthron
parents:
diff changeset
   646
		return value;
cawthron
parents:
diff changeset
   647
	}
cawthron
parents:
diff changeset
   648
cawthron
parents:
diff changeset
   649
	/**
cawthron
parents:
diff changeset
   650
	 * Get the worrying comments list from from a CodeScanner configuration settings. 
cawthron
parents:
diff changeset
   651
	 * If the list does not exist in, get it from the default configuration settings.
cawthron
parents:
diff changeset
   652
	 * @param configSettings - CodeScanner configuration settings to be read
cawthron
parents:
diff changeset
   653
	 * @return worrying comments list as a string
cawthron
parents:
diff changeset
   654
	 */
cawthron
parents:
diff changeset
   655
	private String getWorryingCommentsFromConfig(CSConfigSettings configSettings) {
cawthron
parents:
diff changeset
   656
		String value = configSettings.getScriptWorryingComments();
cawthron
parents:
diff changeset
   657
		if (value == null) {
cawthron
parents:
diff changeset
   658
			value = getDefaultConfig().getScriptWorryingComments();
cawthron
parents:
diff changeset
   659
		}
cawthron
parents:
diff changeset
   660
		return value;
cawthron
parents:
diff changeset
   661
	}
cawthron
parents:
diff changeset
   662
cawthron
parents:
diff changeset
   663
	/**
cawthron
parents:
diff changeset
   664
	 * Check whether to perform project specific knowledge base scanning.
cawthron
parents:
diff changeset
   665
	 * @param pageSettings - project specific settings
cawthron
parents:
diff changeset
   666
	 * @return true if performing project specific knowledge base scanning.
cawthron
parents:
diff changeset
   667
	 */
cawthron
parents:
diff changeset
   668
	private boolean isProjectKbScanningEnabled (IDialogSettings pageSettings) {
cawthron
parents:
diff changeset
   669
		return pageSettings.getBoolean(CSPreferenceConstants.KBSCANNING);
cawthron
parents:
diff changeset
   670
	}
cawthron
parents:
diff changeset
   671
cawthron
parents:
diff changeset
   672
	/**
cawthron
parents:
diff changeset
   673
	 * Check whether to perform global knowledge base scanning.
cawthron
parents:
diff changeset
   674
	 * @return true if performing global knowledge base scanning.
cawthron
parents:
diff changeset
   675
	 */
cawthron
parents:
diff changeset
   676
	private boolean isGlobalKbScanningEnabled() {
cawthron
parents:
diff changeset
   677
		return CSPlugin.getCSPrefsStore().getBoolean(CSPreferenceConstants.KBSCANNING);
cawthron
parents:
diff changeset
   678
	}
cawthron
parents:
diff changeset
   679
cawthron
parents:
diff changeset
   680
}