예제 #1
0
        private static void GetReport(ConsoleSwitches arguments, ReleaseExtractor extractor, BPRunner bpRunner)
        {
            var profile = RuleProfile.LoadFromFile();
            var rules   = bpRunner.GetRulesFromProfile(profile);
            var results = bpRunner.RunProfile(profile, extractor.Release);
            var report  = new ExcelOutputGenerator();

            report.CreateReport(arguments.ReportFile.FullName, profile, rules, results, extractor.Release);
        }
예제 #2
0
            private string SaveReport(RuleProfile profile, IEnumerable <IRule> rules, IEnumerable <Result> results, Release release)
            {
                var fileName = (!string.IsNullOrWhiteSpace(release.Name) ? release.Name : @"result") + ".xlsx";

                //var fileInfo = new FileInfo(fileName);
                release.GetAnalysisUnits();
                ExcelOutputGenerator excelGenerator = new ExcelOutputGenerator();

                excelGenerator.CreateReport(Path.GetDirectoryName(_fileName) + @"\" + fileName, profile, rules, results, release);
                return(fileName);
            }
예제 #3
0
        public object ExecuteHookingBug(Release release, string fileName)
        {
            if (release == null)
            {
                return(null);
            }
            if (string.IsNullOrWhiteSpace(fileName))
            {
                return(null);
            }
            var win32Objects = release.Objects.Where(i => i.ApplicationDefinition != null &&
                                                     i.ApplicationDefinition.ApplicationTypeInfo != null &&
                                                     !string.IsNullOrWhiteSpace(i.ApplicationDefinition.ApplicationTypeInfo.Id) &&
                                                     i.ApplicationDefinition.ApplicationTypeInfo.Id.ToLowerInvariant().StartsWith("win32")).ToList();
            var result = new List <dynamic>();

            foreach (var obj in win32Objects)
            {
                if (!obj.ApplicationDefinition.ApplicationTypeInfo.Parameters.Any(i => i.Parameter == "Path"))
                {
                    continue;
                }
                result.Add(new
                {
                    ObjectName            = obj.Name,
                    ApplicationTypeInfoId = obj.ApplicationDefinition.ApplicationTypeInfo.Id,
                    Path = obj.ApplicationDefinition.ApplicationTypeInfo.Parameters.FirstOrDefault(i => i.Parameter.Equals("Path")).Value
                });
            }
            var generator = new ExcelOutputGenerator();

            if (string.IsNullOrWhiteSpace(fileName))
            {
                return(null);
            }
            RunReport(() =>
            {
                generator.CreateReport(fileName, new[] {
                    new ExcelDataSheet()
                    {
                        SheetName = "HookReport", TableName = "HookReportTable", Data = result
                    }
                });
                return(fileName);
            });
            return(null);
        }
예제 #4
0
        public object ExecuteNonInvasiveReport(Release release, string fileName)
        {
            if (release == null)
            {
                return(null);
            }
            var appModelerResult = new List <dynamic>();
            var stagesResult     = new List <dynamic>();

            foreach (var obj in release.Objects)
            {
                var item = GetNonIvasiveReportItem(obj);
                if (item != null)
                {
                    appModelerResult.Add(item);
                }
                var stages = GetNonInvasiveReportItemFromStages(obj);
                if (stages.Any())
                {
                    stagesResult.AddRange(stages);
                }
            }
            var generator = new ExcelOutputGenerator();

            if (string.IsNullOrWhiteSpace(fileName))
            {
                return(null);
            }
            RunReport(() =>
            {
                generator.CreateReport(fileName, new[] {
                    new ExcelDataSheet()
                    {
                        SheetName = "AppModeler", TableName = "AppModelerTable", Data = appModelerResult
                    },
                    new ExcelDataSheet()
                    {
                        SheetName = "NavigateStages", TableName = "NavigateStagesTable", Data = stagesResult
                    }
                });
                return(fileName);
            });
            return(null);
        }
예제 #5
0
        private void GetReportStream(Stream inputFile, MemoryStream outputSream)
        {
            var xml = default(string);

            using (var streamReader = new StreamReader(inputFile))
            {
                xml = streamReader.ReadToEnd();
            }
            var extractor = new ReleaseExtractor(xml);

            extractor.Load();
            var bpRunner = new BPRunner();
            var profile  = RuleProfile.LoadFromFile();
            var rules    = new RuleExtractor().GetRulesFromAssembly(typeof(StageHelper).Assembly);
            var results  = bpRunner.RunProfile(profile, extractor.Release);
            var report   = new ExcelOutputGenerator();

            report.CreateReport(outputSream, profile, rules, results, extractor.Release);
        }