简体   繁体   中英

Turn on cyclmatic complexity in JSHint

I am using JSHint and I want to turn on cyclomatic complexity.
From JsHint homepage and JsHint Docs , JsHint seem to be able to measure it.
But after I ran this command jshint test.js to test the below file

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

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

I only get the linting report (test.js: line 4, col 14, Missing semicolon., ...)

How can I do this?

From the API docs , it looks like you can call JSHINT.data() after linting to get the metrics, which includes measuring complexity:

JSHINT.data()

Generate a report containing details about the most recent invocation of JSHINT.

For example, the following code:

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

JSHINT(source, options, predef);

console.log(JSHINT.data());

...will produce the following output:

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

This will display the measured complexity.

Note that this is completely separate from the maxcomplexity rule - if enabled, and you set it low enough, and you have a function complex enough, your linting output will include an error.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM