首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有办法在python脚本中创建一个Understand (从Scitools) DB?

有没有办法在python脚本中创建一个Understand (从Scitools) DB?
EN

Stack Overflow用户
提问于 2016-11-10 02:22:45
回答 1查看 854关注 0票数 4

我正在编写一个python脚本,以确定引用给定项目并从Scitools中理解的项目。在研究了Understands API之后,我似乎需要“打开”一个数据库,以便执行任何命令并发现有关给定项目的所有内容。例如,当我执行以下命令时:

example.py

代码语言:javascript
复制
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文件。

我试图避免使用Understands,而是在python脚本中自动化这个静态工具。有没有办法,我可以创建一个数据库从一个给定的项目,然后执行许多命令理解提供。任何指导都将不胜感激!

EN

回答 1

Stack Overflow用户

发布于 2017-07-06 04:14:51

你可以使用命令行工具来实现这一点,udb_path是创建UDB的地方,language是Java/Python/c#/或者其他什么,project_root是你想要运行的项目的根路径。

代码语言:javascript
复制
@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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40513581

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档