Lichen

docs/wiki/Cache

810:e08d8986f0e1
2017-04-11 Paul Boddie Added wiki pages and documentation tools (from imip-agent).
     1 = Inspection Cache Files =     2      3 The results of inspection for each module are written out to cache files, and these files should be able to provide all the information that is gathered during inspection without having to inspect the source code again. One minor benefit of using cached data, instead of having to parse and inspect the source code for a given module, is that of a slightly reduced processing time for the inspection activity. However, an arguably greater benefit is that of being able to see the outcome of the activity as a summary of accumulated data.     4      5 Each cache file has the following general format:     6      7 {{{{#!table     8 {{{     9 <filename>    10     11 }}}    12 || The main program filename    13 ==    14 {{{    15 imports:    16 <required module-names>    17 <possibly-required module-names>    18     19 }}}    20 ||    21  * Comma-separated list of modules explicitly imported by this module    22  * Comma-separated list of modules implicitly imported by this module    23 ==    24 {{{    25 deferred:    26 <deferred references>    27     28 }}}    29 || Comma-separated list of references not identified within this module    30 ==    31 {{{    32 special:    33 <special-name> <reference> <qualified-names>    34 ...    35     36 }}}    37 || Special name and corresponding reference plus comma-separated list of usage namespaces    38 ==    39 {{{    40 members:    41 <qualified-name> <reference>    42 ...    43     44 }}}    45 || Reference for each member of the static namespace hierarchy of the module    46 ==    47 {{{    48 class relationships:    49 <qualified-class-name> <base-class-references>    50 ...    51     52 }}}    53 || Comma-separated list of base classes for each class    54 ==    55 {{{    56 instance attributes:    57 <qualified-class-name> <instance-attribute-names>    58 ...    59     60 }}}    61 || Comma-separated list of instance attributes for each class    62 ==    63 {{{    64 instance attribute constants:    65 <qualified-class-name> <attribute-name> <reference>    66 ...    67     68 }}}    69 || Reference for the named constant instance attribute in the given class    70 ==    71 {{{    72 names used:    73 <qualified-class/function/module-name> <names>    74 ...    75     76 }}}    77 || Comma-separated list of names in each namespace    78 ==    79 {{{    80 name references:    81 <qualified-name> <reference>    82 ...    83     84 }}}    85 || Correspondence between name and resolved identity    86 ==    87 {{{    88 initialised-names:    89 <qualified-name> <definition-version> <reference>    90 ...    91     92 }}}    93 || Identity of a given definition of a name    94 ==    95 {{{    96 aliased-names:    97 <qualified-name> <definition-version> <original-name> <attribute-names> <access-number>    98 ...    99    100 }}}   101 || Name definition by access operation   102 ==   103 {{{   104 function parameters:   105 <qualified-function-name> <parameter-names>   106 ...   107    108 }}}   109 || Comma-separated list of parameters for each function   110 ==   111 {{{   112 function default parameters:   113 <qualified-function-name> <parameter-names-with-defaults>   114 ...   115    116 }}}   117 ||   118 Comma-separated parameter definitions for each function, with each definition being of the form...   119 {{{   120 <name>=<references>   121 }}}   122 ...and with the references being semicolon-separated   123 ==   124 {{{   125 function locals:   126 <qualified-function-name> <local-variable-name> <reference>   127 ...   128    129 }}}   130 || Identity of the given local name in the given class   131 ==   132 {{{   133 scope globals:   134 <qualified-function-name> <global-variable-names>   135 ...   136    137 }}}   138 || Comma-separated list of global names in each namespace   139 ==   140 {{{   141 attribute usage:   142 <qualified-name> <local/global/qualified-variable-name> <usages>   143 ...   144    145 }}}   146 ||   147 Attribute usage details for the given name in the given namespace, with usages being a semicolon-separated list of usage alternatives, each being a comma-separated list of attribute names or {} (meaning no attribute names used), attribute names employing ! if invoked   148 ==   149 {{{   150 attribute accesses:   151 <qualified-name> <attribute-chains>   152 ...   153    154 }}}   155 || Comma-separated list of attribute chains used on anonymous/unidentified objects   156 ==   157 {{{   158 constant accesses:   159 <qualified-function-name> <attribute-chain> <reference> <remaining attribute-chain>   160 ...   161    162 }}}   163 || Identity of the given attribute chain in the given namespace, with any unresolved attribute chain provided   164 ==   165 {{{   166 attribute access usage:   167 <qualified-function-name> <local/global-variable-name> <attribute-name> <definition-versions>   168 ...   169    170 }}}   171 || Indicates, for each access involving the given name and first attribute name in the given namespace, the definitions that may provide the name   172 ==   173 {{{   174 attribute access-modifiers:   175 <qualified-function-name> <local/global-variable-name> <attribute-name> <access-modifiers>   176 ...   177    178 }}}   179 || Indicates, for accesses involving the given name and first attribute name in the given namespace, the modifiers applying to each access, where = indicates assignment, ! indicates invocation, and _ indicates access   180 ==   181 {{{   182 constant literals:   183 <qualified-name> <value-type> <encoding> <constant-literal>   184 ...   185    186 }}}   187 || Describes a constant literal in the given namespace having the indicated type, encoding (if a string), and value   188 ==   189 {{{   190 constant values:   191 <qualified-name> <value-type> <encoding> <constant-literal>   192 ...   193    194 }}}   195 || Describes a constant literal identified using a locally-qualified name   196 ==   197 {{{   198 exception namespaces:   199 <qualified-names>   200 ...   201 }}}   202 || Comma-separated list of namespaces that need to handle exceptions   203 }}}}   204    205 A qualified name is a name prefixed with the namespace it appears in.