jCT stands for Java Code Tomograph. jCT is a powerful framework for metrics extraction and processing. jCT offers an extensible measurement infrastructure with built-in support for the curated repositories Qualitas Corpus and Helix. With jCT, large-scale empirical studies of code within the same software system or across different software systems become feasible.

We have developed jCT framework specifically to help understand software systems from empirical data. In order to be effective, we require it to

  • process non-trivial software systems,
  • support the addition of new measures easily, and
  • yield a natural and adaptive approach for meaningful interpretation of metrics data.

jCT is a stand-alone Java application and it operates on bytecode rather than source code. Java class files, which contain simultaneously both IL-bytecode and meta data, yield nearly the same information as source files. Bytecode can, therefore, be considered isomorphic to source code. Moreover, due to the absence of any source-level syntactic sugar and auxiliary information, bytecode provides a more direct access to the information we seek.

By design, the extraction engine of jCT does not provide any default measures per se. Instead, we use a light-weight extension mechanism to supply desired metrics definitions to it. This mechanism is viewpoint-agnostic. So, when defining a new measure we are not bound to adhere to any predefined analysis model. The resulting flexibility allows us to tailor every measure to the specific needs of the intended analysis. For example, we can use jCT not only to capture a variety of object-oriented class and method metrics (e.g., the CK metrics suite), but also to emulate javap to build our own Java class file disassembler or to emit class and method graphs for independent graph-based analyses.


  • Markus Lumpe, Samiran Mahmud, and Olga Goloshchapova. jCT: A Java Code Tomograph, Proceedings of 26th IEEE/ACM International Conference on Automated Software Engineering (ASE 2011), Lawrence, KA, USA, pp. 616-619, November 2011. (Poster)


Markus Lumpe
Olga Goloshchapova
Samiran Mahmud