예제 #1
0
        public Analyzer InitializeRequiredDependencyAnalyzer()
        {
            var analyzer = new RequiredDependencyAnalyzer(GetAnalysisInput());

            foreach (var opt in AnalyzerOptions)
            {
                if (opt.Name.Equals("out", StringComparison.OrdinalIgnoreCase) ||
                    opt.Name.Equals("o", StringComparison.OrdinalIgnoreCase))
                {
                    analyzer.OutputFilePath = ParseSingletonPathOption(opt, analyzer.OutputFilePath);
                }
                else if (opt.Name.Equals("pip", StringComparison.OrdinalIgnoreCase) ||
                         opt.Name.Equals("p", StringComparison.OrdinalIgnoreCase))
                {
                    analyzer.SemiStableHashes.Add(ParseSemistableHash(opt));
                }
                else if (opt.Name.Equals("noedges", StringComparison.OrdinalIgnoreCase))
                {
                    analyzer.AddEdgesForPips = !ParseBooleanOption(opt);
                }
                else if (opt.Name.Equals("si", StringComparison.OrdinalIgnoreCase) ||
                         opt.Name.Equals("simulatorIncrement", StringComparison.OrdinalIgnoreCase))
                {
                    analyzer.SimulatorIncrement = ParseInt32Option(opt, 1, int.MaxValue);
                }
                else if (opt.Name.Equals("allAccesses", StringComparison.OrdinalIgnoreCase))
                {
                    analyzer.AllAccesses = ParseBooleanOption(opt);
                }
                else
                {
                    throw Error("Unknown option for required dependency analysis: {0}", opt.Name);
                }
            }

            if (string.IsNullOrWhiteSpace(analyzer.OutputFilePath))
            {
                throw Error("Output file must be specified with /out");
            }

            return(analyzer);
        }
예제 #2
0
 public WorkerAnalyzer(RequiredDependencyAnalyzer analyzer, string name)
 {
     m_analyzer = analyzer;
     Name       = name;
 }