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.