今天遇到一个错误,让我想知道检查源代码一致性的工具。一、bug:
我的 jQuery 选择器期望 .attached_reports
,但 HTML 模板正在创建一个类为 attached-reports
的 div 。发生的事情是,我们热心的主题决定标准化所有类名以使用连字符而不是下划线,结果我们的代码崩溃了。
问题:
是否有一种工具或方法可以解析源代码,并将 attached-reports
的每次出现关联起来一起。然后,如果其中一个符号发生更改(例如,在版本控制提交时),它可以向团队发出更改通知吗?
最佳答案
您需要的是跨语言一致性检查器,它可以静态检查运行时可能发生的错误。
为此,您需要一个可以处理所有相关语言的工具(您有两个:Javascript?[用于 Jquery],特别引用 HTML 模板,以及 HTML 模板语言(不完全是 HTML)。该工具必须知道 JavaScript 代码将使用名称引用模板(大概这只是一个字符串;你怎么知道模板名称不是由某些神秘的过程计算出来的?),并且将引用 HTML 模板条目(如果有一个模板槽未被引用,可以吗?)
世界上充满了有趣的小语言以及它们之间的更有趣的约束(随着人们发明更多的 DSL 和集成规则,情况变得更糟)。您不太可能找到适合每种组合的现成工具。
我们的DMS Software Reengineering Toolkit旨在轻松接受新的语言描述或方言变体(以便您可以定义 HTML 模板变体)和自定义分析器(以便您可以检测违规行为)。 【DMS已经拥有稳定的常规和非常规Language Front Ends其中包括 JavaScript 的一个。 DMS 在多个方面都具有可扩展性;一是它可以同时处理的语言数量...例如您的情况中的“两种”。
DMS 使人们能够编写自定义分析器或转换器的代码。当然,无论采用何种分析,都受到可计算性的限制;如果您的模板名称是由晦涩难懂的 JavaScript 代码计算的,则该工具不太可能确定该计算名称是否与模板中的某些内容匹配。
关于version-control - 在源代码中查找符号依赖关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10954879/