【问题标题】:Extract # TODO tags from source code and convert them into Issues on Bitbucket / Github从源代码中提取 # TODO 标签并将其转换为 Bitbucket / Github 上的问题
【发布时间】:2013-06-20 21:04:10
【问题描述】:

像 PyCharm 之类的一些 IDE 提供了使用 # TODO 标签标记部分源代码的功能,并且以后可以进一步定位所有标签。

在提交到 Butbucket 或 Github 后,有什么方法可以将它们转换为“问题”?

我发现在编写代码时动态创建 TODO 可能非常有用,因此其他贡献者可以在 Bitbucket 等在线存储库上查看它们。

Bitbucket 和 Github 有很多插件或“服务”,但我在任何地方都找不到类似的功能。

【问题讨论】:

  • 我很想看到这个。我一直试图弄清楚,但没有运气。你到哪儿了吗?

标签: github ide tags bitbucket todo


【解决方案1】:

有一个名为 Todofy (https://todofy.org) 的基于云的解决方案,它列出了存储库中的所有待办事项,并一直跟踪其状态直到完成(从代码中删除)。它提供了更多功能,例如添加截止日期、提醒、分配某人或将某人带入讨论、标签等。

带有修饰符的示例注释(C++ 样式注释)

// TODO: something has to be done quickly @deadline: 1 week
// @assign: mebjas @priority: high

它有一个在 Github 中自动为其创建问题的选项。

【讨论】:

    【解决方案2】:

    我已经创建了一个节点模块来完全满足您的需求,为了适应您的使用,您必须创建一个 package.json 文件,其中您提到您的 github 存储库的 url,然后您将拥有创建一个 .fixme-to-issue 文件并包含您的 github 凭据以及注释的配置(如果模块找到 //TODO,它会创建一个带有标签 todos 的问题)。 安装模块:

    npm install -g fixme-to-issue
    

    【讨论】:

      【解决方案3】:

      这是一个非常严格的 Python 脚本。它使用Githubpy 与github 交互。它遍历您当前的目录树并获取给定的文件(在本例中为 *.cpp 和 *.h)。然后它遍历这些文件中的每一个,找到任何#TODO 并创建一个 github 问题。然后将该行更改为 TODO [GH]:

      gh = GitHub(username=user, password=password)
      
      path = '.'
      
      configfiles = [os.path.join(dirpath, f)
          for dirpath, dirnames, files in os.walk(path)
          for extension in extensions
          for f in fnmatch.filter(files, ["*.cpp", "*.h")]
      
      import fileinput
      for fileName in configfiles:
          count = 0
          search = fileinput.input(fileName, inplace = 1)
          for line in search: #TODO [GH12]: to
              line = line.rstrip()  # remove '\n' at end of line
              if re.match("(.*)(\#)TODO:(.*)", line):
                  todoInfo= re.sub("(.*)(\#)TODO:\s","", line)
                  fileNameShort = re.sub("\.\/","", fileName)
                  subject = fileNameShort+":"+str(count)+" " + todoInfo
                  # make url that can link to specific place in file
                  url = "https://github.com/"+projectAccount + "/" + project + "/blob/master/" + fileNameShort + "#L" + str(count)
                  r = gh.repos(projectAccount)(project).issues.post(title=subject, body=url)
                  line = re.sub("(\#)TODO:","#TODO [GH"+str(r.number)+"]:", line)
              print(line) #write line back to file
              count = count + 1
      

      您可以访问我的 github 上的 who 脚本。 https://github.com/jmeed/todo2github

      【讨论】:

        猜你喜欢
        • 2015-07-17
        • 1970-01-01
        • 2021-08-25
        • 2021-12-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-22
        • 2016-09-04
        相关资源
        最近更新 更多