2016-11-09 35 views
2

我正在編寫一個python腳本來確定引用給定項目的項目,並且遇到了Scitools。在瞭解了Python API之後,似乎需要「打開」一個數據庫才能執行任何命令,並發現關於給定項目的所有信息。例如,當我執行此:有什麼辦法可以在python腳本中創建Understanding(來自Scitools)數據庫嗎?

example.py
import understand 
import sys 

def sortedEntities(db): 
    for ent in sorted(db.ents(),key= lambda ent: ent.name()): 
    print (ent.name()," [",ent.kindname(),"]",sep="",end="\n") 

if __name__ == '__main__': 
    # Open Database 
    args = sys.argv 
    db = understand.open(args[1]) 
    sortedEntities(db) 

我面對的understand.UnderstandError:DBCorrupt錯誤,因爲我不是一個.udb文件餵食,而是在.csproj的文件中餵養。然後我假設我必須創建這個.udb文件,它是一個db文件。

我試圖避免使用理解GUI並在python腳本中自動執行此靜態工具。有沒有什麼辦法可以從一個給定的項目創建一個數據庫,然後執行理解提供的許多命令。任何指導將非常感謝!

回答

1

你可以使用這個命令行工具,udb_path是在創建UDB其中,language就是Java/Python的/ C#/也好,project_root是要運行在瞭解你的項目的根路徑。

@staticmethod 
def create_udb(udb_path, language, project_root): 
    try: 
     output = subprocess.check_output(
      "und create -db {udb_path} -languages {lang}".format(udb_path=udb_path, lang=language), 
      shell=True) 
     logging.info(output) 
     output = subprocess.check_output("und add -db {udb_path} {project}".format(
      udb_path=udb_path, project=project_root), shell=True) 
     logging.info(output) 
    except subprocess.CalledProcessError as e: 
     logging.exception(e.output) 
     logging.fatal("udb creation failed") 
     raise Exception 
相關問題