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