Purpose (problem description)

This troubleshooting guide handles issues where the object is not (or is wrongly) detected by the QR (Quality Rule) detail procedure.
In the below example: the object [C:\CASTMS73\Deploy\eCommerce\Java\sm-central\WebContent\common\js\validateUserName.jsp] is listed as violation but should not be according to your expectation.

Applicable in CAST Version
Release
Yes/No
8.3.x(tick)
Observed on RDBMS
RDBMS
Yes/No
CSS  (tick) 
Action Plan

Perform the below actions:

  1. As a temporary workaround, you can always exclude a false violation from the dashboard results while an investigation of the false violations is done by support.
  2. If the violation concerns the quality rule "Avoid cyclical calls and inheritances between namespaces content" and "Avoid cyclical calls and inheritances between packages" the follow the page CAST Engineering Dashboard - Violations - False violation or no violation - Cyclical calls quality rules
  3. Check if the Quality Rule is custom, using the page CAST Engineering Dashboard - Information - How to check if a Quality Rule is custom. If the quality rule is custom then the problem is not handled by CAST Technical Support. Contact the respective CAST consultant who provided you with the package.

  4. Confirm the observed false violation/no violation, with the following information:

    1. Locate in CED the Quality Rule and the faulty (or missing) object's full name as described in Relevant input.

    2. For the located object and in case of a false violation, validate the source code view and confirm that it corresponds to the object. If this is not possible due to issues with source code visibility, the violation could be explained by this and you should re-evaluate issue as CAST Engineering Dashboard - Source code or CAST Engineering Dashboard - Object - Multiple Object path issue.

    3. Confirm the Quality Rule functional behavior and if it explains the false violation or no violation. Refer to the Official Documentation QRL - Metrics and Quality Rules listed in alphabetical order.

    4. Confirm Quality Rule Parameters: since they may be customizable, they could be the reason for a false violation or no violation. The value of the Parameters are customized in CAST Management Studio and displayed in the views  Investigation - Quality Model Drilldown or Investigation - Application Drilldown

    5. For false violation, Associated values provides the factors responsible for violating the Quality Rule. Check if these values explain the false violation/no violation.

      For example, consider the Quality Rule Avoid including files other than header files, the Associated Value provides a list of all the authorized include types. By looking at these values, you will be able to compare the authorized include types with the false violation/no violation and see if it explains it.

    6. Screenshot(s) made in Enlighten in the way explained in Relevant input. Check if the information explains the false violation/no violation.

    7. Analysis configuration. Check if the analysis settings can explain the false violation/no violation. For instance, activating Force Include File on a C++ analysis may explain reported violations in Avoid including files other than header files.

    8. For Quality Rules reliying on links, dependancies configuration. Check if the dependancies settings can explain the false violation/no violation. For instance, Avoid unreferenced functions will show violation due to lack of dependancies.

    9. In case of ABAP, for Quality Rules depends on path, namespaces which looks exactly same sometimes we have false violation for rule "Avoid using Harcoded paths". This is a limitation of analyzer and is documented here.
  5. For False Violation:

    Check if the object is external or generated, using the page SQL Queries - CAST Knowledge Base - Queries on objects - How to check if objects are internal or external or generated from the application.

    1. If the object is external or generated, this is a bug as external and generated objects should not be part of dashboard
    2. If the object is internal, navigate to the known cases CAST Engineering Dashboard - Violations - False Violation. If you do not find your Quality Rule in the known cases, contact CAST Technical Support with Relevant input.

  6. For No Violation: 

    Check if the object is external or generated, using the page SQL Queries - CAST Knowledge Base - Queries on objects - How to check if objects are internal or external or generated from the application.

    1. If the object is external or generated then this explains why there is no violation
    2. If the object is internal, check if it is part of module using the page SQL Queries - CAST Knowledge Base - Queries on Module - Module content and properties
      1. If the object is not part of the module, this explains why there is no violation. Find out why the object is not part of the module by navigating to CMS Application - Modules.
      2. If the object is part of module, check if it is an excluded object, by looking in one of the reports described in Reports - List of Objects Excluded from Quality Rule Computations. Alternatively, you may run SQL Queries - CAST Central Base - Queries on Objects - How to get the list of objects in exclusion

        1. If the object is excluded, this explains why there is no violation.
        2. If the object is not excluded, navigate to the known cases CAST Engineering Dashboard - Violations - No Violation.
        3. If the object is not excluded and your case is not in the known cases, click on Computing Details tab.
          1. If FAILED CHECKS is greater than zero, it means that the violation is correctly detected but is not displayed. In this case contact CAST Technical Support with Relevant input for the bug to be fixed. For technical support only, navigate to CAST Engineering Dashboard - List of XXX - No items to show.

          2. If FAILED CHECKS is equal to or smaller than zero, contact CAST Technical Support with Relevant input 

  7. For Technical Support only, navigate to CAST Engineering Dashboard - False Violation or No Violation - Identifying the root cause - CAST Internal

Relevant input

To confirm the violation/no violation

  1. A screenshot of CED showing the Quality Rule and the faulty (or missing) object's full name. The url should be visible.
  2. For the Quality Rules with customized Parameters and in case the false/no violation is reported in another Frame than Investigation - Quality Model Drilldown & Investigation - Application Drilldown screenshot(s) of all parameters from CAST Management Studio, a screenshot


  3. Explanation on why the object should/should not be seen as a violation with screenshots in Enlighten:
    1. A screenshot showing the object's links. To do this,
      1. Drag the object on a view
      2. Right click and choose Add Linked objects


    2. A screenshot showing the object source code, highlighting evidence of the violation/no violation.

To find out the issue root cause:

  1. CAST Support Tool (CST) - alias Sherlock export with options Export CAST Bases, Export Logs , CAST Bases Checker, Export Configuration Files.

  2. The source code of faulty (or missing) object and other utilitarian files. See below

    Technology

    Utilitarian files

    C++

    The include files used in the environment profiles is also necessary

    J2EE

    XML and Jar files used in the environment profiles
    Jar files referenced in the include paths

    COBOL

    In addition to COBOL files, its associated copy book is also necessary

    .NET

    .sln or the .csproj

    Please note For ABAP technology, if the faulty object is part of a Class Pool or a Function Pool, we need the code source of the Class Pool/ Function Pool which is usually split in many source file starting with same part. For example, the following list of files are the code source the Class Poll  ZCL_IM__FETCH_STORAGE_CAT:
    ZCL_IM__FETCH_STORAGE_CAT=====CM001.abap
    ZCL_IM__FETCH_STORAGE_CAT=====CM002.abap
    ZCL_IM__FETCH_STORAGE_CAT=====CM003.abap
    ZCL_IM__FETCH_STORAGE_CAT=====CM004.abap
    ZCL_IM__FETCH_STORAGE_CAT=====CM005.abap
    ZCL_IM__FETCH_STORAGE_CAT=====CM006.abap
    ZCL_IM__FETCH_STORAGE_CAT=====CM007.abap
    Also, note that if objects other than the faulty object are involved in the violation, you will also need to get the source code of these objects. For instance, for diagnostics based on client/server links, you will need the participating base.

Related Pages