Coder Social home page Coder Social logo

fgribreau / check-build Goto Github PK

View Code? Open in Web Editor NEW
687.0 687.0 38.0 2.3 MB

:dart: Check-build - Verifies that your NodeJS project follows team conventions, is well written, up to date and secure.

Home Page: http://blog.fgribreau.com/2014/10/check-build-verify-that-your-nodejs.html

License: MIT License

JavaScript 99.15% Dockerfile 0.85%

check-build's Issues

.istanbul.yml with default-excludes: false

When changing default-excludes to false the coverage report starts failing with the following error message:

Failed to parse file: ...\node_modules\acorn-jsx\node_modules\acorn\dist\acorn_loose.es.js

...\node_modules\istanbul\lib\instrumenter.js:468
                throw e;
                ^
Error: Line 1: Unexpected token
    at constructError (...\node_modules\istanbul\node_modules\esprima\esprima.js:2407:21)
    at createError (...\node_modules\istanbul\node_modules\esprima\esprima.js:2426:17)
    at unexpectedTokenError (...\node_modules\istanbul\node_modules\esprima\esprima.js:2500:13)
    at tolerateUnexpectedToken (...\node_modules\istanbul\node_modules\esprima\esprima.js:2509:21)
    at parseStatementListItem (...\node_modules\istanbul\node_modules\esprima\esprima.js:3973:21)
    at parseFunctionSourceElements (...\node_modules\istanbul\node_modules\esprima\esprima.js:4869:23)
    at parseFunctionExpression (...\node_modules\istanbul\node_modules\esprima\esprima.js:5074:16)
    at parsePrimaryExpression (...\node_modules\istanbul\node_modules\esprima\esprima.js:3273:24)
    at inheritCoverGrammar (...\node_modules\istanbul\node_modules\esprima\esprima.js:2681:18)
    at parseLeftHandSideExpressionAllowCall (...\node_modules\istanbul\node_modules\esprima\esprima.js:3414:20)
    at inheritCoverGrammar (...\node_modules\istanbul\node_modules\esprima\esprima.js:2681:18)
    at parsePostfixExpression (...\node_modules\istanbul\node_modules\esprima\esprima.js:3490:16)
    at parseUnaryExpression (...\node_modules\istanbul\node_modules\esprima\esprima.js:3550:20)
    at inheritCoverGrammar (...\node_modules\istanbul\node_modules\esprima\esprima.js:2681:18)
    at parseBinaryExpression (...\node_modules\istanbul\node_modules\esprima\esprima.js:3639:16)
    at inheritCoverGrammar (...\node_modules\istanbul\node_modules\esprima\esprima.js:2681:18)
    at parseConditionalExpression (...\node_modules\istanbul\node_modules\esprima\esprima.js:3696:16)
    at parseAssignmentExpression (...\node_modules\istanbul\node_modules\esprima\esprima.js:3893:16)
    at inheritCoverGrammar (...\node_modules\istanbul\node_modules\esprima\esprima.js:2681:18)
    at parseGroupExpression (...\node_modules\istanbul\node_modules\esprima\esprima.js:3162:16)
    at inheritCoverGrammar (...\node_modules\istanbul\node_modules\esprima\esprima.js:2681:18)
    at parsePrimaryExpression (...\node_modules\istanbul\node_modules\esprima\esprima.js:3239:20)
    at inheritCoverGrammar (...\node_modules\istanbul\node_modules\esprima\esprima.js:2681:18)
    at parseLeftHandSideExpressionAllowCall (...\node_modules\istanbul\node_modules\esprima\esprima.js:3414:20)
    at inheritCoverGrammar (...\node_modules\istanbul\node_modules\esprima\esprima.js:2681:18)
    at parsePostfixExpression (...\node_modules\istanbul\node_modules\esprima\esprima.js:3490:16)
    at parseUnaryExpression (...\node_modules\istanbul\node_modules\esprima\esprima.js:3550:20)
    at inheritCoverGrammar (...\node_modules\istanbul\node_modules\esprima\esprima.js:2681:18)
    at parseBinaryExpression (...\node_modules\istanbul\node_modules\esprima\esprima.js:3639:16)
    at inheritCoverGrammar (...\node_modules\istanbul\node_modules\esprima\esprima.js:2681:18)
    at parseConditionalExpression (...\node_modules\istanbul\node_modules\esprima\esprima.js:3696:16)
    at parseAssignmentExpression (...\node_modules\istanbul\node_modules\esprima\esprima.js:3893:16)
    at isolateCoverGrammar (...\node_modules\istanbul\node_modules\esprima\esprima.js:2663:18)
    at parseExpression (...\node_modules\istanbul\node_modules\esprima\esprima.js:3942:16)
    at parseExpressionStatement (...\node_modules\istanbul\node_modules\esprima\esprima.js:4222:20)
    at parseStatement (...\node_modules\istanbul\node_modules\esprima\esprima.js:4760:24)
    at parseStatementListItem (...\node_modules\istanbul\node_modules\esprima\esprima.js:3989:16)
    at parseScriptBody (...\node_modules\istanbul\node_modules\esprima\esprima.js:5490:25)
    at parseProgram (...\node_modules\istanbul\node_modules\esprima\esprima.js:5506:16)
    at Object.parse (...\node_modules\istanbul\node_modules\esprima\esprima.js:5690:23)
    at Object.instrumentSync (...\node_modules\istanbul\lib\instrumenter.js:459:31)
    at ...\node_modules\istanbul\lib\command\common\run-with-cover.js:224:33
    at Array.forEach (native)
    at process.<anonymous> (...\node_modules\istanbul\lib\command\common\run-with-cover.js:222:39)
    at process.g (events.js:292:16)
    at emitOne (events.js:96:13)
    at process.emit (events.js:188:7)
    at process.exit (internal/process.js:164:15)
    at done (...\node_modules\mocha\bin\_mocha:490:15)
    at afterWrite (_stream_writable.js:385:3)
    at _combinedTickCallback (internal/process/next_tick.js:86:20)
    at process._tickCallback (internal/process/next_tick.js:104:9)
npm ERR! Test failed.  See above for more details.

Use Drool for memory-leak-detection

https://github.com/samccone/drool

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/27369538-use-drool-for-memory-leak-detection?utm_campaign=plugin&utm_content=tracker%2F7304231&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F7304231&utm_medium=issues&utm_source=github).

Support for HTML Code sniffer

https://github.com/squizlabs/HTML_CodeSniffer

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/8777191-support-for-html-code-sniffer?utm_campaign=plugin&utm_content=tracker%2F7304231&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F7304231&utm_medium=issues&utm_source=github).

npm outdated

Add an interface for npm outdated. I will happily accept PR for this.

Support for jscpd (copy/paste detector)

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/25348384-support-for-jscpd-copy-paste-detector?utm_campaign=plugin&utm_content=tracker%2F7304231&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F7304231&utm_medium=issues&utm_source=github).

Failing to load eslint

We've been using check-build to run jscs and jshint. We now wanted to add eslint, but check-build fails to load it (running eslint separately works fine).

Simplified package.json:

{
  ...
  "devDependencies": {
    "check-build": "2.6.0",
    "eslint": "1.10.2",
    "jscs": "1.13.1",
    "jshint": "2.8.0",
    ...
  },
  ...
}

Our .checkbuild after adding eslint:

{
  "checkbuild": {
    "enable": ["eslint", "jscs", "jshint"],
    "allowFailures": false,
    "continueOnError": true
  },
  "eslint": {
    "args": ["."]
  },
  "jscs": {
    "args": ["."]
  },
  "jshint": {
    "args": ["."]
  },
}

Running eslint independently works:

$ eslint .
$ echo $?
0

However, check-build fails on eslint:

$ check-build
[eslint]

/bin/sh: <project_dir>/node_modules/check-build/node_modules/.bin/eslint: No such file or directory


Checkbuild module "eslint" failed.

true

[jscs]
No code style errors found.

[jshint]

โœ” No problems


1 module(s) failed, exiting.

I don't fully understand if this is an issue with check-build looking for eslint in the wrong directory (if it was meant to use <project_dir>/node_modules/.bin/eslint instead, which exists) or looking at the right directory but for some reason not being shipped with the necessary bin.

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/28717323-failing-to-load-eslint?utm_campaign=plugin&utm_content=tracker%2F7304231&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F7304231&utm_medium=issues&utm_source=github).

JSHint url: write the same filename as the distant one

Let say your .checkbuild file contains:

"jshint": {
  "args": ["**/*.js",  "!*node_modules/**"],
  "url":"https://raw.githubusercontent.com/iadvize/javascript-convention/master/.jshintrc_base"
},

and you have a .jshintrc file inside your project:

{
  "extends": "./.jshintrc_base",
  // ... e.g.:
  "maxparams": 10
}

check-build will automatically download the .jshintrc_base into your project and jshint will take care of merging both files through extends!

Support for npmlint

https://github.com/sindresorhus/npmlint

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/28710125-support-for-npmlint?utm_campaign=plugin&utm_content=tracker%2F7304231&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F7304231&utm_medium=issues&utm_source=github).

David output is blank (deps are not checked)

Looks like David check task is buggy. With a standard check-build configuration, the task is executed w/o checking or outputting anything (no dependencies up to date message).

If I manually downgrade a random dependency, David still does not complaint that dependencies are out-to-date.

Would that be a bug introduced recently, or a misconfiguration on my side? - I remember it used to work on older projects I had, like 4 months ago.

Here's my .checkbuild conf file:

{
  "checkbuild": {
    "enable": ["jshint", "jscs", "nsp", "david"],
    "continueOnError": true,
    "allowFailures": false
  },
  "jshint": {
    "args": ["src/**/*.js"]
  },
  "jscs": {
    "args": ["src/**/*.js"]
  },
  "nsp": {}
}

Note that other tasks are successfully applied (JSHint fails/validates as expected, etc).

Cheers!

Support Facebook flow

http://www.sitepoint.com/writing-better-javascript-with-flow etc...

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/25834514-support-facebook-flow?utm_campaign=plugin&utm_content=tracker%2F7304231&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F7304231&utm_medium=issues&utm_source=github).

Bump up to NSP v2.0.0

Hey there,

Looks like current check-build NSP version is broken (v1.1.0), I constantly get:

/usr/local/lib/node_modules/nsp/node_modules/text-table/index.js:59
    return m ? m.index + 1 : c.length;
                              ^

TypeError: Cannot read property 'length' of undefined
    at dotindex (/usr/local/lib/node_modules/nsp/node_modules/text-table/index.js:59:31)
    at /usr/local/lib/node_modules/nsp/node_modules/text-table/index.js:11:21
    at Array.forEach (native)
    at forEach (/usr/local/lib/node_modules/nsp/node_modules/text-table/index.js:73:31)
    at /usr/local/lib/node_modules/nsp/node_modules/text-table/index.js:10:9
    at Array.reduce (native)
    at reduce (/usr/local/lib/node_modules/nsp/node_modules/text-table/index.js:63:30)
    at module.exports (/usr/local/lib/node_modules/nsp/node_modules/text-table/index.js:9:20)
    at prettyOutput (/usr/local/lib/node_modules/nsp/lib/prettyOutput.js:32:17)
    at /usr/local/lib/node_modules/nsp/commands/auditPackage/index.js:35:9

-- Which breaks my local tests + CI + ...production deploys.

Would be great if you could bump it up to the newly-available, bleeding edge NSP v2.0.0.

๐Ÿป

Add support for Snyk (nsp-like)

https://github.com/Snyk/snyk

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/29070739-add-support-for-snyk-nsp-like?utm_campaign=plugin&utm_content=tracker%2F7304231&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F7304231&utm_medium=issues&utm_source=github).

Erros with jsinspect

I'm getting erros with the jsinspect module. I added a .jscsrc to the project and got this error.

Checkbuild module interface for "jsinpsect" was not found
{ [Error: Cannot find module './src/interface/jsinpsect'] code: 'MODULE_NOT_FOUND' }
[jsinpsect]

C:\Users\viulraug\AppData\Roaming\npm\node_modules\check-build\check-build.js:55
module(checkbuildOptions[name], function (err) {
^
TypeError: undefined is not a function
at C:\Users\viulraug\AppData\Roaming\npm\node_modules\check-build\check-build.js:55:5
at iterate (C:\Users\viulraug\AppData\Roaming\npm\node_modules\check-build\node_modules\async\lib\async.js:
149:13)
at C:\Users\viulraug\AppData\Roaming\npm\node_modules\check-build\node_modules\async\lib\async.js:160:25
at C:\Users\viulraug\AppData\Roaming\npm\node_modules\check-build\check-build.js:62:7
at module.exports (C:\Users\viulraug\AppData\Roaming\npm\node_modules\check-build\src\interface\jscs.js:10:
3)
at C:\Users\viulraug\AppData\Roaming\npm\node_modules\check-build\check-build.js:55:5
at iterate (C:\Users\viulraug\AppData\Roaming\npm\node_modules\check-build\node_modules\async\lib\async.js:
149:13)
at C:\Users\viulraug\AppData\Roaming\npm\node_modules\check-build\node_modules\async\lib\async.js:160:25
at C:\Users\viulraug\AppData\Roaming\npm\node_modules\check-build\check-build.js:62:7
at module.exports (C:\Users\viulraug\AppData\Roaming\npm\node_modules\check-build\src\interface\jshint.js:4
0:3)

Don't bail out early

check-build seems neat but if jshint reports any warnings, the other tools don't run:

[jshint]

assets/js/controllers.js
  line 18  col 20  Expected '===' and instead saw '=='.
  line 26  col 20  Expected '===' and instead saw '=='.
  line 34  col 20  Expected '===' and instead saw '=='.

assets/js/filters.js
  line 19  col 25  Expected '===' and instead saw '=='.
  line 20  col 25  Expected '===' and instead saw '=='.
  line 21  col 25  Expected '===' and instead saw '=='.
  line 22  col 25  Expected '===' and instead saw '=='.

  โš   7 warnings

Checkbuild module "jshint" failed, exiting.
true

Can I configure check-build to keep running all of the tools despite warnings (or errors?) being reported back from one or more?

multiple .jshintrc seems to be not supported.

My project is defined as described bellow :

  • .checkbuild
  • .jshintrc
  • src/
  • tests/
    • .jshintrc
    • specs/

Here is the content of .checkbuild :

  "jshint": {
    "args": [
      "src/**/*.js",
      "tests/specs/**/*.js",
      "tests/utils/**/*.js"
    ]
  },

My problem is that when launching check-build, it seems that jshint does not use the "test" .jshintrc when checking the test files : all the "it", "before", "describe" raise warnings while there is "mocha": true, inside the .jshintrc.
When I launch jshint manually it is working fine.
I used jshint v2.8.0 for the manual test, and check-build v1.5.0.

I assume that check-build only look to the project root for the .jshintrc file.

Use david own ignore option

https://github.com/alanshaw/david#ignore-dependencies

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/27515982-use-david-own-ignore-option?utm_campaign=plugin&utm_content=tracker%2F7304231&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F7304231&utm_medium=issues&utm_source=github).

Support for an URL option for jscsrc

Instead of putting a .jscrc inside each of your project with check-build you can specify an URL. That URL will be downloaded each time check-build is run and its content will be saved inside check-build command current directory.

  "jscs": {
    "args": ["lib/**.js"],
    "url":"https://raw.githubusercontent.com/FGRibreau/javascript/master/.jscsrc"
  },

handle .jsinspectrc (jsinspect 0.2.0)

Since check-build is using jsinspect internal API it should now read .jsinspectrc file.

Am I right @danielstjules?

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/5757760-handle-jsinspectrc-jsinspect-0-2-0?utm_campaign=plugin&utm_content=tracker%2F7304231&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F7304231&utm_medium=issues&utm_source=github).

check-build -v should display version number

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/25490185-check-build-v-should-display-version-number?utm_campaign=plugin&utm_content=tracker%2F7304231&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F7304231&utm_medium=issues&utm_source=github).

Documentation

Develop a tool like "check-docs" or "dox-check" to check that at least X% functions are documented per files. Something like jsinspect but for documentation.

Then add an interface to check-build.

PR are welcome for this!

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/5733682-documentation?utm_campaign=plugin&utm_content=tracker%2F7304231&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F7304231&utm_medium=issues&utm_source=github).

Eshint on Windows

Getting weird errors when trying to use eslint on windows. Any idea?

[eslint]
internal/child_process.js:319
    throw errnoException(err, 'spawn');
    ^

Error: spawn UNKNOWN
    at exports._errnoException (util.js:1018:11)
    at ChildProcess.spawn (internal/child_process.js:319:11)
    at exports.spawn (child_process.js:378:9)
    at Object.exec (...\node_modules\check-build\src\interface\_utils.js:108:5)
    at ...\node_modules\check-build\src\interface\eslint.js:23:11
    at checkModuleInterface (...\node_modules\check-build\src\checkBuild.js:44:20)
    at ...\node_modules\check-build\src\checkBuild.js:26:9
    at ...\node_modules\async\lib\async.js:375:13
    at Immediate.iterate (...\node_modules\async\lib\async.js:262:13)
    at runCallback (timers.js:672:20)
npm ERR! Test failed.  See above for more details.

Add Retire.js

It seems to me that Retire follows a different approach to identifying modules with vulnerabilities than Nsp does. If this is confirmed, I would support the inclusion of Retire to check-build.


Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.