public static CxWSResultPath GetPathCommentsHistory(long scanId, long pathId)
        {
            if (CommonData.IsWorkingOffline)
            {
                return(SavedResultsManager.Instance.GetResultPath(scanId, pathId));
            }
            CxWSResultPath res         = null;
            LoginResult    loginResult = getLoginResult();

            CxWebServiceClient client;

            try
            {
                client = new CxWebServiceClient(loginResult.AuthenticationData);
            }
            catch (Exception e)
            {
                Logger.Create().Error(e.ToString());
                MessageBox.Show(e.Message, "Error", MessageBoxButtons.OK);
                return(null);
            }
            CxWSResponceResultPath cXWSResponseResults = client.ServiceClient.GetPathCommentsHistory(loginResult.SessionId, scanId, pathId, CxVSWebService.ResultLabelTypeEnum.Remark);

            if (!cXWSResponseResults.IsSuccesfull)
            {
                // show error message
                MessageBox.Show(cXWSResponseResults.ErrorMessage, "Error", MessageBoxButtons.OK);
                return(null);
            }

            res = cXWSResponseResults.Path;

            return(res);
        }
        public IGraphPath FindPath(CxWSResultPath queryItem)
        {
            if (_graph == null || _graph.Paths == null)
            {
                return(null);
            }
            //gLocalViewer.Graph.Edges.Clear();
            //gLocalViewer.Graph.NodeMap.Clear();
            foreach (IGraphPath path in _graph.Paths)
            {
                if (path.DirectFlow.Count == queryItem.Nodes.Length)
                {
                    bool isFound = true;
                    for (int i = 0; i < path.DirectFlow.Count; i++)
                    {
                        IGraphItem   item     = path.DirectFlow[i];
                        CxWSPathNode pathItem = queryItem.Nodes[i];

                        if (item.Name != pathItem.Name || item.Line != pathItem.Line || item.Column != pathItem.Column)
                        {
                            isFound = false;
                            break;
                        }
                    }

                    if (isFound)
                    {
                        return(path);
                    }
                } // Check in cases when path contain 1 element, graph contain 2
                else if (path.DirectFlow.Count == 2 && queryItem.Nodes.Length == 1)
                {
                    IGraphItem   item1    = path.DirectFlow[0];
                    IGraphItem   item2    = path.DirectFlow[1];
                    CxWSPathNode pathItem = queryItem.Nodes[0];

                    if (item1.CompareTo(item2) == 0 && item1.CompareTo(pathItem) == 0)
                    {
                        return(path);
                    }
                }
                else if (path.DirectFlow.Count == 2 && queryItem.Nodes.Length > 2)
                {
                    GraphItem item1 = path.DirectFlow[0];
                    GraphItem item2 = path.DirectFlow[1];

                    CxWSPathNode pathItem1 = queryItem.Nodes[0];
                    CxWSPathNode pathItem2 = queryItem.Nodes[queryItem.Nodes.Length - 1];
                    if (item1.CompareTo(pathItem1) == 0 && item2.CompareTo(pathItem2) == 0)
                    {
                        return(path);
                    }
                }
            }

            return(null);
        }
Beispiel #3
0
        private CxWSResultPath[] GetResultPathsForQuery(XmlNode xmlNode)
        {
            List <CxWSResultPath> outputItems = new List <CxWSResultPath>();

            foreach (XmlNode resultNode in xmlNode.ChildNodes)
            {
                CxWSResultPath reportQueryItemResult = GetResultPath(resultNode);

                outputItems.Add(reportQueryItemResult);
            }


            return(outputItems.ToArray());
        }
Beispiel #4
0
        private CxWSResultPath GetResultPath(XmlNode resultNode)
        {
            int    severity           = 0;
            string assignedUser       = "";
            int    state              = 0;
            string lineValue          = resultNode.Attributes["Line"].Value ?? resultNode.Attributes["line"].Value;
            string falsePositiveValue = resultNode.Attributes["FalsePositive"].Value ?? resultNode.Attributes["falsePositive"].Value;
            string pathIdValue        = resultNode.FirstChild.Attributes["PathId"].Value ?? resultNode.FirstChild.Attributes["pathId"].Value;
            string resultIdValue      = resultNode.FirstChild.Attributes["ResultId"].Value ?? resultNode.FirstChild.Attributes["resultId"].Value;

            try
            {
                XmlAttribute severityAttribute = resultNode.Attributes["severity"] ?? resultNode.Attributes["Severity"];
                if (severityAttribute.Value != null)
                {
                    severity = (int)ReportQueryResult.SeverityTypeFromString(severityAttribute.Value);
                }
            }
            catch (Exception ex)
            {
                Logger.Create().Error(ex.ToString());
            }
            try
            {
                assignedUser = resultNode.Attributes["AssignToUser"].Value;
            }
            catch (Exception ex)
            {
                Logger.Create().Error(ex.ToString());
            }

            try
            {
                state = Convert.ToInt32(resultNode.Attributes["state"].Value);
            }
            catch (Exception ex)
            {
                Logger.Create().Error(ex.ToString());
                try
                {
                    state = falsePositiveValue != null?Convert.ToInt32(Convert.ToBoolean(falsePositiveValue)) : 0;
                }
                catch (Exception exc)
                {
                    Logger.Create().Error(exc.ToString());
                }
            }

            CxWSPathNode[] nodes = GetNodesForPath(resultNode.FirstChild);

            CxWSResultPath reportQueryItemResult = new CxWSResultPath
            {
                Comment = resultNode.Attributes["Remark"].Value ?? resultNode.Attributes["remark"].Value,
                PathId  = pathIdValue != null?Convert.ToInt32(pathIdValue) : 0,
                              Severity     = severity,
                              AssignedUser = assignedUser,
                              State        = state,
                              SimilarityId = Convert.ToInt64(resultNode.FirstChild.Attributes["SimilarityId"].Value),
                              Nodes        = nodes,
            };

            return(reportQueryItemResult);
        }
Beispiel #5
0
 public IGraphPath FindPath(CxWSResultPath queryItem)
 {
     return(tblLayout.FindPath(queryItem));
 }