Jshint: ๋ถˆ์™„์ „ํ•œ instanceof ์ถฉ๋Œ

์— ๋งŒ๋“  2016๋…„ 10์›” 02์ผ  ยท  8์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: jshint/jshint

๋ถˆ์™„์ „ํ•œ instanceof๋ฅผ ์ž‘์„ฑํ•˜๋ฉด Cannot read property 'id' of undefined ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ์ž…๋ ฅ ์ฝ”๋“œ๋Š” ๋ฌธ์ œ๋ฅผ ์žฌํ˜„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

var something = [];
if(something instanceof) {
    // Notice the instanceof is missing the class name
}

ํ˜„์žฌ JSHint 2.9.3์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Has PR P2

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

ํ™•์ธ๋จ; ์‹ ๊ณ  ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ์ด ๋ฒ„๊ทธ๋ฅผ ์ˆ˜์ •ํ•˜๊ธฐ ์œ„ํ•ด ํŒจ์น˜๋ฅผ ์ œ์ถœํ–ˆ์Šต๋‹ˆ๋‹ค: https://github.com/jshint/jshint/pull/3046.

๋ชจ๋“  8 ๋Œ“๊ธ€

jshint v2.9.3์ด ์žˆ๋Š” ์›์ž ํŒจํ‚ค์ง€ linter-jshint ๋ฅผ ํ†ตํ•ด ์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

Error: C:\Users\emile.bergeron.CAMINO\.atom\packages\linter-jshint\node_modules\jshint\src\jshint.js:5386
        throw err;
        ^

TypeError: Cannot read property 'id' of undefined
    at C:\Users\emile.bergeron.CAMINO\.atom\packages\linter-jshint\node_modules\jshint\src\jshint.js:2131:14
    at Object.x.led (C:\Users\emile.bergeron.CAMINO\.atom\packages\linter-jshint\node_modules\jshint\src\jshint.js:1155:16)
    at expression (C:\Users\emile.bergeron.CAMINO\.atom\packages\linter-jshint\node_modules\jshint\src\jshint.js:926:36)
    at C:\Users\emile.bergeron.CAMINO\.atom\packages\linter-jshint\node_modules\jshint\src\jshint.js:2051:18
    at Object.x.led (C:\Users\emile.bergeron.CAMINO\.atom\packages\linter-jshint\node_modules\jshint\src\jshint.js:1155:16)
    at expression (C:\Users\emile.bergeron.CAMINO\.atom\packages\linter-jshint\node_modules\jshint\src\jshint.js:926:36)
    at Object.fud (C:\Users\emile.bergeron.CAMINO\.atom\packages\linter-jshint\node_modules\jshint\src\jshint.js:4423:22)
    at expression (C:\Users\emile.bergeron.CAMINO\.atom\packages\linter-jshint\node_modules\jshint\src\jshint.js:885:32)
    at statement (C:\Users\emile.bergeron.CAMINO\.atom\packages\linter-jshint\node_modules\jshint\src\jshint.js:1636:9)
    at statements (C:\Users\emile.bergeron.CAMINO\.atom\packages\linter-jshint\node_modules\jshint\src\jshint.js:1681:16)
    at ChildProcess.<anonymous> (C:\Users\emile.bergeron.CAMINO\.atom\packages\linter-jshint\node_modules\atom-linter\node_modules\sb-exec\lib\index.js:56:20)
    at emitTwo (events.js:100:13)
    at ChildProcess.emit (events.js:185:7)
    at maybeClose (internal/child_process.js:850:16)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:215:5)

๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฃผ์„์„ ์—ด ๋•Œ ๋™์ผํ•œ ์˜ค๋ฅ˜:

module.exports = {
    attributes: {},
    /*sth: {},
    sth2: function(){}
};

ํ˜„์žฌ ํŽธ์ง‘ ์ค‘์ธ ์ฝ”๋“œ์—์„œ ์ž๋™์œผ๋กœ ์‹คํ–‰๋˜๋Š” ๋„๊ตฌ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๊นŒ?

์›์ž์—์„œ๋Š” linter-jshint๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ•ด๋‹น ๋‚ด์šฉ์œผ๋กœ ํŒŒ์ผ์„ ์ €์žฅํ•˜๊ณ  CLI์—์„œ jshint๋ฅผ ์‹คํ–‰ํ•  ๋•Œ๋„ ๋™์ผํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

jshint test.js

ํŒŒ์ผ์—

module.exports = {
    attributes: {},
    /*sth: {}
};

์˜ค๋ฅ˜ ์ƒ์„ฑ:

/usr/local/lib/node_modules/jshint/src/jshint.js:5386
        throw err;
        ^

TypeError: Cannot read property 'id' of null
    at Object.x.nud (/usr/local/lib/node_modules/jshint/src/jshint.js:3240:26)
    at expression (/usr/local/lib/node_modules/jshint/src/jshint.js:888:34)
    at /usr/local/lib/node_modules/jshint/src/jshint.js:1389:20
    at Object.x.led (/usr/local/lib/node_modules/jshint/src/jshint.js:1155:16)
    at expression (/usr/local/lib/node_modules/jshint/src/jshint.js:926:36)
    at statement (/usr/local/lib/node_modules/jshint/src/jshint.js:1636:9)
    at statements (/usr/local/lib/node_modules/jshint/src/jshint.js:1681:16)
    at itself (/usr/local/lib/node_modules/jshint/src/jshint.js:5365:9)
    at lint (/usr/local/lib/node_modules/jshint/src/cli.js:495:8)

    at /usr/local/lib/node_modules/jshint/src/cli.js:656:7

'๋ฏธ๋‹ซ์ด ๋Œ“๊ธ€'๊ณผ ๊ฐ™์€ ํŒŒ์‹ฑ ์˜ค๋ฅ˜๊ฐ€ ์žˆ์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

#2932์™€ ๊ด€๋ จ๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  atom linter-jshint ์˜ ๊ฒฝ์šฐ ์—ฌ์ „ํžˆ jshint v2.9.2์— ์žˆ์Šต๋‹ˆ๋‹ค. Jshint๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ธฐ ์œ„ํ•ด AtomLinter/linter-jshint#353 ๋ฌธ์ œ๋ฅผ ์—ฝ๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ ๋ฒ”์œ„๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์ง€๋งŒ ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•ด ํŒจํ‚ค์ง€๋ฅผ ๋‹ค์‹œ ์„ค์น˜ํ•ด์•ผ ํ•˜๋Š” ์—…๋ฐ์ดํŠธ๋กœ ๊ณ ์ •ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

JSHint ๋ฐ๋ชจ ์—์„œ ๋™์ผํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ™•์ธ๋จ; ์‹ ๊ณ  ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ์ด ๋ฒ„๊ทธ๋ฅผ ์ˆ˜์ •ํ•˜๊ธฐ ์œ„ํ•ด ํŒจ์น˜๋ฅผ ์ œ์ถœํ–ˆ์Šต๋‹ˆ๋‹ค: https://github.com/jshint/jshint/pull/3046.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰