Version control 查找源代码中的符号依赖项

Version control 查找源代码中的符号依赖项,version-control,Version Control,今天我遇到了一个bug,它让我对检查源代码一致性的工具感到好奇。首先,缺陷: 我的jQuery选择器需要.attached_reports,但HTML模板正在使用类attached reports创建一个div。我们热心的themer决定标准化所有类名,使用连字符而不是下划线,结果我们的代码崩溃了 问题是: 是否有一种工具或方法可以解析源代码,并将所附报告的每次出现关联在一起。然后,如果其中一个符号发生更改(例如,在版本控制提交时),它可以提醒团队该更改?您需要的是跨语言一致性检查器,它可以静态

今天我遇到了一个bug,它让我对检查源代码一致性的工具感到好奇。首先,缺陷:

我的jQuery选择器需要
.attached_reports
,但HTML模板正在使用类
attached reports
创建一个div。我们热心的themer决定标准化所有类名,使用连字符而不是下划线,结果我们的代码崩溃了

问题是:
是否有一种工具或方法可以解析源代码,并将
所附报告的每次出现关联在一起。然后,如果其中一个符号发生更改(例如,在版本控制提交时),它可以提醒团队该更改?

您需要的是跨语言一致性检查器,它可以静态检查运行时可能发生的错误

要做到这一点,您需要一个能够处理所有相关语言的工具(您有两个工具:Javascript?[for Jquery]和HTML模板语言(不完全是HTML)。该工具必须知道Javascript代码将使用名称引用模板(这可能只是一个字符串;您如何知道模板名称不是由某个神秘的过程计算出来的?),并且HTML模板条目将被引用(如果存在未被引用的模板槽,可以吗?)

这个世界充满了有趣的小语言和它们之间更有趣的约束(随着人们发明越来越多的DSL和集成规则,情况变得越来越糟)。你不可能为每种组合找到现成的工具

我们的设计可以轻松地接受新的语言描述或方言变体(因此您可以定义HTML模板变体)和自定义分析器(以便您可以检测违规行为)。[DMS已经有了一个稳定的传统和非传统的组合,包括一个。DMS在多个维度上都是可伸缩的;一个是它可以同时处理的语言数量……比如您的案例中的“两种”


DMS允许用户对自定义分析器或转换器进行编码。当然,无论实现什么样的分析都会受到可计算性约束;如果您的模板名称是由神秘的JavaScript代码计算出来的,那么该工具就不太可能确定该计算出的名称是否与模板中的某些内容匹配。

感谢reinforcement——你所描述的确实是我想要的。现在,我要找到一个开源的工具链来实现它!好吧,你可以尝试用一个(OSS)来构建这样一个工具类似ANTLR的解析器。根据我的经验,您总是需要比解析器所能提供的更多的东西;在您的情况下,基本上每种语言都需要至少一个符号表。在概念灵活性方面,可以与DMS相比的唯一OSS工具链是Stratego/XT和TXL。Stratego/XT遵循“LifeAfterParsing”提供重写规则但不提供其他内容的想法;TXL以一种不同寻常的方式提供符号表,以及重写规则但不提供其他内容。我不知道他们的JavaScript解析器有多好,如果确实存在的话;您可能已经修复了这些问题并从头开始创建。DMS有完整的JavaScript和HTML解析器,并且支持构建方言(正如你需要的HTML模板)的那些。感谢OSS的指针-伟大的起点。标记这是正确的答案。