Lichen

docs/wiki/Cache

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