C++ 将文本从源代码行关联到行-太脆弱

C++ 将文本从源代码行关联到行-太脆弱,c++,c,text,C++,C,Text,我需要将文本数据与源代码文件中的行相关联。类似于“这些行用于创建Myclass对象”->从20到32的行 问题是,这种行跟踪非常脆弱:只要有人添加一个新行,就足以打破关联文本和行之间的对应关系 我需要一个想法来加强这个链接(不是太多,但至少可以抵抗几行移位),建议是非常受欢迎的。一个简单的解决方案是散列(md5非常容易访问)行并沿数据存储散列 然后可以根据可能修改的文件检查哈希。如果匹配,很好,否则就开始检查上一行/下一行是否匹配。一种方法可能是寻求源代码管理系统的帮助。例如,使用Git,您可以

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

问题是,这种行跟踪非常脆弱:只要有人添加一个新行,就足以打破关联文本和行之间的对应关系


我需要一个想法来加强这个链接(不是太多,但至少可以抵抗几行移位),建议是非常受欢迎的。

一个简单的解决方案是散列(
md5
非常容易访问)行并沿数据存储散列


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

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

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

C/C++源代码文件,但是是的,应用程序在Windows下,关联在哪里?您是否可以在代码中使用注释来包装这些部分,然后通过脚本运行源文件来生成关联?注释包装器通常会随着相关代码一起移动。@parapurajkumar-为什么?让我猜猜,‘微软代码!2013年最新增加的办公套件!快速方便地注释/注释您的代码!只需浏览一系列不可理解且不直观的工具栏和功能区控件,就可以在一天之内编写“Hello World”程序,并使用1045种不同字体提供完整的注释!介绍性报价,仅599美元@farski,我不太喜欢这个解决方案,因为它非常混乱。。我不喜欢弄乱源代码文件either@MartinJames不完全是。。允许您查询PDB,您可以从it@AdamLiss我只是在处理问题中的问题,主要是“有人添加一个换行符来打断我相关文本和行之间的对应关系就足够了。”。如果编辑了一行,那会很糟糕:)我同意这会很好而且很容易实现。。有一个问题是,如果用户选择了“var=22;”行,它可能会在源代码中额外出现n次,从而弄乱我的散列correspondence@JohnnyPauling从周围的代码中派生逻辑上下文,在我看来,是一个更大更复杂的问题。嗯,我也在考虑存储每个块的行数,沿着整个块的散列。然后对整个源代码使用某种“滑动窗口”。。比如从开头的前N行开始计算散列,看看这些是否是我需要的行。这将是一个很好的解决方案,但是非常缓慢的斯洛维并不真的喜欢将源代码与附加注释弄乱的想法,这可能会降低可读性,否则这将是一个很好的解决方案,如果以一种规范的方式编写,doxygen注释作为导出文档和实现内联文档本身的模板具有双重作用。注释永远不应该混淆,但一般来说,如果其他人遇到您的代码块,并且注释有助于帮助理解,则应注释它。六个月或一年后,你将成为另一个人。