Search code examples
pythonjacococobertura

Python error trying to convert JaCoCo to Cobertura


I am trying to convert a JaCoCo coverage report to Cobertura format (since Shippable only supports Cobertura). This guy claims to have a tool to convert JaCoCo to Cobertura, however when running his script I get the following error:

Traceback (most recent call last):
  File "cover2cover.py", line 151, in <module>
    jacoco2cobertura(filename, source_root)
  File "cover2cover.py", line 139, in jacoco2cobertura
    convert_root(root, into, source_root)
  File "cover2cover.py", line 127, in convert_root
    packages.append(convert_package(package))
  File "cover2cover.py", line 113, in convert_package
    c_classes.append(convert_class(j_class, j_package))
  File "cover2cover.py", line 100, in convert_class
    c_methods.append(convert_method(j_method, j_method_lines))
  File "cover2cover.py", line 85, in convert_method
    convert_lines(j_lines, c_method)
  File "cover2cover.py", line 33, in convert_lines
    for jline in j_lines:
  File "cover2cover.py", line 23, in method_lines
    larger     = list(int(jm.attrib['line']) for jm in jmethods if int(jm.attrib['line']) > start_line)
  File "cover2cover.py", line 23, in <genexpr>
    larger     = list(int(jm.attrib['line']) for jm in jmethods if int(jm.attrib['line']) > start_line)
KeyError: 'line'

I know nothing about python, so any help would be appreciated.


Solution

  • I don't know python either, but I know that python 2 and python 3 have significant differences. Perhaps you ran into that?

    I was able to run the script ok with this version:

    $> python --version
       Python 2.7.11
    

    To ensure I got the script without any download or browser or line-ending type issues, I did clone the git repo:

    $> git clone https://github.com/rix0rrr/cover2cover.git
    

    Then the script ran first try on my jacoco XML file.