【问题标题】:Turn on cyclmatic complexity in JSHint在 JSHint 中开启圈复杂度
【发布时间】:2025-12-08 19:20:04
【问题描述】:

我正在使用 JSHint,我想打开圈复杂度。
JsHint homepageJsHint Docs 来看,JsHint 似乎可以测量它。
但是在我运行这个命令jshint test.js 来测试下面的文件之后

//test.js
$(document).ready(function() {
    $("p").click(function() {
        $(this).hide();
        var x = 5
    });

    function main() {
        return 'Hello, World!';
    }
});

我只得到 linting 报告(test.js: line 4, col 14, Missing semicolon., ...)

我该怎么做?

【问题讨论】:

    标签: javascript jshint cyclomatic-complexity


    【解决方案1】:

    API docs 看来,您可以在 linting 后调用 JSHINT.data() 以获取指标,其中包括测量复杂性:

    JSHINT.data()

    生成包含有关最近调用 JSHINT 的详细信息的报告。

    例如下面的代码:

    var source = [
      'function goo() {}',
      'foo = 3;'
    ];
    var options = {
      undef: true
    };
    var predef = {
      foo: false
    };
    
    JSHINT(source, options, predef);
    
    console.log(JSHINT.data());
    

    ...将产生以下输出:

    {
      functions: [
        {
          name: 'goo',
          // ...
          metrics: {
            complexity: 1,
            parameters: 0,
            statements: 0
          }
          // ...
    

    这将显示测量的复杂性。

    请注意,这与 maxcomplexity 规则完全分开 - 如果启用,并且您将其设置得足够低,并且您的功能足够复杂,那么您的 linting 输出将包含错误。

    【讨论】: