Esempio n. 1
0
        private string BuildTraceFileName(BuildTimeline.BuildData data)
        {
            StringBuilder builder = new StringBuilder();

            builder.Append("Trace - ");
            builder.Append($"{Path.GetFileNameWithoutExtension(data.BuildConfiguration.SolutionPath)} - ");

            if (data.BuildConfiguration.Project != null)
            {
                builder.Append($"{data.BuildConfiguration.Project} - ");
                // MSBuild requires it in the form "Project:Target"
                builder.Append($"{data.BuildConfiguration.Target.Split(':')[1]} - ");
            }
            else
            {
                builder.Append($"{data.BuildConfiguration.Target} - ");
            }

            builder.Append($"{data.BuildConfiguration.Configuration} - ");
            builder.Append($"{data.BuildConfiguration.Platform}");

            return(builder.ToString());
        }
Esempio n. 2
0
        private void CreateTimeline()
        {
            OpenFileDialog openEventsFileDialog = new OpenFileDialog();

            openEventsFileDialog.Filter = "Events dump file|*.json";

            if (openEventsFileDialog.ShowDialog() == true)
            {
                // load data from file
                string eventsJSON            = File.ReadAllText(openEventsFileDialog.FileName);
                BuildTimeline.BuildData data = JsonConvert.DeserializeObject <BuildTimeline.BuildData>(eventsJSON, new JsonSerializerSettings()
                {
                    TypeNameHandling = TypeNameHandling.Auto
                });

                SaveFileDialog saveTimelineFileDialog = new SaveFileDialog();
                saveTimelineFileDialog.Filter   = "JSON file (*.json)|*.json";
                saveTimelineFileDialog.FileName = BuildTraceFileName(data);

                if (saveTimelineFileDialog.ShowDialog() == true)
                {
                    // build a hierarchical timeline of the events
                    BuildTimeline.TimelineBuilder builder = new BuildTimeline.TimelineBuilder(data);

                    // include some post-processing
                    BuildTimeline.TimelineEntryPostProcessor.Processor postProcessors = null;

                    if (data.BuildConfiguration.UseBtPlusFlag)
                    {
                        postProcessors += BuildTimeline.TimelineEntryPostProcessor.TaskCLSingleThread;
                        postProcessors += BuildTimeline.TimelineEntryPostProcessor.TaskCLMultiThread;
                    }

                    if (data.BuildConfiguration.UseTimePlusFlag)
                    {
                        postProcessors += BuildTimeline.TimelineEntryPostProcessor.TaskLink;
                    }

                    if (data.BuildConfiguration.UseD1ReportTimeFlag)
                    {
                        postProcessors += BuildTimeline.TimelineEntryPostProcessor.FlagD1ReportTime;
                    }

                    // build a hierarchical timeline of the events
                    BuildTimeline.Timeline timeline = builder.Build(postProcessors);

                    // dump it to file
                    TimelineSerializer.ChromeTrace trace = TimelineSerializer.ChromeTracingSerializer.BuildTrace(timeline);
                    string json = JsonConvert.SerializeObject(trace,
                                                              Formatting.Indented,
                                                              new JsonSerializerSettings()
                    {
                        NullValueHandling = NullValueHandling.Ignore
                    });

                    File.WriteAllText(saveTimelineFileDialog.FileName, json);

                    MessageBox.Show("Timeline built and saved successfully", "File saved");
                }
            }
        }