为特定对象定义或抑制 WebStorm 代码分析
Define or suppress WebStorm Code Analysis for a specific object
我在使用 WebStorm 代码分析工具时遇到问题。
在节点快递服务器中,我发送了一个对象:
var configSummary = {
'siteDirs': siteDirs,
etc...
};
res.status(200).send(configSummary);
在网络应用程序中,我使用 jQuery 要求快递服务器发回 JSON 对象:
$.getJSON('/makers/config', function(configSummary) {
configSummary.siteDirs.forEach(etc...
})
代码运行没有错误,但是我的网络应用程序的 WebStorm 代码分析注释器非常合理地抱怨 configSummary.siteDirs 是一个未解析的变量。我知道如何通过评论来抑制编辑器中的错误,但我不喜欢这种解决方案。相反,我想教 WebStorm 关于 configSummary 对象或告诉它忽略客户端 JavaScript 文件中的 "type"。我该怎么做?
在实际数据仅在运行时已知的情况下(例如,当数据是通过 ajax 调用设置的值时),在静态分析期间无法重新解析,因此会出现错误。
无法禁止对特定错误类型的分析 - 您只能禁止对使用注释的语句进行分析。但是你可以让 IDE 知道你的数据是什么样的。
使用 JSDoc 注释的可能解决方案:
/**
* @typedef {Object} configSummary
* @property {Object} siteDirs
*/
...
$.getJSON('/makers/config', function (/** configSummary */ configSummary) {
configSummary.siteDirs.forEach(...)
})
另请参阅 https://youtrack.jetbrains.com/issue/WEB-17419#comment=27-1058451, http://devnet.jetbrains.com/message/5504337#5504337 了解其他可能的解决方法。
您可以从 plugins/JavaScriptLanguage/lib/JavaScriptLanguage.jar!/com/intellij/lang/javascript/index/predefined/ 打开任何 .js 库文件以查看存根定义是什么样的
我在使用 WebStorm 代码分析工具时遇到问题。
在节点快递服务器中,我发送了一个对象:
var configSummary = {
'siteDirs': siteDirs,
etc...
};
res.status(200).send(configSummary);
在网络应用程序中,我使用 jQuery 要求快递服务器发回 JSON 对象:
$.getJSON('/makers/config', function(configSummary) {
configSummary.siteDirs.forEach(etc...
})
代码运行没有错误,但是我的网络应用程序的 WebStorm 代码分析注释器非常合理地抱怨 configSummary.siteDirs 是一个未解析的变量。我知道如何通过评论来抑制编辑器中的错误,但我不喜欢这种解决方案。相反,我想教 WebStorm 关于 configSummary 对象或告诉它忽略客户端 JavaScript 文件中的 "type"。我该怎么做?
在实际数据仅在运行时已知的情况下(例如,当数据是通过 ajax 调用设置的值时),在静态分析期间无法重新解析,因此会出现错误。
无法禁止对特定错误类型的分析 - 您只能禁止对使用注释的语句进行分析。但是你可以让 IDE 知道你的数据是什么样的。 使用 JSDoc 注释的可能解决方案:
/**
* @typedef {Object} configSummary
* @property {Object} siteDirs
*/
...
$.getJSON('/makers/config', function (/** configSummary */ configSummary) {
configSummary.siteDirs.forEach(...)
})
另请参阅 https://youtrack.jetbrains.com/issue/WEB-17419#comment=27-1058451, http://devnet.jetbrains.com/message/5504337#5504337 了解其他可能的解决方法。 您可以从 plugins/JavaScriptLanguage/lib/JavaScriptLanguage.jar!/com/intellij/lang/javascript/index/predefined/ 打开任何 .js 库文件以查看存根定义是什么样的