示例#1
0
        /// <summary>
        /// Main method for outputting help text to the screen
        /// </summary>
        private static void WriteHelp()
        {
            HelpWriter writer = new HelpWriter();

            writer.WriteBanner("bxlcacheanalyzer.exe is a tool for doing statistical analysis, input list analysis and consistency checking of a cache.");

            writer.WriteLine("bxlcacheanalyzer.exe [/statisticalAnalysis [/contentAnalysis] | /consistencyCheck [/rehashCASContent] | inputAssertionListDump [/inputAssertionListDumpMustIncludeRegex] [/inputAssertionListDumpMustNotIncludeRegex] | /inputAssertionListCheck [/inputAssertionListSizeDisparityMinimumFactor:double]] | [/contentBreakdown] " +
                             "[/jsonString:string | /jsonFile:string] " +
                             "[/sessionIDFilter:string | /weakFingerprintInputFilepath:string] " +
                             "[/outputFile:string] " +
                             "[/weakFingerprintOutputFilepath:string]");
            writer.WriteLine();
            writer.WriteOption("statisticalAnalysis", "If specified, performs a statistical analysis of the cache and outputs the results in CSV format", shortName: "sa");
            writer.WriteOption("contentAnalysis", "If specified, includes per-session content size in the statistical analysis", shortName: "ca");
            writer.WriteOption("consistencyCheck", "If specified, performs a consistency check of the cache", shortName: "cc");
            writer.WriteOption("rehashCASContent", "If specified, all content in the CAS will be rehashed to see if any of the content has been corrupted", shortName: "rc");
            writer.WriteOption("inputAssertionListDump", "If specified, all strong fingerprints found will have their input assertion lists dumped", shortName: "id");
            writer.WriteOption("inputAssertionListDumpMustIncludeRegex", "Regex that must match in the input list", shortName: "ii");
            writer.WriteOption("inputAssertionListDumpMustNotIncludeRegex", "Regex that must not match in the input list", shortName: "in");
            writer.WriteOption("inputAssertionListCheck", "If specified, performs a check of all input assertion lists for each weak fingerprint to look for major discrepancies in list size", shortName: "ic");
            writer.WriteOption("inputAssertionListSizeDisparityMinimumFactor", "Sets the minimum factor of size disparity between input assertion lists of same weak fingerprint, defaults to " + InputAssertionListChecker.DefaultDisparityFactor, shortName: "mf");
            writer.WriteOption("contentBreakdown", "If specified, produce a CSV breaking down content for each session.", shortName: "cb");
            writer.WriteOption("jsonString", "JSON Config string of the cache", shortName: "js");
            writer.WriteOption("jsonFile", "File containing the JSON Config string of the cache", shortName: "jf");
            writer.WriteOption("sessionIDFilter", "Limits the analysis to only session IDs that match the specified regex string", shortName: "sf");
            writer.WriteOption("weakFingerprintInputFilepath", "If specified, the requested operations will be done with the weak fingerprints contained in the specified file (except for statisticalAnalysis which is always through sessions)", shortName: "wi");
            writer.WriteOption("outputFile", "The output of the tool is redirected to the file specified. If no file is specified, the output is directed to the console", shortName: "of");
            writer.WriteOption("weakFingerprintOutputFilepath", "If specified, all weak fingerprints found during execution (except for statisticalAnalysis) will be output to the specified file", shortName: "wo");
        }
示例#2
0
        public static void DisplayLogo()
        {
            var hw = new HelpWriter();

            hw.WriteLine(Resources.Help_Logo_VersionInfo);
            hw.WriteLine(Resources.Help_Logo_Copyright);
            hw.WriteLine();
        }
示例#3
0
 private static void WriteCosineDumpPipHelp(HelpWriter writer)
 {
     writer.WriteBanner("Cosine Dump Pip Analysis");
     writer.WriteModeOption(nameof(AnalysisMode.CosineDumpPip), "Generates a dump file containing information about pip(s)");
     writer.WriteLine("Required");
     writer.WriteOption(OutputFileOption, "The location of the output file.");
     writer.WriteLine("Optional");
     writer.WriteOption(PipHashOption, "The formatted semistable hash of a pip to dump (must start with 'Pip', e.g., 'PipC623BCE303738C69')");
     writer.WriteOption(PipTypeOption, "The type of pips to dump data for");
     writer.WriteOption(MetadataOnlyOption, "Dump only the metadata for the pips, no details associated with specific types of pips.");
 }
示例#4
0
文件: Args.cs 项目: kittinap/kunnjae
        private void WriteHelp()
        {
            HelpWriter writer = new HelpWriter();

            writer.WriteBanner("Tool for executing and monitoring process in a sandbox");

            writer.WriteLine("");
            writer.WriteLine("/sandboxedProcessInfo:<file>   -- Sandboxed process info input file [short: /i]");
            writer.WriteLine("/sandboxedProcessResult:<file> -- Sandboxed process result output file [short: /r]");
            writer.WriteLine("/enableTelemetry[+/-]          -- Enable telemetry [default: false]");
            writer.WriteLine("/help                          -- Print help message and exit [short: /?]");
        }
示例#5
0
        public static void DisplayLogo()
        {
            var hw = new HelpWriter();

            hw.WriteLine(string.Format(
                             Strings.HelpText_DisplayLogo_Template,
                             Branding.LongProductName,
                             Branding.Version,
                             Branding.SourceVersion
                             ));

            hw.WriteLine(Strings.HelpText_DisplayLogo_Copyright);
            hw.WriteLine();
        }
示例#6
0
文件: Args.cs 项目: kittinap/kunnjae
        public static void WriteHelp()
        {
            HelpWriter writer = new HelpWriter();

            writer.WriteLine("CreateZipPackage.exe usage:");
            writer.WriteBanner("[/inputDirectory:<input directory>] /outputFile:<output file name> [/uriEncoding(+|-)>] [/fixUnixPermissions(+|-)>] [/inputFilesRoot:<relative root for input files>] [<list of files>]");
        }
 private static void WritePackedExecutionExporterHelp(HelpWriter writer)
 {
     writer.WriteBanner("Packed Execution Exporter");
     writer.WriteModeOption(nameof(AnalysisMode.PackedExecutionExporter), "Exports the pip graph and execution data in PackedExecution format");
     writer.WriteLine("Required");
     writer.WriteOption(OutputDirectoryOption, "The location of the output directory.");
 }
示例#8
0
        public static void DisplayHelp()
        {
            var hw = new HelpWriter();

            hw.WriteLine(Resources.Help_DisplayHelp_Usage);
            hw.WriteOption("/help", Resources.Help_DisplayHelp_Help);
            hw.WriteOption("/noLogo", Resources.Help_DisplayHelp_Usage);
        }
示例#9
0
        private static void WriteHelp()
        {
            var writer = new HelpWriter();

            writer.WriteBanner("cptools.ml.offlineMapping - Tool for offline shared/nonshared prediction");
            writer.WriteLine("");
            writer.WriteOption("applicationConfig", "Required. File containing the application config parameters (json)", shortName: "ac");
            writer.WriteOption("inputDirectory", "Required. The directory where the inputs will be taken from", shortName: "id");
            writer.WriteOption("outputDirectory", "Required. The directory where the outputs will be stored", shortName: "od");
        }
示例#10
0
        public void HelpWriterVerbosity()
        {
            using (var writer = new StringWriter(CultureInfo.InvariantCulture))
            {
                HelpWriter hw = new HelpWriter(writer, 30, HelpLevel.Standard);
                hw.WriteLine("Standard", HelpLevel.Standard);
                hw.WriteLine("Verbose", HelpLevel.Verbose);

                writer.Flush();
                Assert.Equal("Standard" + Environment.NewLine, writer.ToString());
            }

            using (var writer = new StringWriter(CultureInfo.InvariantCulture))
            {
                HelpWriter hw = new HelpWriter(writer, 30, HelpLevel.Verbose);
                hw.WriteLine("Standard", HelpLevel.Standard);
                hw.WriteLine("Verbose", HelpLevel.Verbose);

                writer.Flush();
                Assert.Equal("Standard" + Environment.NewLine + "Verbose" + Environment.NewLine, writer.ToString());
            }
        }
示例#11
0
        private static void WriteHelp(Func <AnalyzerKind, Analyzer> analyzerFactory)
        {
            HelpWriter writer = new HelpWriter();

            writer.WriteBanner($"Tool for performing analysis/transformation of cached pip graphs and execution logs.");

            writer.WriteOption("Config", "Optional main config file to be used.", shortName: "c");
            writer.WriteOption("Filter", "The filter representing the scope of script specs that should be analyzed.", shortName: "f");
            writer.WriteOption("Analyzer", "One or more analyzers to run. Subsequent arguments are analyzer specific.", shortName: "a");
            writer.WriteOption($"{nameof(Fix)}[+|-]", "Whether the analyzer should fix the specs.");

            writer.WriteLine(string.Empty);
            writer.WriteLine("Analyzers:");

            foreach (var type in Enum.GetValues(typeof(AnalyzerKind)).Cast <AnalyzerKind>())
            {
                var analyzer = analyzerFactory(type);
                if (analyzer != null)
                {
                    writer.WriteBanner(I($"{type}"));
                    analyzer.WriteHelp(writer);
                }
            }
        }
示例#12
0
        private static void DisplayHelpAndExit()
        {
            var hw = new HelpWriter();

            hw.WriteLine("Microsoft (R) Build Accelerator LogGen");
            hw.WriteLine("Copyright (C) Microsoft Corporation. All rights reserved.");

            hw.WriteLine("Generates logging for BuildXL.");
            hw.WriteBanner("Usage");
            hw.WriteLine();
            hw.WriteOption(
                "output:<path>",
                "Full path to desired output cs file.",
                shortName: "o");
            hw.WriteOption(
                "reference:<path>",
                "References of the assembly passed. This is needed in case the .Net loader can't find the references using the standard .Net loading techniques.",
                shortName: "r");
            hw.WriteOption(
                "a:<key>=<value>",
                "Allows predefined strings to be used in log messages.");
            hw.WriteOption(
                "s:<path>",
                "Full path to source file.");
            hw.WriteOption(
                "namespace:<string>",
                "Namespace generated logging should be under.");
            hw.WriteOption(
                "targetFramework:<string>",
                "The dotnet target runtime to generate logging for.");
            hw.WriteOption(
                "targetRuntime:<string>",
                "The dotnet target runtime to generate logging for [ win-x64 | osx-x64 ]");

            Environment.Exit(0);
        }
示例#13
0
            private static void WriteHelp()
            {
                var writer = new HelpWriter();

                writer.WriteBanner("cptools.ml.consolidate - Tool consolidating existing build artifact files (see cptools.builddownloader)");
                writer.WriteLine("");
                writer.WriteOption("applicationConfig", "Required. File containing the application config parameters (json)", shortName: "ac");
                writer.WriteOption("inputDirectory", "Required. The directory where the inputs will be taken from", shortName: "id");
                writer.WriteOption("outputDirectory", "Required. The directory where the outputs will be stored", shortName: "od");
                writer.WriteOption("linearize", "Optional. If true, then no input will be read, only the output directory will be linearized", shortName: "lo");
                writer.WriteOption("numSamples", "Optional. The number of samples to be taken (from the global output). Defaults to 1", shortName: "ns");
                writer.WriteOption("sampleSize", "Optional. The size of each sample. Defaults to 10000", shortName: "ss");
                writer.WriteOption("buildRF", "Optional. If the samples are already created, this will only run the random forest generator", shortName: "brfo");
                writer.WriteOption("evalRF", "Optional. If the forests are already created, this will only run the evaluation phase", shortName: "erfo");
                writer.WriteOption("evalCPC", "Optional. Evaluates the whole content placement classifier using a random forest and queue/machine maps", shortName: "ecpco");
            }
示例#14
0
        private void WriteHelp()
        {
            HelpWriter writer = new HelpWriter();

            writer.WriteBanner("Tool for executing and monitoring process in a sandbox");

            writer.WriteLine("");
            writer.WriteLine("/sandboxedProcessInfo:<file>             -- Sandboxed process info input file [short: /i]");
            writer.WriteLine("/sandboxedProcessResult:<file>           -- Sandboxed process result output file [short: /r]");
            writer.WriteLine("/enableTelemetry[+/-]                    -- Enable telemetry [default: false]");
            writer.WriteLine("/showObservedAccesses[+/-]               -- Show observed file/directory accesses [default: false]");
            writer.WriteLine("                                            ReportedFileAccesses in file manifest must be set to true");
            writer.WriteLine("/help                                    -- Print help message and exit [short: /?]");
        }
示例#15
0
        private static void WriteHelp()
        {
            var writer = new HelpWriter();

            writer.WriteBanner("cptools.buildownloader - Tool for downloading a set of builds and sampling artifacts (files) from them");
            writer.WriteLine("");
            writer.WriteOption("applicationConfig", "Required. File containing the application config parameters (json)", shortName: "ac");
            writer.WriteOption("year", "Required. Year from when the builds will be taken from", shortName: "y");
            writer.WriteOption("month", "Required. Month from when the builds will be taken from", shortName: "m");
            writer.WriteOption("day", "Required. Day from when the builds will be taken from", shortName: "d");
            writer.WriteOption("numBuilds", "Required. The number of builds (from different queues) that will be sampled", shortName: "nb");
            writer.WriteOption("outputDirectory", "Required. The directory where the outputs will be stored", shortName: "od");
            writer.WriteOption("span", "Optional. Day span for build download. Starting from <day, d>, <span, sp> days will be downloaded (<numBuilds, nb> builds per day)", shortName: "sp");
            writer.WriteOption("queueDataOnly", "Optional. If set, the queue data will be downloaded (no builds will be downloaded)", shortName: "qdo");
            writer.WriteOption("includeMachineMap", "Optional. Used in conjunction with queueDataOnly. If set, the queue/machine map will be created for that specific list of queues", shortName: "imm");
        }
示例#16
0
        public void HelpWriter()
        {
            // when outputting to the console, just ensure things work without crashing...
            var hw = new HelpWriter();

            hw.WriteLine();
            hw.WriteLine("Hello");
            hw.WriteBanner("BANNER");
            hw.WriteOption("name", "description");

            using (var writer = new StringWriter(CultureInfo.InvariantCulture))
            {
                hw = new HelpWriter(writer, 30);
                hw.WriteLine();
                hw.WriteLine("A short line");
                hw.WriteLine("A long long long long long long line");
                hw.WriteOption(string.Empty, string.Empty);

                // test an option of length HelpWriter.DescriptionColumn - N
                hw.WriteOption("namenamenamenamenamenamename", string.Empty);
                hw.WriteOption("namenamenamenamenamenamename", "description");

                // test an option of length HelpWriter.DescriptionColumn - 1
                hw.WriteOption("namenamenamenamenamenamenamenam", string.Empty);
                hw.WriteOption("namenamenamenamenamenamenamenam", "description");

                // test an option of length HelpWriter.DescriptionColumn
                hw.WriteOption("namenamenamenamenamenamenamename", string.Empty);
                hw.WriteOption("namenamenamenamenamenamenamename", "description");

                // test an option of length HelpWriter.DescriptionColumn + 1
                hw.WriteOption("namenamenamenamenamenamenamenamen", string.Empty);
                hw.WriteOption("namenamenamenamenamenamenamenamen", "description");

                // test an option of length HelpWriter.DescriptionColumn + N
                hw.WriteOption("namenamenamenamenamenamenamenamenamenamenamename", string.Empty);
                hw.WriteOption("namenamenamenamenamenamenamenamenamenamenamename", "description");

                // test long option name and description
                hw.WriteOption(
                    "namenamenamenamenamenamenamenamenamenamenamename",
                    "descriptiondescriptiondescriptiondescriptiondescriptiondescription");
                hw.WriteBanner(string.Empty);
                hw.WriteBanner("banner");
                hw.WriteBanner("bannerbannerbannerbannerbannerbannerbanner");

                writer.Flush();
                string output = writer.ToString();

                string Expected =
                    Environment.NewLine + "A short line" +
                    Environment.NewLine + "A long long long long long" +
                    Environment.NewLine + "long line" +
                    Environment.NewLine + Environment.NewLine + "namenamenamenamenamenamename" +
                    Environment.NewLine + "namenamenamenamenamenamename    description" +
                    Environment.NewLine + "namenamenamenamenamenamenamenam" +
                    Environment.NewLine + "namenamenamenamenamenamenamenam description" +
                    Environment.NewLine + "namenamenamenamenamenamenamename" +
                    Environment.NewLine + "namenamenamenamenamenamenamename" +
                    Environment.NewLine + "                                description" +
                    Environment.NewLine + "namenamenamenamenamenamenamenamen" +
                    Environment.NewLine + "namenamenamenamenamenamenamenamen" +
                    Environment.NewLine + "                                description" +
                    Environment.NewLine + "namenamenamenamenamenamenamenamenamenamenamename" +
                    Environment.NewLine + "namenamenamenamenamenamenamenamenamenamenamename" +
                    Environment.NewLine + "                                description" +
                    Environment.NewLine + "namenamenamenamenamenamenamenamenamenamenamename" +
                    Environment.NewLine + "                                descriptiondescriptiondescriptiondescriptiondescriptiondescription" +
                    Environment.NewLine + Environment.NewLine + "             -  -" +
                    Environment.NewLine + Environment.NewLine + Environment.NewLine + "          - banner -" +
                    Environment.NewLine + Environment.NewLine + Environment.NewLine + "- bannerbannerbannerbannerbannerbannerbanner -" +
                    Environment.NewLine + Environment.NewLine;
                Assert.Equal(Expected, output);
            }
        }
示例#17
0
        // BUG: should display list of available qualifiers
        // BUG: should display list of available filter tags
        public static void DisplayHelp(HelpLevel helpLevel)
        {
            var hw = new HelpWriter(helpLevel);

            hw.WriteBanner(Strings.HelpText_DisplayHelp_BuildBanner);

            #region Build
            hw.WriteOption(
                "/config:<file>",
                Strings.HelpText_DisplayHelp_ConfigFile);

            hw.WriteOption(
                "/additionalConfigFile:<file>*",
                Strings.HelpText_DisplayHelp_AdditionalConfigFile,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/qualifier:<qualifier list>",
                Strings.HelpText_DisplayHelp_Qualifiers);

            hw.WriteOption(
                "/objectDirectory:<output directory>",
                Strings.HelpText_DisplayHelp_Obj);

            hw.WriteOption(
                "/tempDirectory:<temp directory>",
                Strings.HelpText_DisplayHelp_TempDirectory,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/property:<key>=<value>",
                Strings.HelpText_DisplayHelp_Property);

            hw.WriteOption(
                "<paths>",
                Strings.HelpText_DisplayHelp_Paths);
            #endregion

            hw.WriteBanner(Strings.HelpText_DisplayHelp_FilteringBanner);

            #region Filtering
            hw.WriteLine(Strings.HelpText_DisplayHelp_FilteringInfo);
            hw.WriteLine();

            hw.WriteOption(
                "/filter:<deps><filter>",
                Strings.HelpText_DisplayHelp_Filter);

            hw.WriteOption(
                "<deps>",
                Strings.HelpText_DisplayHelp_DependencySelection,
                HelpLevel.Verbose);

            hw.WriteOption(
                "<filter>",
                Strings.HelpText_DisplayHelp_Filter_Expression,
                HelpLevel.Verbose);

            hw.WriteLine(Strings.HelpText_DisplayHelp_FilterTypeExplanation, HelpLevel.Verbose);
            hw.WriteLine(HelpLevel.Verbose);

            hw.WriteOption(
                "id",
                Strings.HelpText_DisplayHelp_Filter_Id,
                HelpLevel.Verbose);

            hw.WriteOption(
                "output",
                Strings.HelpText_DisplayHelp_Filter_Output + " " +
                Strings.HelpText_DisplayHelp_Filter_PathArgument,
                HelpLevel.Verbose);

            hw.WriteOption(
                "input",
                Strings.HelpText_DisplayHelp_Filter_Input + " " +
                Strings.HelpText_DisplayHelp_Filter_PathArgument,
                HelpLevel.Verbose);

            hw.WriteOption(
                "tag",
                Strings.HelpText_DisplayHelp_Filter_Tag,
                HelpLevel.Verbose);

            hw.WriteOption(
                "value",
                Strings.HelpText_DisplayHelp_Filter_Value,
                HelpLevel.Verbose);
            hw.WriteOption(
                "valuetransitive",
                Strings.HelpText_DisplayHelp_Filter_ValueTransitive,
                HelpLevel.Verbose);

            hw.WriteOption(
                "spec",
                Strings.HelpText_DisplayHelp_Filter_Spec + " " +
                Strings.HelpText_DisplayHelp_Filter_PathArgument,
                HelpLevel.Verbose);
            hw.WriteOption(
                "spec_valuetransitive",
                Strings.HelpText_DisplayHelp_Filter_Spec_ValueTransitive,
                HelpLevel.Verbose);
            hw.WriteOption(
                "specref",
                Strings.HelpText_DisplayHelp_Filter_SpecDependencies,
                HelpLevel.Verbose);

            hw.WriteLine(Strings.HelpText_DisplayHelp_FilterFunctionExplanation, HelpLevel.Verbose);
            hw.WriteOption("dpt",
                           Strings.HelpText_DisplayHelp_Filter_DependentsFunction,
                           HelpLevel.Verbose);
            hw.WriteOption("dpc",
                           Strings.HelpText_DisplayHelp_Filter_DependenciesFunction,
                           HelpLevel.Verbose);
            hw.WriteOption("copydpt",
                           Strings.HelpText_DisplayHelp_Filter_CopyDependentsFunction,
                           HelpLevel.Verbose);
            hw.WriteOption("requiredfor",
                           Strings.HelpText_DisplayHelp_Filter_RequiredInputsFunction,
                           HelpLevel.Verbose);
            hw.WriteLine(HelpLevel.Verbose);

            hw.WriteLine(Strings.HelpText_DisplayHelp_Filter_Examples,
                         HelpLevel.Verbose);

            // Note to maintainer: if you're changing one of those samples,
            // make sure that they're valid by testing them in FilterParserTests.
            hw.WriteOption(
                "  /f:~(tag='test')",
                Strings.HelpText_DisplayHelp_FilterExampleNoTest,
                HelpLevel.Verbose);
            hw.WriteOption(
                "  /f:+spec='src\\utilities\\*'",
                Strings.HelpText_DisplayHelp_FilterExampleDirectory,
                HelpLevel.Verbose);
            hw.WriteOption(
                "  /f:(tag='csc.exe'and~(tag='test'))",
                Strings.HelpText_DisplayHelp_Filter_ExamplesBinaryFilter,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/canonicalizeFilterOutputs[+|-]",
                Strings.HelpText_DisplayHelp_CanonicalizeFilterOutputs);

            // TODO: This option is DScript only. It isn't shown in the help text because we have the goal of
            // removing it and unifying it with the standard filtering above.
            // hw.WriteOption("scriptFile"
            #endregion

            hw.WriteBanner(Strings.HelpText_DisplayHelp_LoggingBanner);

            #region Logging

            hw.WriteOption(
                "/maxNumPipTelemetryBatches:<int>",
                Strings.HelpText_DisplayHelp_MaxNumPipTelemetryBatches);

            hw.WriteOption(
                "/logsDirectory:<path>",
                Strings.HelpText_DisplayHelp_LogsDirectory);

            hw.WriteOption(
                "/logPrefix:<string>",
                Strings.HelpText_DisplayHelp_LogPrefix,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/logsToRetain:<number>",
                Strings.HelpText_DisplayHelp_LogsToRetain,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/customLog:<file>=<id list>",
                Strings.HelpText_DisplayHelp_CustomLog,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/noLog:<id list>",
                Strings.HelpText_DisplayHelp_NoLog,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/consoleVerbosity:<level>",
                Strings.HelpText_DisplayHelp_ConsoleVerbosity,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/fileVerbosity:<level>",
                Strings.HelpText_DisplayHelp_FileVerbosity,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/logExecution[+|-]",
                Strings.HelpText_DisplayHelp_LogExecution,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/noLog:<id list>",
                Strings.HelpText_DisplayHelp_NoExecutionLog,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/logProcesses[+|-]",
                Strings.HelpText_DisplayHelp_LogProcesses,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/logProcessData[+|-]",
                Strings.HelpText_DisplayHelp_LogProcessData,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/logFileAccessTables[+|-]",
                Strings.HelpText_DisplayHelp_LogFileEnforcementTables,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/logObservedFileAccesses[+|-]",
                Strings.HelpText_DisplayHelp_LogObservedAccesses,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/logOutput:<option>",
                Strings.HelpText_DisplayHelp_LogOutput,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/environment:<environment>",
                string.Format(
                    CultureInfo.InvariantCulture,
                    Strings.HelpText_DisplayHelp_Environment, string.Join(",", Enum.GetNames(typeof(BuildXL.Utilities.Configuration.ExecutionEnvironment)))),
                HelpLevel.Verbose);

            hw.WriteOption(
                "/remoteTelemetry[+|-]",
                Strings.HelpText_DisplayHelp_RemoteTelemetry);

            hw.WriteOption(
                "/replayWarnings[+|-]",
                Strings.HelpText_DisplayHelp_ReplayWarnings);

            hw.WriteOption(
                "/logStats[+|-]",
                Strings.HelpText_DisplayHelp_LogStats,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/logStatus[+|-]",
                Strings.HelpText_DisplayHelp_LogStatus,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/traceInfo:<Key>=<Value>",
                Strings.HelpText_DisplayHelp_TraceInfo,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/logCounters[+|-]",
                Strings.HelpText_DisplayHelp_LogCounters,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/logMemory[+|-]",
                Strings.HelpText_DisplayHelp_LogMemory,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/storeFingerprints[+|-]",
                Strings.HelpText_DisplayHelp_StoreFingerprints,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/storeFingerprints:<Default|ExecutionFingerprintsOnly|IgnoreExistingEntries>",
                Strings.HelpText_DisplayHelp_StoreFingerprintsWithMode,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/substSource:[path]",
                Strings.HelpText_DisplayHelp_SubstSource,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/substTarget:[path]",
                Strings.HelpText_DisplayHelp_SubstTarget,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/fancyConsole[+|-]",
                Strings.HelpText_DisplayHelp_FancyConsole,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/fancyConsoleMaxStatusPips:<number>",
                Strings.HelpText_DisplayHelp_FancyConsoleMaxStatusPips,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/profileScript[+|-]",
                Strings.HelpText_DisplayHelp_ProfileScript,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/profileReportDestination:[path]",
                string.Format(
                    CultureInfo.InvariantCulture,
                    Strings.HelpText_DisplayHelp_ProfileReportDestination,
                    FrontEndConfigurationExtensions.DefaultProfileReportFilename),
                HelpLevel.Verbose);
            hw.WriteOption(
                "/trackBuildsInUserFolder[+-]",
                Strings.HelpText_DisplayHelp_TrackBuildsInUserFolder,
                HelpLevel.Verbose
                );
            hw.WriteOption(
                "/trackGvfsProjections[+-]",
                Strings.HelpText_DisplayHelp_TrackGvfsProjections,
                HelpLevel.Verbose
                );
            hw.WriteOption(
                "/trackMethodInvocations[+|-]",
                string.Format(
                    CultureInfo.InvariantCulture,
                    Strings.HelpText_DisplayHelp_TrackMethodInvocations),
                HelpLevel.Verbose);

            hw.WriteOption(
                "/useCustomPipDescriptionOnConsole[+|-]",
                Strings.HelpText_DisplayHelp_UseCustomPipDescriptionOnConsole,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/cacheMiss[+|-|<path>|{<changeset list}]",
                Strings.HelpText_DisplayHelp_CacheMiss,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/cacheMissDiffFormat:[format]",
                Strings.HelpText_DisplayHelp_CacheMissDiffFormat,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/scriptShowSlowest[+|-]",
                Strings.HelpText_DisplayHelp_ScriptShowSlowest,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/scriptShowLargest[+|-]",
                Strings.HelpText_DisplayHelp_ScriptShowLargest,
                HelpLevel.Verbose);

            #endregion

            hw.WriteBanner(Strings.HelpText_DisplayHelp_ErrorsAndWarningsBanner);

            #region ErrorsAndWarnings
            hw.WriteOption(
                "/warnAsError[+|-]",
                Strings.HelpText_DisplayHelp_WarnAsError,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/warnAsError[+|-]:<warn list>",
                Strings.HelpText_DisplayHelp_WarnAsErrorWithList,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/noWarn:<warn list>",
                Strings.HelpText_DisplayHelp_NoWarn,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/stopOnFirstError[+|-]",
                Strings.HelpText_DisplayHelp_StopOnFirstError);

            hw.WriteOption(
                "/color[+|-]",
                Strings.HelpText_DisplayHelp_Color,
                HelpLevel.Verbose);
            #endregion

            hw.WriteBanner(Strings.HelpText_DisplayHelp_CachingBanner);

            #region Caching
            hw.WriteOption(
                "/allowFetchingCachedGraphFromContentCache",
                Strings.HelpText_DisplayHelp_AllowFetchingCachedGraphFromContentCache,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/cacheConfigFilePath:<file>",
                Strings.HelpText_DisplayHelp_CacheConfigFilePath);

            hw.WriteOption(
                "/cacheDirectory:<artifact cache directory>",
                Strings.HelpText_DisplayHelp_CacheDirectory);

            hw.WriteOption(
                "/cacheSessionName:<unique session name>",
                Strings.HelpText_DisplayHelp_CacheSessionName,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/cacheGraph[+|-]",
                Strings.HelpText_DisplayHelp_CacheGraph,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/cacheSpecs[+|-]",
                Strings.HelpText_DisplayHelp_CacheSpecs,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/compressGraphFiles[+|-]",
                Strings.HelpText_DisplayHelp_CompressGraphFiles,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/determinismProbe[+|-]",
                Strings.HelpText_DisplayHelp_DeterminismProbeUsage,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/engineCacheDirectory:<engine cache directory>",
                Strings.HelpText_DisplayHelp_EngineCacheDirectory,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/reuseEngineState[+|-]",
                Strings.HelpText_DisplayHelp_ReuseEngineState,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/reuseOutputsOnDisk[+|-]",
                Strings.HelpText_DisplayHelp_ReuseOutputsOnDisk,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/server[+|-]",
                Strings.HelpText_DisplayHelp_Server);

            hw.WriteOption(
                "/serverMaxIdleTimeInMinutes",
                Strings.HelpText_DisplayHelp_ServerMaxIdleTimeInMinutes);

            hw.WriteOption(
                "/serverDeploymentDir",
                Strings.HelpText_DisplayHelp_ServerDeploymentDir,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/storeOutputsToCache",
                Strings.HelpText_DisplayHelp_StoreOutputsToCache,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/verifyCacheLookupPin[+|-]",
                Strings.HelpText_DisplayHelp_VerifyCacheLookupPin,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/pinCachedOutputs[+|-]",
                Strings.HelpText_DisplayHelp_PinCachedOutputs,
                HelpLevel.Verbose);


            hw.WriteOption(
                "/pathSetThreshold",
                Strings.HelpText_DisplayHelp_PathSetThreshold,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/augmentingPathSetCommonalityFactor:(0, 1]",
                Strings.HelpText_DisplayHelp_AugmentingPathSetCommonalityFactor,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/pathSetAugmentationMonitoring",
                Strings.HelpText_DisplayHelp_PathSetAugmentationMonitoring,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/vfsCasRoot<vfs cas root directory>",
                Strings.HelpText_DisplayHelp_VfsCasRoot,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/enableDedupChunk[+|-]",
                Strings.HelpText_DisplayHelp_EnableDedupChunk,
                HelpLevel.Verbose);

            #endregion

            hw.WriteBanner(Strings.HelpText_DisplayHelp_ExecutionControlBanner);

            #region ExecutionControl
            hw.WriteOption(
                "/unsafe_AllowDuplicateTemporaryDirectory[+|-]",
                Strings.HelpText_DisplayHelp_AllowDuplicateTemporaryDirectory);

            hw.WriteOption(
                "/incremental[+|-]",
                Strings.HelpText_DisplayHelp_Incremental);

            hw.WriteOption(
                "/incrementalScheduling[+|-]",
                Strings.HelpText_DisplayHelp_IncrementalScheduling);

            hw.WriteOption(
                "/useHardlinks[+|-]",
                Strings.HelpText_DisplayHelp_UseHardlinks,
                HelpLevel.Verbose);

            // This feature is used to support distributed build tests internally but is not an externally supported feature.
            // Don't include it in help text

            /*
             * hw.WriteOption(
             *  "/rootMap:<drive letter>=<path>",
             *  Strings.HelpText_DisplayHelp_RootMap,
             *  HelpLevel.Verbose);*/

            hw.WriteOption(
                "/injectCacheMisses:<rate and options>",
                Strings.HelpText_DisplayHelp_InjectCacheMisses,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/pipDefaultTimeout:<ms>",
                Strings.HelpText_DisplayHelp_PipTimeout);

            hw.WriteOption(
                "/pipDefaultWarningTimeout:<ms>",
                Strings.HelpText_DisplayHelp_PipWarningTimeout);

            hw.WriteOption(
                "/pipTimeoutMultiplier:<float>",
                Strings.HelpText_DisplayHelp_PipTimeoutMultiplier,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/pipWarningTimeoutMultiplier:<float>",
                Strings.HelpText_DisplayHelp_PipWarningTimeoutMultiplier,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/maxProc:<number of concurrent processes>",
                Strings.HelpText_DisplayHelp_MaxProc);

            hw.WriteOption(
                "/maxProcMultiplier:<double>",
                Strings.HelpText_DisplayHelp_MaxProcMultiplier,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/maxLightProc:<number of concurrent light processes>",
                Strings.HelpText_DisplayHelp_MaxLightProc);

            hw.WriteOption(
                "/maxIO:<number of concurrent I/O operations>",
                Strings.HelpText_DisplayHelp_MaxIO);

            hw.WriteOption(
                "/maxIOMultiplier:<double>",
                Strings.HelpText_DisplayHelp_MaxIOMultiplier,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/maxCacheLookup:<number of concurrent cache lookup operations>",
                Strings.HelpText_DisplayHelp_MaxCacheLookup);

            hw.WriteOption(
                "/maxChooseWorker:<number of concurrent choose worker operations>",
                Strings.HelpText_DisplayHelp_MaxCacheLookup);

            hw.WriteOption(
                "/maxMaterialize:<number of concurrent materialize operations>",
                Strings.HelpText_DisplayHelp_MaxMaterialize);

            hw.WriteOption(
                "/lowPriority[+|-]",
                Strings.HelpText_DisplayHelp_LowPriority);

            hw.WriteOption(
                "/enableHistoricCommitMemoryProjection[+|-]",
                Strings.HelpText_DisplayHelp_EnableHistoricCommitMemoryProjection,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/maxCommitUtilizationPercentage:<number>",
                Strings.HelpText_DisplayHelp_MaxCommitUtilizationPercentage,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/maxRamUtilizationPercentage:<number>",
                Strings.HelpText_DisplayHelp_MaxRamUtilizationPercentage,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/minAvailableRamMb:<number>",
                Strings.HelpText_DisplayHelp_MinAvailableRam,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/manageMemoryMode:<memory mode>",
                Strings.HelpText_DisplayHelp_ManageMemoryMode,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/phase:<engine phase>",
                Strings.HelpText_DisplayHelp_Phase);

            hw.WriteOption(
                "/maxRelativeOutputDirectoryLength:<characters>",
                Strings.HelpText_DisplayHelp_MaxRelativeOutputDirectoryLength,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/buildLockPolling:<seconds>",
                Strings.HelpText_DisplayHelp_BuildLockPolling,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/buildWaitTimeout:<minutes>",
                Strings.HelpText_DisplayHelp_BuildWaitTimeout,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/enableLazyOutputs[+|-]",
                Strings.HelpText_DisplayHelp_EnableLazyOutputs,
                HelpLevel.Verbose);
            hw.WriteOption(
                "/cleanTempDirectories[+|-]",
                Strings.HelpText_DisplayHelp_CleanTempDirectories,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/cleanOnly[+|-]",
                Strings.HelpText_DisplayHelp_CleanOnly,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/cacheOnly[+|-]",
                Strings.HelpText_DisplayHelp_CacheOnly,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/scrub[+|-]",
                Strings.HelpText_DisplayHelp_Scrub,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/scrubDirectory:<path>",
                Strings.HelpText_DisplayHelp_ScrubDirectory,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/analyzeDependencyViolations[+|-]",
                Strings.HelpText_DisplayHelp_AnalyzeDependencyViolations,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/emitSpotlightIndexingWarning[+|-]",
                Strings.HelpText_DisplayHelp_EmitSpotlightIndexingWarning,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/disableConHostSharing[+|-]",
                Strings.HelpText_DisplayHelp_DisableConHostSharing,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/scanChangeJournal[+|-]",
                Strings.HelpText_DisplayHelp_ScanChangeJournal,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/scanChangeJournalTimeLimitInSec:<seconds>",
                Strings.HelpText_DisplayHelp_ScanChangeJournalTimeLimitInSec,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/fileSystemMode<option>",
                Strings.HelpText_DisplayHelp_FileSystemMode,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/flushPageCacheToFileSystemOnStoringOutputsToCache[+|-]",
                Strings.HelpText_DisplayHelp_FlushPageCacheToFileSystemOnStoringOutputsToCache,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/unsafe_forceSkipDeps[+|-]",
                Strings.HelpText_DisplayHelp_ForceSkipDependencies,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/normalizeReadTimestamps[+|-]",
                Strings.HelpText_DisplayHelp_NormalizeReadTimestamps,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/useLargeNtClosePreallocatedList[+|-]",
                Strings.HelpText_DisplayHelp_UseLargeNtClosePreallocatedList,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/useExtraThreadToDrainNtClose[+|-]",
                Strings.HelpText_DisplayHelp_UseExtraThreadToDrainNtClose,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/maskUntrackedAccesses[+|-]",
                Strings.HelpText_DisplayHelp_MaskUntrackedAccesses,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/treatDirectoryAsAbsentFileOnHashingInputContent[+|-]",
                Strings.HelpText_DisplayHelp_TreatDirectoryAsAbsentFileOnHashingInputContent,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/unsafe_AllowCopySymlink[+|-]",
                Strings.HelpText_DisplayHelp_AllowCopySymlink,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/server[+|-]",
                Strings.HelpText_DisplayHelp_Server);

            hw.WriteOption(
                "/serverDeploymentDir",
                Strings.HelpText_DisplayHelp_ServerDeploymentDir,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/processRetries:<number of retries>",
                Strings.HelpText_DisplayHelp_ProcessRetries,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/fileChangeTrackerInitializationMode:<mode>",
                Strings.HelpText_DisplayHelp_FileChangeTrackerInitializationMode,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/fileChangeTrackingExclusionRoot:<path>",
                Strings.HelpText_DisplayHelp_FileChangeTrackingExclusionRoot,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/fileChangeTrackingInclusionRoot:<path>",
                Strings.HelpText_DisplayHelp_FileChangeTrackingInclusionRoot,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/inferNonExistenceBasedOnParentPathInRealFileSystem[+|-]",
                Strings.HelpText_DisplayHelp_InferNonExistenceBasedOnParentPathInRealFileSystem,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/outputMaterializationExclusionRoot:<path>",
                Strings.HelpText_DisplayHelp_OutputMaterializationExclusionRoot,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/enforceAccessPoliciesOnDirectoryCreation[+|-]",
                Strings.HelpText_DisplayHelp_EnforceAccessPoliciesOnDirectoryCreation,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/useFileContentTable[+|-]",
                Strings.HelpText_DisplayHelp_UseFileContentTable,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/fileContentTableFile:<path>",
                Strings.HelpText_DisplayHelp_FileContentTableFile,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/fileContentTableEntryTimeToLive:<number>",
                Strings.HelpText_DisplayHelp_FileContentTableEntryTimeToLive,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/updateFileContentTableByScanningChangeJournal[+|-]",
                Strings.HelpText_DisplayHelp_UpdateFileContentTableByScanningChangeJournal,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/adminRequiredProcessExecutionMode:<mode>",
                Strings.HelpText_DisplayHelp_AdminRequiredProcessExecutionMode,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/vmConcurrencyLimit:<max number of processes executed in VM>",
                Strings.HelpText_DisplayHelp_VmConcurrencyLimit,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/treatAbsentDirectoryAsExistentUnderOpaque[+|-]",
                Strings.HelpText_DisplayHelp_TreatAbsentDirectoryAsExistentUnderOpaque,
                HelpLevel.Verbose);

            #endregion

            hw.WriteBanner(
                Strings.HelpText_DisplayHelp_DistributedBuildBanner,
                HelpLevel.Verbose);

            #region DistributedBuild

            hw.WriteOption(
                "/distributeCacheLookups[+|-]",
                Strings.HelpText_DisplayHelp_DistributeCacheLookups,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/distributedBuildRole:<distributed build role>",
                Strings.HelpText_DisplayHelp_DistributedBuildRole,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/distributedBuildServicePort:<local TCP port>",
                Strings.HelpText_DisplayHelp_DistributedBuildServicePort,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/distributedBuildWorker:<IP address or host name>:<local TCP port>",
                Strings.HelpText_DisplayHelp_DistributedBuildWorker,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/enableWorkerSourceFileMaterialization[+|-]",
                Strings.HelpText_DisplayHelp_DistributedBuildWorkerSourceMaterialization,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/masterCpuMultiplier:<double>",
                Strings.HelpText_DisplayHelp_MasterCpuMultiplier,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/masterCacheLookupMultiplier:<double>",
                Strings.HelpText_DisplayHelp_MasterCacheLookupMultiplier,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/validateDistribution:[+|-]",
                Strings.HelpText_DisplayHelp_ValidateDistribution,
                HelpLevel.Verbose);
            #endregion

            hw.WriteBanner(Strings.HelpText_DisplayHelp_DiagBanner);

            #region Diagnostics
            hw.WriteOption(
                "/diagnostic:<area>",
                Strings.HelpText_DisplayHelp_Diagnostic);

            hw.WriteOption(
                "/experiment.<flag>[+|-]",
                GetExperimentalFlagHelp());

            hw.WriteOption(
                "/breakOnUnexpectedFileAccess[+|-]",
                Strings.HelpText_DisplayHelp_BreakOnUnexpectedFileAccess,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/unsafe_AllowMissingOutput:<filename>",
                Strings.HelpText_DisplayHelp_AllowMissingOutputs,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/TranslateDirectory:<fromPath>::<toPath>",
                Strings.HelpText_DisplayHelp_TranslateDirectory,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/unsafe_MonitorFileAccesses[+|-]",
                Strings.HelpText_DisplayHelp_EnforceFileAccesses);

            hw.WriteOption(
                "/unsafe_IgnoreZwRenameFileInformation[+|-]",
                Strings.HelpText_DisplayHelp_IgnoreZwRenameFileInformation,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/unsafe_IgnoreZwOtherFileInformation[+|-]",
                Strings.HelpText_DisplayHelp_IgnoreZwOtherFileInformation,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/unsafe_IgnoreNonCreateFileReparsePoints[+|-]",
                Strings.HelpText_DisplayHelp_IgnoreNonCreateFileReparsePoints,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/unsafe_IgnoreSetFileInformationByHandle[+|-]",
                Strings.HelpText_DisplayHelp_IgnoreSetFileInformationByHandle,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/unsafe_IgnoreReparsePoints[+|-]",
                Strings.HelpText_DisplayHelp_IgnoreReparsePoints,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/unsafe_IgnoreFullReparsePointResolving[+|-]",
                Strings.HelpText_DisplayHelp_IgnoreFullReparsePointResolving,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/unsafe_IgnorePreloadedDlls[+|-]",
                Strings.HelpText_DisplayHelp_IgnorePreloadedDlls,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/unsafe_IgnoreDynamicWritesOnAbsentProbes[+|-|:IgnoreNothing|:IgnoreDirectoryProbes|:IgnoreFileProbes|:IgnoreAll]",
                Strings.HelpText_DisplayHelp_IgnoreDynamicWritesOnAbsentProbes,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/sandboxKind:<sandbox kind>",
                Strings.HelpText_DisplayHelp_SandboxKind,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/unsafe_DisableDetours[+|-]",
                Strings.HelpText_DisplayHelp_DisableDetours,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/logProcessDetouringStatus[+|-]",
                Strings.HelpText_DisplayHelp_LogProcessDetouringStatus,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/hardExitOnErrorInDetours[+|-]",
                Strings.HelpText_DisplayHelp_HardExitOnErrorInDetours,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/checkDetoursMessageCount[+|-]",
                Strings.HelpText_DisplayHelp_CheckDetoursMessageCount,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/allowInternalDetoursErrorNotificationFile[+|-]",
                Strings.HelpText_DisplayHelp_AllowInternalDetoursErrorNotificationFile,
                HelpLevel.Verbose);

#if PLATFORM_OSX
            hw.WriteOption(
                "/kextNumberOfKextConnections:<number>",
                Strings.HelpText_DisplayHelp_KextNumberOfKextConnections,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/kextReportQueueSizeMb:<number>",
                Strings.HelpText_DisplayHelp_KextReportQueueSizeMb,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/kextThrottleCpuUsageBlockThresholdPercent:<number>",
                Strings.HelpText_DisplayHelp_KextThrottleCpuUsageBlockThresholdPercent,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/kextThrottleCpuUsageWakeupThresholdPercent:<number>",
                Strings.HelpText_DisplayHelp_KextThrottleCpuUsageWakeupThresholdPercent,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/KextThrottleMinAvailableRamMB:<number>",
                Strings.HelpText_DisplayHelp_KextThrottleMinAvailableRamMB,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/maxMemoryPressureLevel:<option>",
                Strings.HelpText_DisplayHelp_MaxMemoryPressureLevel,
                HelpLevel.Verbose);
#endif

            hw.WriteOption(
                "/unsafe_ExistingDirectoryProbesAsEnumerations[+|-]",
                Strings.HelpText_DisplayHelp_ExistingDirectoryProbesAsEnumerations,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/unsafe_ignoreGetFinalPathNameByHandle[+|-]",
                Strings.HelpText_DisplayHelp_IgnoreGetFinalPathNameByHandle,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/unsafe_IgnoreNtCreateFile[+|-]",
                Strings.HelpText_DisplayHelp_IgnoreNtCreateFile,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/unsafe_IgnoreZwCreateOpenQueryFamily[+|-]",
                Strings.HelpText_DisplayHelp_IgnoreZwCreateOpenQueryFamily,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/unsafe_OptimizedAstConversion[+|-]",
                Strings.HelpText_DisplayHelp_OptimizedAstConversion,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/unsafe_PreserveOutputs[+|-|:Reset]",
                Strings.HelpText_DisplayHelp_PreserveOutputs,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/unsafe_UnexpectedFileAccessesAreErrors[+|-]",
                Strings.HelpText_DisplayHelp_UnexpectedFileAccessesAreErrors,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/debug_LoadGraph:<fingerprint | path | name>",
                Strings.HelpText_DisplayHelp_LoadGraph,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/launchDebugger",
                Strings.HelpText_DisplayHelp_LaunchDebugger,
                HelpLevel.Verbose);
            #endregion

            hw.WriteBanner(Strings.HelpText_DisplayHelp_ScriptBanner);

            #region DScript
            hw.WriteOption(
                "/debugScript[+|-]",
                Strings.HelpText_DisplayHelp_ScriptDebugScript);
            hw.WriteOption(
                "/debuggerBreakOnExit[+|-]",
                Strings.HelpText_DisplayHelp_ScriptDebugScriptBreakOnExit);
            hw.WriteOption(
                "/debuggerPort",
                Strings.HelpText_DisplayHelp_ScriptDebugScriptPort);

            hw.WriteOption(
                "/unsafe_disableCycleDetection[+|-]",
                Strings.HelpText_DisplayHelp_DisableCycleDetection);

            hw.WriteOption(
                "/maxFrontEndConcurrency:<number of processes>",
                Strings.HelpText_DisplayHelp_MaxFrontEndConcurrency);

            hw.WriteOption(
                "/enableIncrementalFrontEnd:[+|-]",
                Strings.HelpText_DisplayHelp_EnableIncrementalFrontEnd);

            hw.WriteOption(
                "/maxTypeCheckingConcurrency[+|-]",
                Strings.HelpText_DisplayHelp_MaxTypeCheckingConcurrency);

            #endregion

            #region Component Governance Manifest
            hw.WriteBanner(Strings.HelpText_DisplayHelp_CgManifestBanner);

            hw.WriteOption("/generateCgManifestForNugets:<file>",
                           Strings.HelpText_DisplayHelp_GenerateCgManifest);

            hw.WriteOption("/validateCgManifestForNugets:<file>",
                           Strings.HelpText_DisplayHelp_ValidateCgManifest);

            #endregion

            hw.WriteBanner(Strings.HelpText_DisplayHelp_MsBuildBanner);

            #region MSBuild

            hw.WriteOption(
                "/msbuild.logVerbosity:<q[uiet] | m[inimal] | n[ormal] | d[etailed] | diag[nostic]>",
                Strings.HelpText_DisplayHelp_MsBuild_LogVerbosity);

            hw.WriteOption(
                "/msbuild.enableBinLogTracing[+|-]",
                Strings.HelpText_DisplayHelp_MsBuild_EnableBinLogTracing);

            hw.WriteOption(
                "/msbuild.enableEngineTracing[+|-]",
                Strings.HelpText_DisplayHelp_MsBuild_EnableEngineTracing);

            #endregion

            hw.WriteBanner(Strings.HelpText_DisplayHelp_MiscBanner);

            #region Misc
            hw.WriteOption(
                "/usePartialEvaluation[+|-]",
                Strings.HelpText_DisplayHelp_UsePartialEvaluation,
                HelpLevel.Verbose);

            hw.WriteOption(
                "@<file>",
                Strings.HelpText_DisplayHelp_ResponseFile);

            hw.WriteOption(
                "/help:[standard|verbose]",
                Strings.HelpText_DisplayHelp_Help);

            hw.WriteOption(
                "/interactive[+|-]",
                Strings.HelpText_DisplayHelp_Interactive,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/noLogo",
                Strings.HelpText_DisplayHelp_NoLogo);

            hw.WriteOption(
                "/snap:<file>",
                Strings.HelpText_DisplayHelp_Snapshot,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/snapshotMode:<snapshot mode>",
                Strings.HelpText_DisplayHelp_SnapshotMode,
                HelpLevel.Verbose);

            /* The viewer is currently broken. Leaving the code around so we can dust it off at some point. AB#1609082
             * hw.WriteOption(
             *  "/viewer:<mode>",
             *  Strings.HelpText_DisplayHelp_ViewerOptions);*/

            hw.WriteOption(
                "/relatedActivityId:<guid>",
                Strings.HelpText_DiplayHelp_RelatedActivityId,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/vs[+|-]",
                Strings.HelpText_DiplayHelp_VS);

            hw.WriteOption(
                "/solutionName:<string>",
                Strings.HelpText_DisplayHelp_SolutionName,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/vsOutputSrc[+|-]",
                Strings.HelpText_DisplayHelp_VsOutputSrc,
                HelpLevel.Verbose);

            hw.WriteOption(
                "/inputChanges:<file>",
                Strings.HelpText_DisplayHelp_InputChanges);

            hw.WriteOption(
                "/telemetryTagPrefix:<string>",
                Strings.HelpText_DisplayHelp_TelemetryTagPrefix);

            hw.WriteOption(
                "/unsafe_DisableGraphPostValidation[+|-]",
                Strings.HelpText_DisplayHelp_DisableGraphPostValidation);

            hw.WriteOption(
                "/logPipStaticFingerprintTexts[+|-]",
                Strings.HelpText_DisplayHelp_LogPipStaticFingerprintTexts);

            hw.WriteOption(
                "/posixDeleteMode:[NoRun|RunFirst|RunLast]",
                Strings.HelpText_DisplayHelp_PosixDeleteMode);

            hw.WriteOption("/minimumDiskSpaceForPipsGb:<int representing disk space in Gigabyte>",
                           Strings.HelpText_DisplayHelp_DiskSpaceForPip);

            hw.WriteOption("/numRetryFailedPipsOnAnotherWorker:<int>",
                           Strings.HelpText_DisplayHelp_NumberofFailedPipRetry);

            hw.WriteOption("/enablePlugins[+|-]",
                           Strings.HelpText_DisplayHelp_EnablePlugins,
                           HelpLevel.Verbose);

            hw.WriteOption("/pluginPaths:<path>",
                           Strings.HelpText_DisplayHelp_PluginPaths,
                           HelpLevel.Verbose);

            hw.WriteOption("/exitOnNewGraph",
                           Strings.HelpText_DisplayHelp_ExitOnNewGraph,
                           HelpLevel.Verbose);

            #endregion

            if (helpLevel < HelpLevel.Verbose)
            {
                hw.WriteLine();
                hw.WriteLine(Strings.HelpText_DisplayHelp_ShowingStandardHelp);
            }
        }
示例#18
0
文件: Args.cs 项目: kittinap/kunnjae
        private static void WriteHelp()
        {
            HelpWriter writer = new HelpWriter();

            writer.WriteBanner($"{Branding.AnalyzerExecutableName} - Tool for performing analysis/transformation of cached pip graphs and execution logs.");

            writer.WriteLine("");
            writer.WriteLine("Analysis Modes:");

            writer.WriteLine("");
            WriteFingerprintTextAnalyzerHelp(writer);

            writer.WriteLine("");
            WritePipGraphExporterHelp(writer);

            writer.WriteLine("");
            WriteDirMembershipHelp(writer);

            writer.WriteLine("");
            WriteDumpProcessAnalyzerHelp(writer);

            writer.WriteLine("");
            WriteExportDgmlAnalyzerHelp(writer);

            writer.WriteLine("");
            WriteObservedInputHelp(writer);

            writer.WriteLine("");
            WriteProcessDetouringHelp(writer);

            writer.WriteLine("");
            WritePipExecutionPerformanceAnalyzerHelp(writer);

            writer.WriteLine("");
            WriteObservedInputSummaryHelp(writer);

            writer.WriteLine("");
            WriteObservedAccessHelp(writer);

            writer.WriteLine("");
            WriteToolEnumerationHelp(writer);

            writer.WriteLine("");
            WriteCriticalPathAnalyzerHelp(writer);

            writer.WriteLine("");
            WriteDumpPipAnalyzerHelp(writer);

            writer.WriteLine("");
            WriteProcessRunScriptAnalyzerHelp(writer);

            writer.WriteLine("");
            WriteWhitelistAnalyzerHelp(writer);

            writer.WriteLine("");
            WriteSummaryAnalyzerHelp(writer);

            writer.WriteLine("");
            WriteBuildStatusHelp(writer);

            writer.WriteLine("");
            WriteWinIdeDependencyAnalyzeHelp(writer);

            writer.WriteLine("");
            WritePerfSummaryAnalyzerHelp(writer);

            writer.WriteLine("");
            WriteEventStatsHelp(writer);

            writer.WriteLine("");
            WriteIncrementalSchedulingStateAnalyzerHelp(writer);

            writer.WriteLine("");
            WriteFileChangeTrackerAnalyzerHelp(writer);

            writer.WriteLine("");
            WriteInputTrackerAnalyzerHelp(writer);

            writer.WriteLine("");
            WriteFingerprintStoreAnalyzerHelp(writer);

            writer.WriteLine("");
            WritePipFingerprintAnalyzerHelp(writer);

            writer.WriteLine("");
            WriteCacheMissHelp(writer);

            writer.WriteLine("");
            WriteCacheDumpHelp(writer);

            writer.WriteLine("");
            WriteBuildSimulatorHelp(writer);

#if FEATURE_VSTS_ARTIFACTSERVICES
            writer.WriteLine("");
            WriteCacheHitPredictorHelp(writer);
#endif

            writer.WriteLine("");
            WriteDependencyAnalyzerHelp(writer);

            writer.WriteLine("");
            WriteGraphDiffAnalyzerHelp(writer);

            writer.WriteLine("");
            WriteDumpMountsAnalyzerHelp(writer);

            writer.WriteLine("");
            WritePipFilterHelp(writer);

            writer.WriteLine("");
            WriteFailedPipsDumpAnalyzerHelp(writer);

            writer.WriteLine("");
            WriteCosineDumpPipHelp(writer);
        }