【问题标题】:Javascript code analysis and constantsJavascript代码分析和常量
【发布时间】:2011-07-19 16:13:16
【问题描述】:

鉴于 Javascript 中没有跨浏览器 const,并且大多数变通方法比我关心的更复杂,我将使用 THIS_IS_A_CONSTANT 的命名约定。一切都很好,但我想到的是,如果有办法让我的 IDE(带有 Resharper 6 的 VS.NET 2010)向我发出警告,警告我使用该命名约定对变量进行赋值的任何 Javascript 代码,除了在变量声明中,这将处理 Javascript 中缺少实际常量的大部分潜在问题(至少满足我的需要)。

那么有谁知道生成此类警告的好方法吗? In-IDE 将是最好的选择,但其他解决方案也很好。我一直在寻找类似 FX-Cop for Javascript 的东西; jslint 似乎不允许创建新规则,但也许我看的不够深入。我也可能建议将此作为 Resharper 中的一个功能(假设我没有错过使它这样做的方法)。

谢谢, 马修

【问题讨论】:

  • 常数很容易。只需将不可写属性添加到 window 或其他容器即可。
  • @Raynos:跨浏览器兼容吗?
  • @MatthewNichols 使用垫片,是的。它们不会在旧浏览器中作为常量强制执行,但如果你的 IDE 知道 ES5,它仍然应该拒绝
  • @Mrchief:不,我没有……我会这样做。我只提到了将它与 JS 一起使用,但这是令人鼓舞的。并且 Resharper 集成也...很好。
  • @MatthewNichols Object.defineProperty 用于添加只读属性

标签: javascript visual-studio-2010 resharper code-analysis


【解决方案1】:

所以你想找到任何形式的分配:

id = exp ;

其中 id 不包含子字符串 CONSTANT 而 exp 是数字常量?

我们的Source Code Search Engine (SCSE) 可以直接做到这一点。 SCSE 读取用于多种语言(包括 JavaScript)的大量文件的源代码,将其分解为标记忽略空格,并将其全部编入索引以实现快速搜索标记序列。任何命中都会显示在命中窗口中,并且可以单击以查看上下文中的实际文件文本。

将说明您的特定查询:

  (I - I=*CONSTANT*) '=' N ( ';' | O | K | I)

这会寻找目标标识符不包含字符串常量的任何分配(请参阅匹配字符串周围的通配符星号),分配一个常量 *N*umber 后面没有' ;'或 *O* 运算符、*K*word 或 *I* 标识符(所有这些额外的东西都是因为 JavaScript 可能没有分号终止语句)。它可能会遇到一些不应该但 这些很容易检查。

【讨论】:

  • 你的产品很有趣;我想要一个源搜索引擎已经有一段时间了。但是,我无法在您的定价页面上找到它的定价信息。在我知道购买价格是多少之前,我什至不会打扰演示。有什么线索吗?
  • @Matthew:联系公司了解详情。
  • 是的,这当然是答案。我们都必须自己决定这些事情,但对于现成的产品,如果一家公司不在其网站上发布其基本产品定价,我不会再费心。我用我的钱支持基本(和定价表是尽可能基本的)透明度的方式,尽管它们可能很微薄。我想这是一个整洁的产品。
  • 我必须告诉你我的电子邮件地址、我的名字等等。 - 非常好的提议,但是:不,谢谢。
猜你喜欢
  • 2010-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-13
  • 2014-07-13
  • 2013-04-02
  • 2012-07-14
  • 1970-01-01
相关资源
最近更新 更多