鉴于 Javascript 中没有跨浏览器常量,并且大多数解决方法比我关心的更复杂,我将采用 THIS_IS_A_CONSTANT 的命名约定。一切都很好,但我想到的是,如果有办法让我的 IDE(带有 Resharper 6 的 VS.NET 2010)对任何使用该命名约定对变量进行赋值的 Javascript 代码发出警告,除了在变量声明中,这将处理 Javascript 中缺乏实际常量的大多数潜在问题(至少满足我的需要)。
那么有人知道生成此类警告的好方法吗? In-IDE 是最好的选择,但其他解决方案也可以。我一直在寻找类似 FX-Cop for Javascript 的东西; jslint 似乎不允许创建新规则,但也许我看得不够深入。我也可能建议将此作为 Resharper 中的一项功能(假设我没有错过让它这样做的方法)。
谢谢, 马修
最佳答案
所以你想找到以下形式的任何分配:
id = exp ;
其中 id 不包含子字符串 CONSTANT 并且 exp 是数字常量?
我们的Source Code Search Engine (SCSE)可以直接做到这一点。 SCSE 读取多种语言(包括 JavaScript)的大量文件的源代码,将其分解为标记忽略空格,并将其全部索引以实现快速搜索标记序列。任何点击都会显示在点击窗口中,并且可以单击以查看上下文中的实际文件文本。
您的具体查询将被说明:
(I - I=*CONSTANT*) '=' N ( ';' | O | K | I)
这会寻找目标标识符不包含字符串常量的任何分配(请参阅匹配字符串周围的通配符星号),分配一个常量 *N*数字后面不跟有 ' ;'或 *O* 运算符、*K* 单词或 *I* 标识符(所有这些额外的内容是因为 JavaScript 可能没有分号终止该语句)。它可能会处理一些不应该处理的情况,但是 这些很容易检查。
关于Javascript代码分析和常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6750439/