Installation Configuration Preparing Source Code for Scanning Running the Source Code Scanner Source Scanner for IBM Enterprise COBOL Source Scanner for IBM JCL Source Scanner for HLASM/ASM Embedded SQL Language Support (All Languages) CM Meta Analytics Plugins Preparing Source Code for Scanning

Installation Configuration Preparing Source Code for Scanning Running the Source Code Scanner Source Scanner for IBM Enterprise COBOL Source Scanner for IBM JCL Source Scanner for HLASM/ASM Embedded SQL Language Support (All Languages) CM Meta Analytics Plugins Preparing Source Code for Scanning


In order to scan source code into repository, the source code must be collected into a subdirectory under the scanning directory on the scanning server. In addition, a manifest file must be created in order to describe the source code.

The subdirectory under which the source code is placed may have any name, but it must appear immediately under scanning directory that is specified in the configuration. All source code which should be scanned in a single batch should be placed under this subdirectory. 

The manifest file may be a standard properties file, called app.properties, that is recognized by the source code scanner itself and is described below. Alternatively, it may be a custom manifest file that is loaded and parsed by a plugin (see CM Meta Analytics Plugins for more information.)

Creating app.properties

After all source files have been loaded into the subdirectory, the next step is to create a properties file called app.properties in the subdirectory. The format of app.properties is as follows:

  • #
    1. #  SSI.application
    2. #
    3. #  Descriptive name of application that will be displayed in the GUI.
    4. #
    5. SSI.application = My Application

    6. #
    7. #  SSI.system
    8. #
    9. #  System name of programs scanned.
    10. #
    11. SSI.system = SYS

    12. #
    13. #  SSI.subsys
    14. #
    15. #  Subsystem name of programs scanned.
    16. #
    17. SSI.subsys = SUBSYS

    18. #
    19. # SSI.serverName
    20. #
    21. # Server name for tables scanned.
    22. #
    23. SSI.serverName = GAP1

    24. #
    25. #  SSI.creator
    26. #
    27. #  Creator name for tables scanned.
    28. #
    29. SSI.creator = PT18

    30. #
    31. #  SSI.ALL.encoding
    32. #
    33. #  Character set encoding of all input files, unless otherwise specified.
    34. #
    35. SSI.ALL.encoding=CP-037+R80

    36. #
    37. #  SSI.ALL.panvaletIncludePath
    38. #
    39. #  Path to search for files included using the Panvalet inclusion directive (++INCLUDE).
    40. #  Multiple paths may specified delimited by a semicolon. Paths are relative to the application root.
    41. #
    42. SSI.ALL.panvaletIncludePath=

    43. #
    44. # SSI.COBOL.sourcePath
    45. #
    46. # Path of a directory (relative to the application root) that contains all COBOL source
    47. # to be processed. Any files found under this path using a recursive directory walk are
    48. # passed to the COBOL scanner.
    49. #
    50. SSI.COBOL.sourcePath=

    51. #
    52. # SSI.COBOL.copyLibPath
    53. #
    54. # Paths to search for files included with the COBOL COPY statement.
    55. # Multiple paths may specified delimited by a semicolon. Paths are relative to the application root.
    56. #
    57. SSI.COBOL.copyLibPath=

    58. #
    59. # SSI.COBOL.copySystemLibPath
    60. #
    61. # Paths to search for files included with the COBOL COPY ... FROM statement. The paths will be
    62. # searched for a directory matching the name of the system library in the FROM clause of the
    63. # statement.
    64. #
    65. # Multiple paths may specified delimited by a semicolon. Paths are relative to the application root.
    66. #
    67. SSI.COBOL.copySystemLibPath=

    68. #
    69. # SSI.JCL.sourcePath
    70. #
    71. # Path of a directory (relative to the application root) that contains all JCL source
    72. # to be processed. Any files found under this path using a recursive directory walk are # passed to the JCL scanner.
    73. #
    74. SSI.JCL.sourcePath=

    75. #
    76. # SSI.JCL.procPath
    77. #
    78. # Path of a directory (relative to the application root) that contains a
    79. # a directory containing include files and procedures.
    80. #
    81. SSI.JCL.procPath=VALPROC

    82. #
    83. # SSI.ALC.sourcePath
    84. #
    85. # Path of a directory (relative to the application root) that contains all ALC non-
    86. # copybook, non-macro source files to be processed. Any files found under this path
    87. # using a recursive directory walk are passed to the ALC scanner.
    88. #
    89. SSI.ALC.sourcePath=

    90. #
    91. # SSI.ALC.copyPath
    92. #
    93. # Path of a directory (relative to the application root) that contains all ALC
    94. # copybook or macro source files to be processed. Any files found under this path
    95. # using a recursive directory walk are passed to the ALC scanner.
    96. #
    97. SSI.ALC.copyPath=

    98. #
    99. # SSI.JAVA.sourcePath
    100. #
    101. # List of absolute paths of source directories for the Java projects. Each
    102. # source directory should be separated by a semicolon. The absolute path of
    103. # each directory must be used.
    104. #
    105. SSI.JAVA.sourcePath=d:/path/to/java/src

    106. #
    107. # SSI.JAVA.classPath
    108. #
    109. # List of absolute paths of source directories for libraries that should be
    110. # on the Java classpath. Each source directory should be separated by a
    111. # semicolon. The absolute path of each directory must be used.
    112. #
    113. SSI.JAVA.classPath=d:/path/to/classpath/src

    If the files are encoding in mainframe EBCDIC with fixed 80-column lines, then the property SSI.ALL.encoding should be set to CP-037+R80. Otherwise, it should be set to the Java name of the character set that is in use.

    Note: When generating app.properties from an external process, ensure that it is created after all source code files have been transferred to the scanning server.

    Preparing the Work Tables

    The work tables on the server should be cleared before starting the scanner. The scanner will use work units that begin with the prefix CS. These can be cleared using the following DB2 statements:

    DELETE FROM DBXRELXX.PRMXML_OI WHERE WORK_UNIT LIKE 'CS%';
    DELETE FROM DBXRELXX.PRMXML_AI WHERE WORK_UNIT LIKE 'CS%';
    DELETE FROM DBXRELXX.PRMXM


      • Related Articles

      • CM Meta Analytics Plugins

        The CM Meta Analytics engine supports plugins in its architecture. Plugins are able to contribute functionality such as additional methods to detect input files, and data structures to store additional information. Plugins are automatically loaded at ...
      • Source Scanner for HLASM/ASM

        This document describes the entities and relations the HLASM Scanner creates on encountering various ALC code constructs. Metrics The scanner computes a variety of standard code-line metrics, including: total lines of code comment line count blank ...
      • Installation

        Prerequisites CM Meta Analytics should be installed on a dedicated Windows server sized appropriately for the expected work load. Operating System: Windows XP, 2003, 7, or better. 32 or 64 bit supported. VMWare host/guest supported. Java: Java 6 or ...
      • Source Scanner for IBM JCL

        This document describes the entities and relations the JCL Scanner creates on encountering various JCL code constructs. Current output Structures Jobs Procedures (cataloged and in-stream) JobSteps(EXEC) Properties File-levelmetrics Procedure default ...
      • Configuration

        Verifying the initial configuration After the installation has completed, navigate to the following URL in a web browser: http://localhost:8082/ It may take a few moments for the server component to initialize. Once the page has loaded, you will see ...