Вот сценарий, который я использую:
Код: Выделить всё
# Display the Info Browser for a search string
import understand
import sys
def sortKeyFunc(ent):
return str.lower(ent.longname())
def run(db, searchstring):
list = []
ents = db.lookup(searchstring, "function,method,procedure")
for func in sorted(ents, key=sortKeyFunc):
# If the file is from the Ada Standard library, skip to the next
if func.library() != "Standard":
list.append(func)
if list:
for line in list[-1].ib():
print(line, end="")
else:
print(f"No entities found for search string '{searchstring}'")
print("\n", end="")
if __name__ == '__main__':
# Check if two arguments are provided (database path and function name)
if len(sys.argv) < 3:
print("Usage: python script.py
")
sys.exit(1)
# Open Database
db_path = sys.argv[1]
function_name = sys.argv[2]
db = understand.open(db_path)
# Run the search with the specified function name
run(db, function_name)
db.close()
Есть ли более эффективный способ извлечь только данные «вызовов» и «вызываемых» для функции без получения всего представления информационного браузера?
Как мне справиться со случаями, когда количество ссылок слишком велико для обработки, или, по крайней мере, сделать процесс более надежным?
Будем очень признательны за любые идеи и предложения. Спасибо!
Подробнее здесь: https://stackoverflow.com/questions/792 ... r-function