Ejemplo n.º 1
0
 public void Broker(object?value, IVisualizationBrokerContext context)
 {
     foreach (var d in DataExtractors)
     {
         d.Broker(value, context);
     }
 }
Ejemplo n.º 2
0
 public override void GetExtractions(VisualizationData value, IVisualizationBrokerContext context)
 {
     context.Add(
         () => value,
         new VisualizationBrokerInfo("VisualizationDataExtractor", "Visualization", 1000)
         );
 }
        public void Broker(object?value, IVisualizationBrokerContext context)
        {
            if (value is IEnumerable <int> intItems)
            {
                context.Add(() => PlotlyData.From(intItems.Select(i => (double)i)),
                            new VisualizationBrokerInfo("plot-int-array", "Plot Int Array", 1000));
            }

            if (value is IEnumerable <double> doubleItems)
            {
                context.Add(() => PlotlyData.From(doubleItems.Select(i => i)),
                            new VisualizationBrokerInfo("plot-double-array", "Plot Double Array", 1000));
            }

            if (value is IEnumerable <float> floatItems)
            {
                context.Add(() => PlotlyData.From(floatItems.Select(i => (double)i)),
                            new VisualizationBrokerInfo("plot-float-array", "Plot Float Array", 1000));
            }

            if (value is IEnumerable <decimal> decimalItems)
            {
                context.Add(() => PlotlyData.From(decimalItems.Select(i => (double)i)),
                            new VisualizationBrokerInfo("plot-decimal-array", "Plot Decimal Array", 1000));
            }
        }
        public override void GetExtractions(MethodBase value, IVisualizationBrokerContext context)
        {
            var d = new Disassembler();

            context.Add(() => new TextData(d.DisassembleMethod(value)),
                        new VisualizationBrokerInfo("il-method-body", "IL Method Body", 1000));
        }
Ejemplo n.º 5
0
 public void Broker(object?value, IVisualizationBrokerContext context)
 {
     context.Add(
         () => new TextData(value?.ToString() ?? "(null)"),
         new VisualizationBrokerInfo("ToString", "ToString", 100)
         );
 }
Ejemplo n.º 6
0
        public override void GetExtractions(IEnumerable <object> value, IVisualizationBrokerContext context)
        {
            context.Add(() =>
            {
                var data = new TableData();

                foreach (var item in value.Take(10000))
                {
                    var dict = new Dictionary <string, object>();
                    data.Items.Add(dict);

                    foreach (var m in item.GetType()
                             .GetMembers(BindingFlags.Public | BindingFlags.Instance | BindingFlags.GetProperty)
                             .OfType <PropertyInfo>())
                    {
                        var val = m.GetValue(item);
                        if (val != null)
                        {
                            dict[m.Name] = val;
                        }
                    }
                }

                return(data);
            }, new VisualizationBrokerInfo("table", "Table", 200));
        }
 public void Broker(object?value, IVisualizationBrokerContext context)
 {
     if (value is T val)
     {
         GetExtractions(val, context);
     }
 }
        public void Broker(object?value, IVisualizationBrokerContext context)
        {
            if (value is SyntaxTree tree)
            {
                value = tree.GetRoot();
            }

            if (value is SyntaxNode node)
            {
                var root = node;
                while (root.Parent != null)
                {
                    root = root.Parent;
                }

                context.Add(
                    () => new AstData(GetNode(root, node, false), root.GetText().ToString())
                {
                    FileName = "code.cs"
                },
                    new VisualizationBrokerInfo("roslyn.SyntaxTree", "Roslyn Syntax Tree", 1000)
                    );
                context.Add(
                    () => new AstData(GetNode(root, node, true), root.GetText().ToString())
                {
                    FileName = "code.cs"
                },
                    new VisualizationBrokerInfo("roslyn.SyntaxTreeWithTokens", "Roslyn Syntax Tree With Tokens", 900)
                    );
            }
        }
Ejemplo n.º 9
0
 public override void GetExtractions(string value, IVisualizationBrokerContext context)
 {
     try
     {
         var obj  = JsonConvert.DeserializeObject <JObject>(value);
         var data = JsonVisualizationData.From(obj);
         context.Add(
             () => data,
             new VisualizationBrokerInfo("JsonData", "JSON Data", 1000)
             );
     }
     catch (Exception)
     {
         // Don't report anything if an exception is thrown
     }
 }
Ejemplo n.º 10
0
        public void Broker(object?value, IVisualizationBrokerContext context)
        {
            if (value == null)
            {
                return;
            }

            var type = value.GetType();
            var m    = type.GetMethod("GetVisualizationData",
                                      BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance);

            if (m == null)
            {
                return;
            }

            object?result;

            try
            {
                result = m.Invoke(value, null);
            }
            catch (Exception e)
            {
                return;
            }

            foreach (var extraction in context.Broker(result))
            {
                context.Add(
                    extraction.GetVisualizationData,
                    new VisualizationBrokerInfo($"GetVisualizationData-{extraction.BrokerInfo.Id}",
                                                $"GetVisualizationData ({extraction.BrokerInfo.Name})",
                                                1000 + extraction.BrokerInfo.Priority)
                    );
            }
        }
        public override void GetExtractions(Control control, IVisualizationBrokerContext context)
        {
            context.Add(() =>
            {
                var root = control;
                while (root.Parent != null)
                {
                    root = root.Parent;
                }

                var controlLocationRelativeToRoot = root.PointToClient(control.PointToScreen(Point.Empty));
                var rootLocationRelativeToWindow  = (Size)root.PointToScreen(Point.Empty) - (Size)root.Bounds.Location;

                var windowBitmap         = DrawControl(root);
                var windowBitmapGraphics = Graphics.FromImage(windowBitmap);
                windowBitmapGraphics.DrawRectangle(new Pen(Brushes.Red, 3),
                                                   new Rectangle(controlLocationRelativeToRoot + rootLocationRelativeToWindow, control.ClientSize));

                return(BitmapVisualizationBroker.GetPngImageDataFromBitmap(windowBitmap));
            }, new VisualizationBrokerInfo("control-tree", "Control Tree", 1500));

            context.Add(() => BitmapVisualizationBroker.GetPngImageDataFromBitmap(DrawControl(control)),
                        new VisualizationBrokerInfo("control", "Control", 1000));
        }
 public override void GetExtractions(Bitmap value, IVisualizationBrokerContext context)
 {
     context.Add(() => GetPngImageDataFromBitmap(value),
                 new VisualizationBrokerInfo("bitmap-png", "Bitmap PNG", 1000));
 }
        public void Broker(object?value, IVisualizationBrokerContext context)
        {
            if (value == null)
            {
                return;
            }

            var type = value.GetType();

            if (type.IsGenericType)
            {
                type = type.GetGenericTypeDefinition();
            }

            var typeInfo = AssemblyDefinition.ReadAssembly(type.Assembly.Location).MainModule.GetType(type.FullName);

            if (typeInfo == null)
            {
                return;
            }
            context.Add(() =>
                        GraphData.From(new TypeReference[] { typeInfo }, (cur, nodeInfo) =>
            {
                if (cur == typeInfo)
                {
                    nodeInfo.Color = "orange";
                }

                nodeInfo.Label = cur.Name;
                var def        = cur.Resolve();
                if (def == null)
                {
                    return;
                }

                if (def.IsClass)
                {
                    if (def.BaseType != null)
                    {
                        nodeInfo.Edges.Add(new GraphData.EdgeInfo(def.BaseType));
                    }

                    foreach (var i in def.Interfaces)
                    {
                        nodeInfo.Edges.Add(new GraphData.EdgeInfo(i.InterfaceType)
                        {
                            Style = GraphData.EdgeStyle.Dashed
                        });
                    }
                }
                else if (def.IsInterface)
                {
                    foreach (var i in def.Interfaces)
                    {
                        nodeInfo.Edges.Add(new GraphData.EdgeInfo(i.InterfaceType));
                    }
                }
                else
                {
                    nodeInfo.Label = "unknown";
                }
            }),
                        new VisualizationBrokerInfo("type-hierarchy", "Type Hierarchy", 50));
        }
 public abstract void GetExtractions(T value, IVisualizationBrokerContext context);