示例#1
0
        private void AddRowToPulseGrid(int Id, ClousotAnalysisState obj)
        {
            var fields = typeof(ClousotAnalysisState).GetFields();

            var row = new string[fields.Count() + 1];

            row[0] = Id.ToString();

            var i = 1;

            foreach (var f in fields)
            {
                var v = f.GetValue(obj);
                if (v != null)
                {
                    if (v is double)
                    {
                        row[i] = string.Format("{0,6:P1}", v);
                    }
                    else
                    {
                        row[i] = v.ToString();
                    }
                }
                i++;
            }

            InsertOrUpdate(this.clousotPulseGrid, Id, row);
        }
示例#2
0
        private void UpdateGrids()
        {
            // Clear the pulse grid
            this.clousotPulseGrid.Rows.Clear();

            var ClousotProcesses = Process.GetProcessesByName("Clousot").Union(Process.GetProcessesByName("cccheck"));

            foreach (var proc in ClousotProcesses)
            {
                var pipeName        = CommonNames.GetPipeNameForCCCheckPulse(proc.Id);
                var namedPipeClient = new NamedPipeClientStream(".", pipeName, PipeDirection.InOut);
                try
                {
                    InsertOrUpdateRowToProcessesGrid(proc);

                    namedPipeClient.Connect(20);
                    var stream = new PipeStreamSimple(namedPipeClient);

                    stream.WriteIfConnected(this.myCallBackPipe);

                    List <Tuple <string, object> > result;
                    if (stream.TryRead(out result))
                    {
                        var obj = new ClousotAnalysisState(result);
                        AddRowToPulseGrid(proc.Id, obj);
                    }
                    else
                    {
                        Trace.TraceWarning("failed to get a meaningfull answer from proc id {0}", proc.Id);
                    }
                }
                catch
                {
                    // does nothing
                }
                namedPipeClient.Close();
            }
        }
示例#3
0
    private void AddRowToPulseGrid(int Id, ClousotAnalysisState obj)
    {
      var fields = typeof(ClousotAnalysisState).GetFields();

      var row = new string[fields.Count() + 1];

      row[0] = Id.ToString();

      var i = 1;

      foreach (var f in fields)
      {
        var v = f.GetValue(obj);
        if (v != null)
        {
          if (v is double)
          {
            row[i] = string.Format("{0,6:P1}", v);
          }
          else
          {
            row[i] = v.ToString();
          }
        }
        i++;
      }

      InsertOrUpdate(this.clousotPulseGrid, Id, row);
    }
示例#4
0
    private void UpdateGrids()
    {
      // Clear the pulse grid
      this.clousotPulseGrid.Rows.Clear();

      var ClousotProcesses = Process.GetProcessesByName("Clousot").Union(Process.GetProcessesByName("cccheck"));

      foreach (var proc in ClousotProcesses)
      {
        var pipeName = CommonNames.GetPipeNameForCCCheckPulse(proc.Id);
        var namedPipeClient = new NamedPipeClientStream(".", pipeName, PipeDirection.InOut);
        try
        {
           InsertOrUpdateRowToProcessesGrid(proc);

          namedPipeClient.Connect(20);
          var stream = new PipeStreamSimple(namedPipeClient);

          stream.WriteIfConnected(this.myCallBackPipe);

          List<Tuple<string, object>> result;
          if (stream.TryRead(out result))
          {
            var obj = new ClousotAnalysisState(result);
            AddRowToPulseGrid(proc.Id, obj);
          }
          else
          {
            Trace.TraceWarning("failed to get a meaningfull answer from proc id {0}", proc.Id);
          }
        }
        catch
        {
          // does nothing
        }
        namedPipeClient.Close();
      }
    }