/// <summary> /// Attempts to process the supplied command line arguments and /// reports any errors using the logger. /// Returns false if any parsing errors were encountered. /// </summary> public static bool TryProcessArgs(string[] commandLineArgs, ILogger logger, out IAnalysisPropertyProvider provider) { if (commandLineArgs == null) { throw new ArgumentNullException("commandLineArgs"); } if (logger == null) { throw new ArgumentNullException("logger"); } provider = null; IEnumerable<ArgumentInstance> arguments; // This call will fail if there are duplicate or missing arguments CommandLineParser parser = new CommandLineParser(Descriptors, false /* don't allow unrecognized arguments*/); bool parsedOk = parser.ParseArguments(commandLineArgs, logger, out arguments); if (parsedOk) { // Handler for command line analysis properties parsedOk &= CmdLineArgPropertyProvider.TryCreateProvider(arguments, logger, out provider); Debug.Assert(!parsedOk || provider != null); if (parsedOk && !AreParsedArgumentsValid(provider, logger)) { provider = null; } } return provider != null; }
public ProcessedArgs Process(string[] commandLineArgs) { ProcessedArgs processed = null; IEnumerable<ArgumentInstance> arguments; // This call will fail if there are duplicate, missing, or unrecognized arguments CommandLineParser parser = new CommandLineParser(Descriptors, false /* don't allow unrecognized */); bool parsedOk = parser.ParseArguments(commandLineArgs, this.logger, out arguments); NuGetReference analyzerRef; parsedOk &= TryParseAnalyzerRef(arguments, out analyzerRef); string sqaleFilePath; parsedOk &= TryParseSqaleFile(arguments, out sqaleFilePath); if (parsedOk) { Debug.Assert(analyzerRef != null, "Expecting to have a valid analyzer reference"); processed = new ProcessedArgs(analyzerRef, sqaleFilePath, SupportedLanguages.CSharp /* TODO: support multiple languages */ ); } return processed; }
/// <summary> /// Attempts to process the supplied command line arguments and /// reports any errors using the logger. /// Returns false if any parsing errors were encountered. /// </summary> public static bool TryProcessArgs(string[] commandLineArgs, ILogger logger, out IBootstrapperSettings settings) { if (commandLineArgs == null) { throw new ArgumentNullException("commandLineArgs"); } if (logger == null) { throw new ArgumentNullException("logger"); } settings = null; IEnumerable<ArgumentInstance> arguments; // This call will fail if there are duplicate or missing arguments CommandLineParser parser = new CommandLineParser(Descriptors, true /* allow unrecognized arguments*/); bool parsedOk = parser.ParseArguments(commandLineArgs, logger, out arguments); // Handler for command line analysis properties IAnalysisPropertyProvider cmdLineProperties; parsedOk &= CmdLineArgPropertyProvider.TryCreateProvider(arguments, logger, out cmdLineProperties); // Handler for property file IAnalysisPropertyProvider globalFileProperties; string asmPath = Path.GetDirectoryName(typeof(Bootstrapper.ArgumentProcessor).Assembly.Location); parsedOk &= FilePropertyProvider.TryCreateProvider(arguments, asmPath, logger, out globalFileProperties); AnalysisPhase phase; parsedOk &= TryGetPhase(commandLineArgs.Length, arguments, logger, out phase); Debug.Assert(!parsedOk || cmdLineProperties != null); Debug.Assert(!parsedOk || globalFileProperties != null); if (parsedOk) { Debug.Assert(cmdLineProperties != null); Debug.Assert(globalFileProperties != null); IAnalysisPropertyProvider properties = new AggregatePropertiesProvider(cmdLineProperties, globalFileProperties); IList<string> baseChildArgs = RemoveBootstrapperArgs(commandLineArgs); if (phase == AnalysisPhase.PreProcessing) { settings = CreatePreProcessorSettings(baseChildArgs, properties, globalFileProperties, logger); } else { settings = CreatePostProcessorSettings(baseChildArgs, properties, logger); } } return settings != null; }
/// <summary> /// Attempts to process the supplied command line arguments and /// reports any errors using the logger. /// Returns null unless all of the properties are valid. /// </summary> public static ProcessedArgs TryProcessArgs(string[] commandLineArgs, ILogger logger) { if (logger == null) { throw new ArgumentNullException("logger"); } ProcessedArgs processed = null; IEnumerable<ArgumentInstance> arguments; // This call will fail if there are duplicate, missing, or unrecognized arguments CommandLineParser parser = new CommandLineParser(Descriptors, false /* don't allow unrecognized */); bool parsedOk = parser.ParseArguments(commandLineArgs, logger, out arguments); // Handle the /install: command line only argument bool installLoaderTargets; parsedOk &= TryGetInstallTargetsEnabled(arguments, logger, out installLoaderTargets); // Handler for command line analysis properties IAnalysisPropertyProvider cmdLineProperties; parsedOk &= CmdLineArgPropertyProvider.TryCreateProvider(arguments, logger, out cmdLineProperties); // Handler for property file IAnalysisPropertyProvider globalFileProperties; string asmPath = Path.GetDirectoryName(typeof(PreProcessor.ArgumentProcessor).Assembly.Location); parsedOk &= FilePropertyProvider.TryCreateProvider(arguments, asmPath, logger, out globalFileProperties); if (parsedOk) { Debug.Assert(cmdLineProperties != null); Debug.Assert(globalFileProperties != null); processed = new ProcessedArgs( GetArgumentValue(KeywordIds.ProjectKey, arguments), GetArgumentValue(KeywordIds.ProjectName, arguments), GetArgumentValue(KeywordIds.ProjectVersion, arguments), installLoaderTargets, cmdLineProperties, globalFileProperties); if (!AreParsedArgumentsValid(processed, logger)) { processed = null; } } return processed; }