예제 #1
0
파일: Analysis.cs 프로젝트: pusp/o2platform
        public static void createXmlFileWithOnlyFindingsFromSmartTraceCall(String sTargetFileName,
                                                                           FindingNameFormat ffnFindingNameFormat,
                                                                           UInt32 uSmartTraceCallID,
                                                                           TraceType tTraceType,
                                                                           bool bFilterDuplicateFindings,
                                                                           bool bIgnoreRootCallInvocation,
                                                                           bool bChangeFindingData,
                                                                           O2AssessmentData_OunceV6 fadO2AssessmentDataOunceV6)
        {
            var ffstidFilter = new AnalysisFilters.filter_FindSmartTrace_byID(uSmartTraceCallID, tTraceType,
                                                                              bFilterDuplicateFindings,
                                                                              bIgnoreRootCallInvocation,
                                                                              ffnFindingNameFormat, bChangeFindingData);

            AssessmentRun arFilteredAssessmentRun = createFilteredAssessmentRunObjectBasedOnCriteria(ffstidFilter,
                                                                                                     fadO2AssessmentDataOunceV6);

            saveFilteredAssessmentRun(arFilteredAssessmentRun, sTargetFileName, fadO2AssessmentDataOunceV6);

            restoreChangedData(bChangeFindingData, fadO2AssessmentDataOunceV6);
        }
예제 #2
0
파일: Analysis.cs 프로젝트: pusp/o2platform
 public static String createAssessmentFileWithAllTraces(bool bDropDuplicateSmartTraces,
                                                        bool bIgnoreRootCallInvocation,
                                                        FindingNameFormat ffnFindingNameFormat,
                                                        bool bChangeFindingData,
                                                        O2AssessmentData_OunceV6 fadO2AssessmentDataOunceV6)
 {
     string sTargetFilename = calculateTargetFileName("ALL_TRACES", ffnFindingNameFormat);
     return createAssessmentFileWithAllTraces(bDropDuplicateSmartTraces, bIgnoreRootCallInvocation,
                                              ffnFindingNameFormat,
                                              bChangeFindingData, fadO2AssessmentDataOunceV6, sTargetFilename);
 }
예제 #3
0
파일: Analysis.cs 프로젝트: pusp/o2platform
        /* DC - Removed in order to make the SavedAssessmentFile Project non Ounce dependent
        public static void createSeparateAssessmentFileForActionObject(String sActionObjectId, FindingNameFormat ffnFindingNameFormat, bool bDropFindingsWithNoTraces, bool bFilterDuplicateFindings, bool bIgnoreRootCallInvocation, bool bChangeFindingData, o2AssessmentDataOunceV6 fadO2AssessmentData)
        {
            String sActionObjectName = Lddb.getActionObjectName(sActionObjectId);
            String sFileName = calculateTargetFileName(sActionObjectId + "_(" + sActionObjectName + ")" , ffnFindingNameFormat);
             DI.log.debug("Creating partial assessment file for ActionObjectID: {0}", sFileName);
            createXmlFileWithOnlyFindingsFromActionObject(sFileName, ffnFindingNameFormat, sActionObjectId, bDropFindingsWithNoTraces, bFilterDuplicateFindings, bIgnoreRootCallInvocation, bChangeFindingData, fadO2AssessmentData);
          //  restoreChangedData(bChangeFindingData);  
        }
        */

        public static String calculateTargetFileName(String sExtraTag, FindingNameFormat ffnFindingNameFormat)
        {
            String sTargetDirectory = Path.GetDirectoryName(sFileLoaded) + "\\Analysis";
            if (false == Directory.Exists(sTargetDirectory))
                Directory.CreateDirectory(sTargetDirectory);
            if (ffnFindingNameFormat != FindingNameFormat.FindingType)
                sExtraTag += "       (" + ffnFindingNameFormat + ")";
            return sTargetDirectory + "\\" + Path.GetFileName(sFileLoaded) + "_" + sExtraTag + ".xml";
        }
예제 #4
0
파일: Analysis.cs 프로젝트: pusp/o2platform
        public static void createXmlFileWithOnlyFindingsFromActionObject(String sTargetFileName,
                                                                         FindingNameFormat ffnFindingNameFormat,
                                                                         String sActionObjectIdToFind,
                                                                         bool bDropFindingsWithNoTraces,
                                                                         bool bFilterDuplicateFindings,
                                                                         bool bIgnoreRootCallInvocation,
                                                                         bool bChangeFindingData,
                                                                         O2AssessmentData_OunceV6 fadO2AssessmentDataOunceV6)
        {
            var ffaoFilter = new AnalysisFilters.filter_FindActionObject(sActionObjectIdToFind,
                                                                         bDropFindingsWithNoTraces,
                                                                         bFilterDuplicateFindings,
                                                                         bIgnoreRootCallInvocation, ffnFindingNameFormat,
                                                                         bChangeFindingData);
            AssessmentRun arFilteredAssessmentRun = createFilteredAssessmentRunObjectBasedOnCriteria(ffaoFilter,
                                                                                                     fadO2AssessmentDataOunceV6);

            saveFilteredAssessmentRun(arFilteredAssessmentRun, sTargetFileName, fadO2AssessmentDataOunceV6);

            restoreChangedData(bChangeFindingData, fadO2AssessmentDataOunceV6);
        }
예제 #5
0
파일: Analysis.cs 프로젝트: pusp/o2platform
        /*  public static void addFindingToDictionaries(AssessmentAssessmentFileFinding fFinding)
        {                       
            // populate ActionObjects Dictionary (dActionObjects)
            if (false == dActionObjects.ContainsKey(fFinding.actionobject_id))
            {
                List<AssessmentAssessmentFileFinding> lfFindingsInActionObject = new List<AssessmentAssessmentFileFinding>();
                lfFindingsInActionObject.Add(fFinding);
                dActionObjects.Add(fFinding.actionobject_id, lfFindingsInActionObject);
            }
            else
            {
                dActionObjects[fFinding.actionobject_id].Add(fFinding);
            }
        }*/


        // this list contains the number of items on each entry

        /* DC - Removed in order to make the SavedAssessmentFile Project non Ounce dependent
        public static void calculateActionObjects_into_DataGridView(DataGridView dgvToPopulate, o2AssessmentDataOunceV6 fadO2AssessmentData)
        {
           
            List<String> lsActionObjects = getListWithUsedActionObjects(fadO2AssessmentData);
            
            if (lsActionObjects.Count > 0)
            {                               
                String sActionObjects = "";
                for (int i = 0; i < lsActionObjects.Count; i++)
                {
                    sActionObjects += " id = " + lsActionObjects[i];
                    if (i + 1 < lsActionObjects.Count) // means we are not in the one before last
                        sActionObjects += " or ";
                }
                String sSqlQuery = Lddb.getSqlQueryForRetrivingActionObjectsData(sActionObjects);
                
                // mySql.runQueryAndPopulateDataGrid(dgvToPopulate, sSqlQuery);
                // get DataTable with ActionObjectId
                dgvToPopulate.Columns.Clear();
                System.Data.DataTable dtDataTable = o2.ounce.datalayer.mysql.OunceMyql.getDataTableFromSqlQuery(sSqlQuery, true);
                // if dtDataTable contains data, bind it to DataGridView

                if (dtDataTable.Rows.Count > 0)
                {

                    dtDataTable.Columns.Add("# Findings",typeof(Int32));
                    dtDataTable.Columns.Add("# SmartTraces", typeof(Int32));
                    dtDataTable.Columns.Add("# SmartTraces ND", typeof(Int32));
                    dtDataTable.Columns.Add("# SmartTraces IR", typeof(Int32));
                    dtDataTable.Columns.Add("# LostSinks", typeof(Int32));
                    dtDataTable.Columns.Add("# LostSinks ND", typeof(Int32));
                    dtDataTable.Columns.Add("# LostSinks IR", typeof(Int32));                    
                    foreach (DataRow drRow in dtDataTable.Rows)
                    {
                        if (drRow["id"] != null)
                        {                            
                            UInt32 iActionObjectId = (UInt32)(drRow["id"]);
                            int iFindings = 0, iAssessmentFiles = 0, iSmartTraces = 0, iLostSinks = 0,
                                iSmartTraces_NotDuplicate = 0, iSmartTraces_NotDuplicate_IgnoreRoot = 0, iLostSinks_NotDuplicate = 0, iLostSinks_NotDuplicate_IgnoreRoot = 0;
                            calculateFindingsStatistics(fadO2AssessmentData.arAssessmentRun, iActionObjectId, true,
                                ref iFindings, ref iAssessmentFiles,
                                ref iSmartTraces, ref iLostSinks,
                                ref iSmartTraces_NotDuplicate, ref  iSmartTraces_NotDuplicate_IgnoreRoot,
                                ref iLostSinks_NotDuplicate, ref iLostSinks_NotDuplicate_IgnoreRoot);
                            
                            drRow["# Findings"] = iFindings;
                            drRow["# SmartTraces"] = iSmartTraces;
                            drRow["# SmartTraces ND"] = iSmartTraces_NotDuplicate;
                            drRow["# SmartTraces IR"] = iSmartTraces_NotDuplicate_IgnoreRoot;
                            drRow["# LostSinks"] = iLostSinks;
                            drRow["# LostSinks ND"] = iLostSinks_NotDuplicate;
                            drRow["# LostSinks IR"] = iLostSinks_NotDuplicate_IgnoreRoot;                            

                        }
                    }
                    dgvToPopulate.DataSource = dtDataTable;
                    O2Forms.dataGridView_Utils_MaxColumnsWidth(dgvToPopulate);
                    if (dgvToPopulate.Rows.Count > 0)
                        dgvToPopulate.Columns[0].Selected = true;
                }
            }
        }

        */
        /* DC - Removed in order to make the SavedAssessmentFile Project non Ounce dependent
        public static void createSeparateAssessmentFilesForEachActionObject(FindingNameFormat ffnFindingNameFormat, bool bDropFindingsWithNoTraces, bool bFilterDuplicateFindings, bool bIgnoreRootCallInvocation, bool bChangeFindingData, o2AssessmentDataOunceV6 fadO2AssessmentData)
        {
             DI.log.info("createSeparateAssessmentFilesForEachActionObject Start");
            List<String> lsActionObjects = getListWithUsedActionObjects(fadO2AssessmentData);
            foreach(String sActionObjectId in lsActionObjects)
            {
                createSeparateAssessmentFileForActionObject(sActionObjectId, ffnFindingNameFormat, bDropFindingsWithNoTraces, bFilterDuplicateFindings, bIgnoreRootCallInvocation, bChangeFindingData, fadO2AssessmentData);  
            }
             DI.log.info("createSeparateAssessmentFilesForEachActionObject End");
        }
        */

        public static void createSeparateAssessmentFileForSmartTraceCall(UInt32 uSmartTraceCallID,
                                                                         TraceType tTraceType,
                                                                         FindingNameFormat ffnFindingNameFormat,
                                                                         bool bFilterDuplicateFindings,
                                                                         bool bIgnoreRootCallInvocation,
                                                                         bool bChangeFindingData,
                                                                         O2AssessmentData_OunceV6 fadO2AssessmentDataOunceV6)
        {
            String sSmartTraceCall = fadO2AssessmentDataOunceV6.arAssessmentRun.StringIndeces[uSmartTraceCallID - 1].value;
            sSmartTraceCall = sSmartTraceCall.Replace(":", "_").Replace("*", "_");
            // remove the : from SmartTrace name (since it prevents the file from being created)
            String sFileName = calculateTargetFileName(uSmartTraceCallID + "_(" + sSmartTraceCall + ")_LOST_SINK",
                                                       ffnFindingNameFormat);
            DI.log.debug("Creating partial assessment file for Lost Sink: {0}", sFileName);
            createXmlFileWithOnlyFindingsFromSmartTraceCall(sFileName, ffnFindingNameFormat, uSmartTraceCallID,
                                                            tTraceType, bFilterDuplicateFindings,
                                                            bIgnoreRootCallInvocation, bChangeFindingData,
                                                            fadO2AssessmentDataOunceV6);
        }
예제 #6
0
파일: Analysis.cs 프로젝트: pusp/o2platform
        public static String createAssessmentFileWithLostSinks_OneExampleEach(String sTargetFilename,
                                                                              FindingNameFormat ffnFindingNameFormat,
                                                                              bool bChangeFindingData,
                                                                              O2AssessmentData_OunceV6 fadO2AssessmentDataOunceV6)
        {
            var ffulsFilter = new AnalysisFilters.filter_FindUniqueLostSinks(ffnFindingNameFormat, bChangeFindingData);
            AssessmentRun arFilteredAssessmentRun = createFilteredAssessmentRunObjectBasedOnCriteria(ffulsFilter,
                                                                                                     fadO2AssessmentDataOunceV6);

            saveFilteredAssessmentRun(arFilteredAssessmentRun, sTargetFilename, fadO2AssessmentDataOunceV6);
            DI.log.debug("Custom Assessment File (with only one example per Lost Sinks)  created: {0}",
                         sTargetFilename);
            restoreChangedData(bChangeFindingData, fadO2AssessmentDataOunceV6);
            return sTargetFilename;
        }
예제 #7
0
파일: Analysis.cs 프로젝트: pusp/o2platform
        /*
        public static void createAssessmentFileWithLostSinks_NoDuplicates(bool bIgnoreRootCallInvocation)
           {
            bool bDropDuplicateSmartTraces = true;
            AnalysisFilters.filter_FindLostSinks fflsFilter = new AnalysisFilters.filter_FindLostSinks(bDropDuplicateSmartTraces, bIgnoreRootCallInvocation);
            AssessmentRun arFilteredAssessmentRun = createFilteredAssessmentRunObjectBasedOnCriteria(fflsFilter);
            String sTargetFilename = calculateTargetFileName("LOST_SINKS_No_Duplicates");
            saveFilteredAssessmentRun(arFilteredAssessmentRun, sTargetFilename);
             DI.log.debug("Custom Assessment File (non duplicated Lost Sinks) created: {0}", sTargetFilename);
            // since we actually changed the object's contents during this analysis, reload the file
            loadAssessmentFile(sFileLoaded);
        }*/


        public static String createAssessmentFileWithLostSinks_OneExampleEach(FindingNameFormat ffnFindingNameFormat,
                                                                              bool bChangeFindingData,
                                                                              O2AssessmentData_OunceV6 fadO2AssessmentDataOunceV6)
        {
            String sTargetFilename = calculateTargetFileName("LOST_SINKS_UNIQUE", ffnFindingNameFormat);
            return createAssessmentFileWithLostSinks_OneExampleEach(sTargetFilename, ffnFindingNameFormat,
                                                                    bChangeFindingData, fadO2AssessmentDataOunceV6);
        }
예제 #8
0
파일: Analysis.cs 프로젝트: pusp/o2platform
 public static String createAssessmentFileWithLostSinks(bool bDropDuplicatedSmartTraces,
                                                        bool bIgnoreRootCallInvocation,
                                                        FindingNameFormat ffnFindingNameFormat,
                                                        bool bChangeFindingData,
                                                        O2AssessmentData_OunceV6 fadO2AssessmentDataOunceV6)
 {
     // create file to store results using a name that reflects the search criteria
     String sTargetFilenameExtraTag = "LOST_SINKS";
     //  if (bDropDuplicatedSmartTraces) sTargetFilenameExtraTag += "_NoDuplicates";
     //  if (bIgnoreRootCallInvocation)  sTargetFilenameExtraTag += "_IgnoreRoot";
     String sTargetFilename = calculateTargetFileName(sTargetFilenameExtraTag, ffnFindingNameFormat);
     // create filter using provided params
     var fflsFilter = new AnalysisFilters.filter_FindLostSinks(bDropDuplicatedSmartTraces,
                                                               bIgnoreRootCallInvocation, ffnFindingNameFormat,
                                                               bChangeFindingData);
     // execute filter and get object with results (custom saved project)
     AssessmentRun arFilteredAssessmentRun = createFilteredAssessmentRunObjectBasedOnCriteria(fflsFilter,
                                                                                              fadO2AssessmentDataOunceV6);
     // save it
     saveFilteredAssessmentRun(arFilteredAssessmentRun, sTargetFilename, fadO2AssessmentDataOunceV6);
     // all done
     restoreChangedData(bChangeFindingData, fadO2AssessmentDataOunceV6);
     DI.log.debug("Custom Assessment File with only Lost Sinks created: {0}", sTargetFilename);
     return sTargetFilename;
 }
예제 #9
0
파일: Analysis.cs 프로젝트: pusp/o2platform
 public static String createAssessmentFileWithAllTraces(bool bDropDuplicateSmartTraces,
                                                        bool bIgnoreRootCallInvocation,
                                                        FindingNameFormat ffnFindingNameFormat,
                                                        bool bChangeFindingData,
                                                        O2AssessmentData_OunceV6 fadO2AssessmentDataOunceV6,
                                                        string sTargetFilename)
 {
     var ffsmFilter = new AnalysisFilters.filter_FindSmartTraces(bDropDuplicateSmartTraces,
                                                                 bIgnoreRootCallInvocation, ffnFindingNameFormat,
                                                                 bChangeFindingData);
     AssessmentRun arFilteredAssessmentRun = createFilteredAssessmentRunObjectBasedOnCriteria(ffsmFilter,
                                                                                              fadO2AssessmentDataOunceV6);
     saveFilteredAssessmentRun(arFilteredAssessmentRun, sTargetFilename, fadO2AssessmentDataOunceV6);
     DI.log.debug("Custom Assessment File with All Traces created: {0}", sTargetFilename);
     restoreChangedData(bChangeFindingData, fadO2AssessmentDataOunceV6);
     return sTargetFilename;
 }