сгенерировать макет класса с помощью python Google mock

#python #c

#python #c

Вопрос:

Я пытаюсь автоматически сгенерировать макет класса, используя gmock_gen.py скрипт на python 3.7.2.

вот my IController.h файл

 #include <iostream>

class Gui;   

class IController
{
public:
    virtual void display(Gui *gui) = 0;
    virtual void count(int val) = 0;

};
  

Я создал скрипт на Python под названием controller.py

 import os

filename = "IController.h"
file = open(filename,"r")

flag = False
header = []
classheader = ""
classbody = None
classitems = []


for line in file:
    if(filename[:-2] in line):
        flag = True

    if flag == False:
        header.append(line)


    if filename[:-2] in line:
        flag = True
        classname = filename[1:-2]
        line = line.replace("class ", "public ")

        classbody = "class "   classname   " : "   line
        #print("class "   header   " : "   line)

    if "virtual" in line:
        line = line.replace("virtual","")
        line = line.replace(" = 0","")
        classitems.append(line)

classbody  = "n"
classbody  = "{n"
classbody  = "  public:n"

for x in classitems:
     classbody  = x 
     classbody   "n"

classbody  = "};"

for x in header:
    classheader  = x

classheader  = "#include "   """    filename   """   "nn"
classheader  = classbody

f = open(filename[1:], "w")
f.write(classheader)

cppfilename = filename[1:-2]   ".cpp"
f = open(cppfilename,"w")

mockfilename = "Mock"   filename[1:]

    print(filename)
print(mockfilename[:-2])

#os.system("python gmock_gen.py "   filename   " "   mockfilename[:-2])
os.system("python gmock_gen.py "   filename   " "   mockfilename[:-2])
  

Я получаю эту ошибку при запуске controller.py в командной строке.

     C:UsersrafaelDesktopCPP>controller.py
IController.h
MockController
Got exception in IController.h @ Token('class', 50, 55) []
Traceback (most recent call last):
  File "C:UsersrafaelDesktopCPPcppast.py", line 706, in Generate
    token = self._GetNextToken()
  File "C:UsersrafaelDesktopCPPcppast.py", line 908, in _GetNextToken
    return next(self.tokens)
StopIteration

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "gmock_gen.py", line 31, in <module>
    gmock_class.main()
  File "C:UsersrafaelDesktopCPPcppgmock_class.py", line 222, in main
    lines = _GenerateMocks(filename, source, entire_ast, desired_class_names)
  File "C:UsersrafaelDesktopCPPcppgmock_class.py", line 129, in _GenerateMocks
    for node in ast_list:
  File "C:UsersrafaelDesktopCPPcppast.py", line 720, in Generate
    result = self._GenerateOne(token)
  File "C:UsersrafaelDesktopCPPcppast.py", line 743, in _GenerateOne
    return method()
  File "C:UsersrafaelDesktopCPPcppast.py", line 1455, in handle_class
    return self._GetClass(Class, VISIBILITY_PRIVATE, None)
  File "C:UsersrafaelDesktopCPPcppast.py", line 1537, in _GetClass
    body = list(ast.Generate())
RuntimeError: generator raised StopIteration
  

Что я делаю не так?

Комментарии:

1. Я не уверен насчет gmock_gen.py , но этот код не может быть проанализирован как C , поскольку Gui нигде не объявлен. Вероятно, вам нужно прямое объявление.

2. я добавил прямое объявление, все та же проблема.

3. приведенный выше код работает с использованием Python версии 2.7.13