Intermediate Code Metrics
Metrics may be determined from intermediate computer code by reading and analyzing an entire application using intermediate code, including any linked portions. The metrics may include cyclomatic complexity, estimated or actual number of lines of code, depth of inheritance, type coupling, and other metrics. The metrics may be combined into a quantifiable metric for the code.
1 . A method comprising:
reading intermediate language computer code;
finding a plurality of type definitions in said intermediate language computer code;
for each of said plurality of type definitions, resolving said type definition in said intermediate language computer code; and
determining a number of different types used in said intermediate language computer code.
2 . The method of claim 1 , said intermediate language code comprising code compiled from two different languages.
3 . The method of claim 1 , said intermediate language code comprising linked code.
4 . The method of claim 1 further comprising:
determining structural complexity.
5 . The method of claim 1 further comprising:
determining lines of code.
6 . The method of claim 5 , said determining lines of code comprising evaluating source code metadata.
7 . The method of claim 5 , said determining lines of code comprising:
determining a line count from said intermediate code; and
multiplying said line count by a factor to determine said lines of code.
8 . The method of claim 1 further comprising:
determining depth of inheritance.
9 . The method of claim 1 further comprising:
determining a composite index based on said number of different types.
10 . A computer readable medium comprising computer executable instructions adapted to perform the method of claim 1 .
11 . A system comprising:
a reader adapted to read intermediate language computer code; and
an analyzer adapted to resolve at least one type in said intermediate language computer code to determine a type coupling, said type coupling comprising a number of different types.
12 . The system of claim 11 , said analyzer further adapted to perform at least one of a group composed of:
determine a structural complexity for said intermediate language computer code;
determine a lines of code value for said intermediate language computer code;
determine a depth of inheritance for said intermediate language computer code; and
determine a composite index comprising at least said type coupling.
13 . The system of claim 11 further comprising:
a linker adapted to link said intermediate language computer code.
14 . A method comprising:
reading an intermediate language computer code;
linking said intermediate language computer code; and
calculating a composite index from said intermediate language computer code.
15 . The method of claim 14 further comprising:
reading metadata about source code used to derive said intermediate language computer code.
16 . The method of claim 14 , said maintainability index being further calculated from said metadata.
17 . The method of claim 14 further comprising:
finding a plurality of type definitions in said intermediate language computer code; and
for each of said plurality of type definitions, resolving said type definition.
18 . The method of claim 14 further comprising at least one of a group composed of:
determining a structural complexity for said intermediate language computer code;
determining a lines of code value for said intermediate language computer code; and
determining a depth of inheritance for said intermediate language computer code.
19 . The method of claim 14 , said composite index being calculated from at least one of a group composed of:
a structural complexity for said intermediate language computer code;
a lines of code value for said intermediate language computer code; and
a depth of inheritance for said intermediate language computer code.
20 . A computer readable medium comprising computer executable instructions adapted to perform the method of claim 14 .