Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将@author的使用视为违反代码样式_Javascript_Jslint_Jshint_Eslint_Static Code Analysis - Fatal编程技术网

Javascript 将@author的使用视为违反代码样式

Javascript 将@author的使用视为违反代码样式,javascript,jslint,jshint,eslint,static-code-analysis,Javascript,Jslint,Jshint,Eslint,Static Code Analysis,目标: 如果项目中的.js文件中的任何位置使用了@author标记,则发出警告 问题: 这是jshint或其他静态代码检查工具可以帮助的吗?如果没有,我有什么选择 说明: 我完全同意Paul在thread上的回答,并将@author标记视为不必要的噪音 而且,在Python世界中,我看到人们检查标记的使用情况。例如,明确声明不使用@author标记。他们开发了一套定制的flake 8检查,包括: [H105] Don’t use author tags. 现在,我正试图用JavaScript解

目标:

如果项目中的
.js
文件中的任何位置使用了
@author
标记,则发出警告

问题:

这是
jshint
或其他静态代码检查工具可以帮助的吗?如果没有,我有什么选择

说明:

我完全同意Paul在thread上的回答,并将
@author
标记视为不必要的噪音

而且,在Python世界中,我看到人们检查标记的使用情况。例如,明确声明不使用
@author
标记。他们开发了一套定制的
flake 8
检查,包括:

[H105] Don’t use author tags.
现在,我正试图用JavaScript解决同样的问题

示例(这不应通过代码质量检查):

/**
*@作者约翰·史密斯
*/
"严格使用",;

不,jshint不能这样做。只需在源代码中搜索@author。如果需要,可以将其放入git预提交挂钩中。或者,如果JSDoc遇到@author,您可以让它在创建文档时出错

对不起,我本想在发布答案之前尝试一下,但悬赏金快用完了。^)

声称有一种方法可以编写自己的JSHint模块

  • 看起来像是在一个分支机构里做的
  • 据说,这个项目已经过时了。它被合并到主存储库中,这是一个好迹象
让我们假设它的工作原理与广告一样,并已重新合并

但是请注意,这些都在“jshint next”网站上

来自该页面的示例代码:

// This module errs on any identifier that doesn't starts with 'kitty'.
function myModule(linter) {
  linter.on("Identifier", function (ident) {
    if (ident.name && ident.name.slice(0, 5) !== "kitty")
      linter.report.addError("C001", "More cats please.");
  });
}
以下是关于如何设置过梁的初始部分:

var Linter = require("jshint").Linter;
var code   = "<your beautiful JavaScript code here>";

// Create a new instance of Linter.
var linter = new Linter(code);

// Now you can teach JSHint about your predefined variables.
// Note that default JavaScript identifiers are already there.
linter.addGlobals({
  jQuery:   false,
  MyPlugin: true
});

// If you have any JSHint extensions, you can attach them
// to the current instance.
linter.addModule(myModule);

// Finally, parse your code.
linter.parse();
var Linter=require(“jshint”).Linter;
var代码=”;
//创建Linter的新实例。
var linter=新的linter(代码);
//现在,您可以向JSHint教授预定义变量。
//请注意,默认JavaScript标识符已经存在。
林特·阿德格罗巴尔斯({
jQuery:false,
MyPlugin:true
});
//如果您有任何JSHint扩展,可以附加它们
//到当前实例。
linter.addModule(myModule);
//最后,解析代码。
parse();
我意识到这是非常通用的(您仍然需要研究
linter.on
选项,而不仅仅是
标识符
;还有一个
字符串,例如),但它看起来很有希望。同样,您可以看到如何使用说明进行集成。看起来这就是它的格式

我还没有试过这个。只是没有时间在家;抱歉

torazaburo的“Just
grep
it”回答不起作用有什么具体原因吗?您是否需要将其作为代码质量工作流的一部分?如果是这样,那么“编写您自己的模块”似乎就是一条出路

如果你愿意的话,也有相当明显的方法来破解JSLint,但我不确定Crockford是否会喜欢

通过一个用于JavaScript的可插入linting实用程序解决了这个问题

创建了一个(注意它是多么简单)并将其保存到
规则/no author.js

/**
 * @fileoverview A rule to disallow @author tag in code
 */

module.exports = function (context) {
    "use strict";
    function checkComment(node) {
        var commentToCheck = node.value.toLowerCase().trim();

        if (commentToCheck.indexOf("@author") !== -1) {
            context.report(node, "A comment unexpectedly contains @author.");
        }
    }

    return {
        "BlockComment": checkComment,
        "LineComment": checkComment
    };
};
现在,假设我有一个
test.js
文件,它违反了
@author
标记的使用:

/**
 * @author John Smith <john@smith.com>
 */

仅供参考,
no author:2
此处将规则作为错误打开(触发时退出代码为1)。

no,jshint不能这样做。只需在源代码中搜索
@author
。如果需要,可以将其放入git预提交挂钩中。或者,如果JSDoc在创建文档时遇到
@author
@torazaburo,你可以让它出错。谢谢你的有用评论,它实际上可以是一个合法的答案。哈,当然,在我写这个答案的时候,赏金会被授予。这就是我得到的。:)别担心,我会试试看,然后再给你回复。非常感谢你。(今天的投票数不多,但这绝对值得一次)仅供参考,我已经发布了我是如何用
ESLint
解决这个问题的(注意简单性)。不管怎样,赏金归你。谢谢你调查这件事。
/**
 * @author John Smith <john@smith.com>
 */
$ eslint test.js --rulesdir=rules/ --rule='no-author: 2'

test.js
  1:0  error  A comment unexpectedly contains @author  no-author

✖ 1 problem