Ошибка при попытке создать html-отчет с помощью gcovr, объект «NoneType» не имеет атрибута «startswith».

я получаю ошибку

'NoneType' object has no attribute 'startswith'

при попытке создать html-отчет с помощью gcovr (инструмент для оценки покрытия тестами)

Есть идеи, как мне это исправить? Для информации, я на Ubuntu 14.04. См. подробное сообщение об ошибке ниже:

parallels:try_gcovr$ gcovr -r .  --html
Traceback (most recent call last):
  File "/usr/local/bin/gcovr", line 1970, in <module>
    print_html_report(covdata, options.html_details)
  File "/usr/local/bin/gcovr", line 1373, in print_html_report
    ttmp = os.path.abspath(options.output).split('.')
  File "/usr/lib/python2.7/posixpath.py", line 367, in abspath
    if not isabs(path):
  File "/usr/lib/python2.7/posixpath.py", line 61, in isabs
    return s.startswith('/')
AttributeError: 'NoneType' object has no attribute 'startswith'

person zell    schedule 27.06.2015    source источник


Ответы (1)


У меня была такая же проблема, и я решил ее с помощью следующей команды.

gcovr --html --html-details -o имя-файла-вывода.html -v -r .

Вот мои настройки и команды:

$ ls; ls testDir

main.cpp   Makefile   test.cpp   testDir

test.cpp  test.h


$ make test

g++  -fprofile-arcs -ftest-coverage -fPIC -O0 -c main.cpp -o main.o

g++  -o  test testDir/test.o main.o -lgcov -coverage


$ ./test

hello world

$ ls;ls testDir

main.cpp   main.gcda  main.o test
main.gcno  Makefile test.cpp  testDir 

test.cpp  test.gcda  test.gcno  test.h  test.o

$ gcovr -r . --html

Traceback (most recent call last):
  File "/usr/bin/gcovr", line 1970, in <module>
    print_html_report(covdata, options.html_details)
  File "/usr/bin/gcovr", line 1373, in print_html_report
    ttmp = os.path.abspath(options.output).split('.')
  File "/usr/lib64/python2.7/posixpath.py", line 343, in abspath
    if not isabs(path):
  File "/usr/lib64/python2.7/posixpath.py", line 53, in isabs
    return s.startswith('/')
AttributeError: 'NoneType' object has no attribute 'startswith'


$ gcovr --html --html-details -o output.html -v -r .

//a bunch of gcov output while generating files...

$ ls; ls testDir

main.cpp   Makefile   output.html output.testDir_test.cpp.html  test.cpp   testDir 
output.main.cpp.html  test 

test.cpp  test.gcda  test.gcno  test.h  test.o

$ cat Makefile


OBJS=testDir/test.o main.o

EXEC_TARGET=test
CXXFLAGS+=-fprofile-arcs -ftest-coverage -fPIC -O0
bla:
    @echo $(GXX)

LINKLIBSCTT+=-lgcov -coverage

#Executable target rule
$(EXEC_TARGET): $(OBJS)
    $(CXX) $(LINK_FLAGS) -o  $(EXEC_TARGET) $(OBJS) $(LINKLIBSCTT)


#implicit rule to compile object files
%.o: %.cpp
    $(CXX) $(INCLUDES) $(CXXFLAGS) -c $^ -o $@


clean:
    rm -f *.o *.rpo *.d $(EXEC_TARGET)
person wizurd    schedule 22.11.2015
comment
Идеальный. Похоже, ключ в том, что вы должны указать выходной файл -o, чтобы gcovr правильно сгенерировал --html. Примет этот ответ, когда сможет. - person Runcible; 23.11.2015
comment
кажется, так. Спасибо, runcible, рад, что смог помочь - person wizurd; 23.11.2015