【问题标题】:Associate text from source code line to line - too fragile将源代码中的文本逐行关联 - 太脆弱了
【发布时间】:2012-07-26 21:31:26
【问题描述】:

我需要将文本数据与源代码文件中的行关联起来。类似于“这些行用于创建 Myclass 对象”-> 20 到 32 行。

问题在于这种行跟踪非常脆弱:有人添加换行符来破坏关联文本和行之间的对应关系就足够了。

我需要一个想法来让这个链接更强大一些(不要太多,但至少要抵抗一些换行),非常欢迎提出建议。

【问题讨论】:

  • C/C++ 源代码文件,但是是的,应用在 windows 下
  • 关联在哪里呈现?您可以在代码中使用 cmets 来包装这些部分,然后通过脚本运行源文件来生成关联吗?注释包装器通常会随相关代码一起移动。
  • @parapurarajkumar - 为什么?让我猜猜,'微软代码! 2013 年 Office 套件的最新成员!快速轻松地评论/注释您的代码!只需浏览一系列难以理解且不直观的工具栏和功能区控件,即可在一天内编写您的“Hello World”程序,并以 1045 种不同的字体进行完整评论!介绍性优惠,只需 599 美元!'。
  • @farski,我不太喜欢这个解决方案,因为它很乱。我也不喜欢弄乱源代码文件
  • @MartinJames 不是真的.. DIA SDK 让您查询 PDB,您可以从中找到此信息

标签: c++ c text


【解决方案1】:

一个简单的解决方案是对行进行散列(md5 非常简单且易于访问)并将散列存储在数据中。

然后您可以根据可能修改的文件检查哈希。如果匹配,很好,否则开始检查上一行/下一行是否匹配。

【讨论】:

  • @AdamLiss 我只是在处理问题中的问题,主要是“有人添加换行符来破坏我在关联文本和行之间的对应关系就足够了。”。如果编辑了一行,那会很糟糕:)
  • 我同意这将是好的并且易于实现..如果用户选择“var = 22;”就会出现问题行,这可能会在源代码中出现 n 次,从而弄乱我的哈希对应
  • @JohnnyPauling 从周围的代码中获取逻辑上下文在我看来是一个更大更复杂的问题。
  • 嗯我也在考虑存储每个块的行数,沿着整个块的哈希。然后对整个源代码使用某种“滑动窗口”......就像从开头的前 N ​​行开始并计算哈希以查看这些是否是我需要的行。这会很棒,但非常慢
【解决方案2】:

一种方法可能是寻求源代码控制系统的帮助。例如,使用 Git,您可以将文本数据与源代码的特定 版本 相关联。如果源代码被更改,您可以使用“diff”算法来发现添加或删除了哪些行。使用该增量信息,您可以更新注释行(例如,在文件顶部添加一行会使您的 20-32 注释移动到 21-33)。

【讨论】:

    【解决方案3】:

    您是否正在尝试实施某种形式的自动文档系统?如果是这样,那么基于行编号确实很脆弱。我建议使用某种标记将文本与语义代码块相关联,这些代码块在移动或更改时是健壮的。也许您正在寻找类似doxygen 的东西。

    【讨论】:

    • 我不太喜欢将源代码与额外的 cmets 混淆的想法,这可能会降低可读性,否则这将是一个很好的解决方案
    • 如果以规范的方式编写,doxygen cmets 可以作为模板用于导出文档和实现内联文档本身。注释永远不应该混淆,但一般来说,规则应该是,如果其他人遇到了你的代码块并且注释有助于理解,那么就注释它。六个月或一年后,你将成为另一个人。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多