SQL Queries - CAST Central Base - Queries on applications - How to get the Critical and Non-Critical Violations for an Application

Purpose of Query

This document provides a query to list the critical violations and non-critical violations for an application.

Applicable CAST Version
Release
Yes/No
8.3.x(tick) 
8.2.x (tick) 
Applicable RDBMS
RDBMS
Yes/No
Oracle Server  (question)
Microsoft SQL Server (question) 
CSS (tick) 
Query for CSS

The following query needs to be updated for application_id and snapshot_id in several places.  To obtain these values, please go to these pages:

SQL Queries - CAST Central Base - Queries on applications - How to get the ID of the application

SQL Queries - CAST Central Base - Queries on snapshots - How to get the ID and name of a snapshot for a given application

SELECT DISTINCT zz.F_SNAPSHOT_ID                         ,
                zz.F_APP_ID                              ,
                zz.F_B_CRITERION_ID                      ,
                m1.metric_description AS B_CRITERION_name,
                zz.F_T_CRITERION_ID                      ,
                m2.metric_description AS T_CRITERION_name,
                zz.F_M_WEIGHT                            ,
                zz.F_M_CRIT                              ,
                m3.metric_description AS QR_name         ,
                zz.F_METRIC_ID                           ,
                zz.F_OBJECT_ID                           ,
                zz.F_OBJECT_FULL_NAME                    ,
                zz.F_METRIC_NUM_VALUE                    ,
                zz.F_STATUS                              ,
                zz.F_JUSTIFY                             ,
                zz.ACTION_DEF                            ,
                zz.F_PRIORITY                            ,
                zz.F_ACCESS_ACTION                       ,
                zz.F_ACCESS_EXCEPT
FROM            ( SELECT         cd1.SNAPSHOT_ID   AS F_SNAPSHOT_ID   ,
                                cpt.SYST_ID        AS F_SYST_ID       ,
                                cpt.APP_ID         AS F_APP_ID        ,
                                cqt.B_CRITERION_ID AS F_B_CRITERION_ID,
                                cqt.T_CRITERION_ID AS F_T_CRITERION_ID,
                                cqt.M_WEIGHT       AS F_M_WEIGHT      ,
                                cqt.M_CRIT         AS F_M_CRIT        ,
                                cqt.METRIC_ID      AS F_METRIC_ID     ,
                                cd1.OBJECT_ID      AS F_OBJECT_ID     ,
                                (SELECT dso.OBJECT_FULL_NAME
                                FROM    DSS_OBJECTS dso
                                WHERE   dso.OBJECT_ID = cd1.OBJECT_ID
                                )
                                                                  AS F_OBJECT_FULL_NAME,
                                COALESCE(cpxl.METRIC_NUM_VALUE,0) AS F_METRIC_NUM_VALUE, (
                                CASE
                                                WHEN Ocur.OBJECT_CHECKSUM IS NULL
                                                THEN 2
                                                WHEN Oprev.OBJECT_CHECKSUM IS NULL
                                                THEN 1
                                                WHEN Ocur.OBJECT_CHECKSUM = Oprev.OBJECT_CHECKSUM
                                                THEN 0
                                                ELSE 3
                                END)                         AS F_STATUS       ,
                                COALESCE(OE.JUSTIFY,'NA')    AS F_JUSTIFY      ,
                                COALESCE(AP.ACTION_DEF,'NA') AS ACTION_DEF     ,
                                COALESCE(AP.PRIORITY,2)      AS F_PRIORITY     ,
                                doe.ACCESS_ACTION            AS F_ACCESS_ACTION,
                                doe.ACCESS_EXCEPT            AS F_ACCESS_EXCEPT
                FROM            ( SELECT DSSD.OBJECT_ID    AS      OBJECT_ID    ,
                                        DSSS.SNAPSHOT_DATE AS      SNAPSHOT_DATE,
                                        DSSD.SNAPSHOT_ID   AS      SNAPSHOT_ID  ,
                                        DSSD.DIAG_ID       AS      DIAG_ID      ,
                                        DSSD.CONTEXT_ID    AS      CONTEXT_ID
                                FROM    DSS_DIAGDETAILS DSSD
                                        JOIN DSS_SNAPSHOTS DSSS
                                        ON      DSSS.SNAPSHOT_ID = DSSD.SNAPSHOT_ID
                                )
                                cd1
                                JOIN DSS_QUALITY_TREE cqt
                                ON              (
                                                                cqt.METRIC_ID = cd1.DIAG_ID
                                                )
                                JOIN DSS_PORTF_TREE cpt
                                ON              (
                                                                cd1.CONTEXT_ID  = cpt.MODULE_ID
                                                AND             cpt.SNAPSHOT_ID = cd1.SNAPSHOT_ID
                                                AND             cpt.APP_ID      = <app_id>     -- here 3
                                                AND             cpt.SNAPSHOT_ID = <snapshot_id>-- snapshot id
                                                )
                                JOIN DSS_OBJECTS_EX doe
                                ON              (
                                                                doe.OBJECT_ID   = cpt.APP_ID
                                                AND             doe.ACCESS_LIST = 1
                                                )
                                LEFT JOIN
                                                (SELECT dmr.METRIC_NUM_VALUE,
                                                        OBJECT_ID           ,
                                                        SNAPSHOT_ID
                                                FROM    DSS_METRIC_RESULTS dmr
                                                WHERE   dmr.METRIC_ID = 65005
                                                AND     snapshot_id   = <snapshot_id>
                                                )
                                                cpxl
                                ON              cpxl.OBJECT_ID   = cd1.OBJECT_ID
                                AND             cpxl.SNAPSHOT_ID = cd1.SNAPSHOT_ID
                                LEFT JOIN DSS_OBJECT_EXCEPTIONS OE
                                ON              (
                                                                OE.OBJECT_ID    = cd1.OBJECT_ID
                                                AND             OE.METRIC_ID    = cqt.METRIC_ID
                                                AND             cd1.SNAPSHOT_ID < OE.LAST_SNAPSHOT_ID
                                                )
                                CROSS JOIN VIEWER_DUAL VD
                                LEFT JOIN VIEWER_ACTION_PLANS AP
                                ON              (
                                                                AP.OBJECT_ID            = cd1.OBJECT_ID
                                                AND             AP.METRIC_ID            = cqt.METRIC_ID
                                                AND             AP.FIRST_SNAPSHOT_DATE <= cd1.SNAPSHOT_DATE
                                                AND             AP.LAST_SNAPSHOT_DATE   = VD.OMEGA_DATE
                                                )
                                JOIN ADG_DELTA_SNAPSHOTS d
                                ON              (
                                                                d.APPLICATION_ID = cpt.APP_ID
                                                AND             d.SNAPSHOT_ID    = cd1.SNAPSHOT_ID
                                                )
                                LEFT OUTER JOIN DSS_OBJECT_INFO Ocur
                                ON              (
                                                                Ocur.SNAPSHOT_ID = d.SNAPSHOT_ID
                                                AND             Ocur.OBJECT_ID   = cd1.OBJECT_ID
                                                AND             Ocur.SNAPSHOT_ID = <snapshot_id>
                                                )
                                LEFT OUTER JOIN DSS_OBJECT_INFO Oprev
                                ON              (
                                                                Oprev.SNAPSHOT_ID = d.PREV_SNAPSHOT_ID
                                                AND             Oprev.OBJECT_ID   = cd1.OBJECT_ID
                                                )
                )
                zz
                JOIN dss_metric_descriptions m1
                ON              m1.metric_id = zz.F_B_CRITERION_ID
                JOIN dss_metric_descriptions m2
                ON              m2.metric_id = zz.F_T_CRITERION_ID
                JOIN dss_metric_descriptions m3
                ON              m3.metric_id = zz.F_METRIC_ID
WHERE           1                            =1
AND             m1.language                  = 'ENGLISH'
AND             m1.description_type_id       = 0
AND             m2.language                  = 'ENGLISH'
AND             m2.description_type_id       = 0
AND             m3.language                  = 'ENGLISH'
AND             m3.description_type_id       = 0
ORDER BY        6 DESC,
                1 DESC,
                4 DESC,
                9 DESC

Query result example

1;3;60011;"Transferability";61023;"Volume - Number of LOC";6;0;"Avoid large Artifacts - too many Lines of Code";7842;6012;"com.castsoftware.businessLayer.AccessDatabase.fakeMethodWithMethodInvocationInALoop";1;1;"NA";"NA";2;1;1

1;3;60011;"Transferability";61023;"Volume - Number of LOC";6;0;"Avoid large Artifacts - too many Lines of Code";7842;6022;"com.castsoftware.businessLayer.AccessDatabase.fakeMethodWithMethodInvocationInALoop2";1;1;"NA";"NA";2;1;1

1;3;60011;"Transferability";61023;"Volume - Number of LOC";6;0;"Avoid large Artifacts - too many Lines of Code";7842;6180;"com.castsoftware.businessLayer.AccessDatabase.fakeMethodWithMethodInvocationInALoop3";2;1;"NA";"NA";2;1;1


[...]

Query result interpretation
Query result interpretation

The first row can be interpreted as follows :

Object 6012 of full-name "com.castsoftware.businessLayer.AccessDatabase.fakeMethodWithMethodInvocationInALoop"" from snapshot 1 of application 3, violates once rule number 7842, which is not critical, for technical criterion 61023 and business criterion 600011.

It is an added object (F_STATUS = 1), it is not excluded (JUSTIFY is NA), there is no Action Plan (ACTION_DEF is NA)"

.

Notes/comments

Related Pages