ํญ์ ์ฌ์ฉํ ๋ค์ฌ์ฐ๊ธฐ๋ ์ ์ด๋ 3๊ฐ์ง ๊ท์น์ ์ํด ๋ณด๊ณ ๋ ์์น๋ฅผ ๊นจ๋ ๊ฒ์ผ๋ก ๋ณด์ ๋๋ค.
๋ค์์ ๋ชจ๋ ์ด .jshintrc
ํ์ผ์ ์ฌ์ฉํ์ฌ ๋ฆฐํธ๋์์ต๋๋ค.
{
"strict": "global",
"unused": true
}
ํ ์คํธํ JSHint ๋ฒ์ ์ v2.9.5์ ๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ๋ณ๋์ ๋ฌธ์ ๋ก ๋ค์ ์์ฑํ๊ธฐ๋ฅผ ์ํ์๋ฉด ์ ๋ ๊ทธ๋ ๊ฒ ํ ์ ์์ต๋๋ค.
์ด ์ฝ๋๋ฅผ ๋ฆฐํธํ๋ฉด:
'use strict';
function foo() {
};
foo();
4ํ 6์ด์ ๋ณด๊ณ ๋ ์ค๋ฅ๊ฐ ์์ง๋ง 4ํ์๋ 4์๋ง ์์ต๋๋ค.
์ด ์ฝ๋๋ฅผ ๋ฆฐํธํ๋ฉด:
'use strict';
function foobar(
$foo
) {
return 'foo';
}
foobar();
4ํ, 9์ด์ ๋ณด๊ณ ๋ ์ค๋ฅ๊ฐ ์์ง๋ง 4ํ์๋ 7์๋ง ์์ต๋๋ค.
์ด ์ฝ๋๋ฅผ ๋ฆฐํธํ๋ฉด:
'use strict';
function foobar() {
if (true) {
fun1();
}
}
foobar();
5ํ, 13์ด์ ๋ณด๊ณ ๋ ์ค๋ฅ๊ฐ ์์ง๋ง 4ํ์๋ 11์๋ง ์์ต๋๋ค.
๋ณด๊ณ ๋ ๋ฌธ์ ์์น๋ ๋ฌธ์ ์ ์ค ์์ ๋ถ๋ถ์ ๋ ๋ง์ ํญ์ด ์๋ ๊ฒ์ฒ๋ผ ๋ณด์ ๋๋ค.
์์ ํ์ผ์ ์ฌ๊ธฐ์์ ์ฐพ์ ์ ์์ต๋๋ค: linter-jshint_GH416.zip
์ํฅ์ ๋ฐ๋ ๊ฒ์ผ๋ก ์๋ ค์ง ๊ท์น:
W009
W014
E015
W024
W027
W030
W032
W033
W040
W043
W069
W075
W098
W116
W119
W140
E041
์ ๊ณ ๊ฐ์ฌํฉ๋๋ค! ๋ฌธ์ ๋ lex.js
์ 1610๋ฒ์งธ ์ค ์์ ๋น๋กฏ๋ฉ๋๋ค.
this.input = this.input.replace(/\t/g, state.tab);
์ด๊ฒ์ ์ผ๋ง๋ ๋ง์ ์คํ์ผ ๊ด๋ จ ๋ฆฐํธ ๊ท์น์ด ๊ตฌํ๋๋์ง์ ์์ด ๋งค์ฐ ๊ธฐ๋ณธ์ ์ธ ๊ฒ ๊ฐ์ต๋๋ค. ๊ทธ๊ฒ๋ค์ ์ด์ ํ๋์ ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ง๋ง ์ฐ๋ฆฌ๋ ์ฌ์ ํ ์๋ก์ด ์ฃผ์ ๋ฒ์ ์ผ๋ก ์ด๋ํ ์ค๋น๊ฐ ๋์ง ์์์ต๋๋ค. ๋ฐ๋ผ์ ๊ทธ๋์ ์ฐ๋ฆฌ๋ ํด๋น ๋์์ ๋ณด์กดํ๋ ์๋ฃจ์ ์ ์ค๊ณํด์ผ ํฉ๋๋ค.
๋ด ์ด๊ธฐ ์๊ฐ์ ์ด "์ ํจ ์คํ์
"์ column
๋ผ๋ ํ ํฐ ๊ฐ์ฒด์ ์ ์์ฑ์ผ๋ก ์ถ์ ํ๋ ๊ฒ์
๋๋ค. ์ด๋ ์คํ์ผ ๊ด๋ จ ๊ฒฝ๊ณ ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ character
์์ฑ์ ๋ค์ ๊ตฌํํ์ฌ "true" ๋ฌธ์ ์คํ์
์ ์ค๋ช
ํ ์ ์์ต๋๋ค. ์ฌ๊ธฐ์ ๊ฐ ์ฝ๋ ํฌ์ธํธ(ํญ ๋๋ ๊ธฐํ)๋ ์นด์ดํธ๋ฅผ ์ ํํ 1๋งํผ ์ฆ๊ฐ์ํต๋๋ค. ์ด ๊ฐ์ ๊ฒฝ๊ณ ๋ฅผ ๋ฐํํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ๋ฆฌํฌํฐ ํ๋ฌ๊ทธ์ธ์ ํญ ๋ฌธ์๋ฅผ ๋ ๋๋งํ๋ ๋ฐฉ๋ฒ์ ์ ์ดํ๊ณ ๋ณด๊ณ ๋ "์ด" ๋ฒํธ๋ฅผ ๊ทธ์ ๋ฐ๋ผ ํด์ํ ์ ์์ต๋๋ค.
@Arcanemagus, ์ ๋ค๋ฆฌ๋์?
์ ์ด๋ JSHint์ ๋ด๋ถ์ ๋ํ ์ค์ ์ง์์ด ์๋ ์ํ์์ ํ๋ฉด์ ์ผ๋ก๋ ์๋ฒฝํ๊ฒ ๋ค๋ฆฝ๋๋ค ๐. ์ด์์ ์ผ๋ก๋ ์ค์ ์ด ์(๊ฐ ์ฝ๋ ํฌ์ธํธ๊ฐ ํ๋์ ์ด๋ก ๊ณ์ฐ๋๋)๋ฅผ ์ป๋ ๋ช ๊ฐ์ง ๋ฐฉ๋ฒ์ด ํ์ํฉ๋๋ค.
์ด๊ฒ์ ๋ฐ ๊ณตํต ์ค๋ฅ๊ฐ ์๋ ์ค๋๋ ํ์ ๋ฒ๊ทธ์ ๋ํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ผ๋ก ์ธํด ๋ณธ์ง์ ์ผ๋ก ๋ฌด์๋๋ ์ด ๊ฒฝ๊ณ ๋ก ์ธํด ์ ์ ์จ๊ฒจ์ก์ต๋๋ค. ํจ์ฌ ์ข์ ๋ฐฉ์์ผ๋ก ์ฌ์ฉ์์๊ฒ ๊ฒฝ๊ณ ๋ฅผ ๋ค์ ๊ตฌํํ์ ๋ ์ค์๋ก ์ฌ์ฉ์๋ฅผ _์จ๊ฒผ์ต๋๋ค_. ๊ทธ๋ฆฌ๊ณ ์ต๊ทผ์ ์ด๋ฅผ ๋ค์ ํ์ํ๋๋ก ์์ ํ์ต๋๋ค.
W030
, W033
๋ฐ W009
๋ ์ํฅ์ ๋ฐ๋ ๊ฒ ๊ฐ์ต๋๋ค. ๊ทํ์ ์ค๋ช
์์ _๋ชจ๋ _ ๊ท์น์ด ์ํฅ์ ๋ฐ๋๋ค๊ณ ๊ฐ์ ํฉ๋๊น?
์ ๋ ์ด ๋ฌธ์ ๋ฅผ ๊ฒช๊ณ ์์ผ๋ฉฐ ์ค๋ฅ์ ๊ฒฝ๊ณ ๋ฅผ ๋ชจ๋ ๋ณต์ ํ ์ ์์ต๋๋ค. ๊ท์น/์ค๋ฅ ์ ํ์ ์ค์ํ์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค.
๋ค์์ ๋ด '=='๊ฐ '==='์ฌ์ผ ํ๋ค๊ณ ๊ฒฝ๊ณ ํ๋ ค๋ jshint์ ์์
๋๋ค. ์ฃผํฉ์ ๋ฐ์ค์ ์๋ชป๋ ์์น๋ฅผ ํ์ธํ์ญ์์ค.
์ด ๋ฌธ์ ์ ๋ํ ๊ทํ์ ์๊ฐ์ด ํ์ธ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
์ค๋์ ํํค์น ์๊ฐ์ด ์์ต๋๋ค. indent
์ต์
์ 1
๋ก ์ค์ ํ๋ฉด ์ํ๋ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์์ ๊ฒ์
๋๋ค.
@Arcanemagus ์๋น์๋ฅผ ์ํ indent
์ต์
์ ๊ฐ์น๋ฅผ ๋ฌด์ํ ์ ์์ต๋๊น? ์ด๊ฒ์ด ๊ฐ๋ฅํ๋ค๋ฉด JSHint ์์ฒด์ ๊ธฐ๋ณธ๊ฐ์ ๋ณ๊ฒฝํ๋ ๊ฒ์ด ์๋น์์๊ฒ ์ด๋ค ์ํฅ์ ๋ฏธ์น ์ ์๋์ง ์ ๋ชจ๋ฅด๊ธฐ ๋๋ฌธ์ ์ฐจ๋ผ๋ฆฌ ๊ทธ๋ ๊ฒ ํ๊ณ ์ถ์ต๋๋ค.
ํ , ํ์ฌ ์ด ํ๋ก์ ํธ๋ CLI ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ์ด๋ฅผ ๊ฐ๋ฅํ๊ฒ ํ๋ Node.js API๋ฅผ ์ฌ์ฉํ๋๋ก ๋ค์ ์์ฑํ ์ ์์ต๋๋ค.
indent
๊ฐ์ ๊ฐ์ ๋ก ์ ์ฉํ๋ฉด ์๋น์์๊ฒ ํ์๋๋ ๊ฒฐ๊ณผ๊ฐ ๋ณ๊ฒฝ๋ฉ๋๊น? ํด๋น ํจํค์ง์ ๋ชฉํ๋ jshint
์์ฒด๋ฅผ ์คํํ ์ ์๋ ํ ๊ฐ๋ฅํ ํ ๊ฐ๊น์ง๋ง ๊ฒฐ๊ณผ๋ฅผ ํธ์ง๊ธฐ์ ํตํฉํ๋ ๊ฒ์
๋๋ค.๊ตฌ์ฑ์์ ๊ฐ์ ์ฌ์ ์ํ ์ ์๋ ๋ช
๋ น์ค ์ธ์๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ ์ด๋ป์ต๋๊น?
๊ทธ๋ฐ ๊ฒ์ nginx์ -g, ssh์ -o, git์ -c ๋ฑ๊ณผ ๊ฐ์ ๋๊ตฌ์์ ์ผ๋ฐ์ ์
๋๋ค.
$ jshint -o "indent = 1" -o "-W034 = true" -o "globals.require = false" -o "globals.$ = null"
์ด๊ฑฐ ์ด๋ค ๋ฒ์ ์ ๋์ ๋์๋์ง ์์๋ ๋ถ ๊ณ์ ๊ฐ์? 2.9.5?
์ ์ด๋ ์ ์ ๋์ ์์๋ก ๋ค์ด ๊ทธ๋ ์ด๋ ํ ์ ์์ต๋๋ค. ๊ณ ์น๋ค.
@jaredatch https://github.com/AtomLinter/linter-jshint/pull/386(v3.1.0 of linter-jshint
๋ฆด๋ฆฌ์ค)์์ JSHint์ ๋ฒ๊ทธ๊ฐ ์๋ ์ง์ ๋ณด๊ณ ์ ๋ํ ๋ชจ๋ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์ ๊ฑฐ๋์์ต๋๋ค. ๊ทธ ๊ฒ์ฌ์ ์์ ์ ๋ฆฐํฐ๊ฐ ์๋ชป๋ ์ ์ ๋ณด๊ณ ํ๋ ๊ฒ๊ณผ ๊ฐ์ ๋ฒ๊ทธ๋ฅผ ์ฐพ๋ ๊ฒ์ด๋ฏ๋ก ๋ฆฐํฐ๋ฅผ ์ฌ์ฉํ๋ _๋ชจ๋ ์ฌ๋_์ ๋ํด ๋ณด๊ณ ๋๊ณ ์์ ๋ ์ ์์ต๋๋ค. (๊ฒฐ๊ตญ ์ ํํ ๋ฐ์ดํฐ๋ฅผ ์ ๊ณตํด์ฃผ๋ ๋ฆฐํฐ๋ฅผ ๋ฏฟ์ ์ ์๋ค๋ฉด ์ ์ฌ์ฉํ๋ ๊ฑธ๊น์?)
์ด ํญ ๋ฒ๊ทธ๊ฐ ๋์ ๋๊ธฐ ์ ๊ณผ ์ด๋ฌํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ฒ์์ ๋ฐฐ์นํ๊ฒ ๋ง๋ ์ฃผ์ ํ์ ๋ฒ๊ทธ ์ดํ์ "์ค์ํธ ์คํ"์ด _may_ ์์ต๋๋ค.
@Arcanemagus gotcha , ํต์ฐฐ๋ ฅ์ ์ ๋ง ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ๋ฉ์ง ์์ ์ ๊ณ์ํ์ญ์์ค ๐
linter-jshint
์์ ์ด๋ฌํ ์๋ชป๋ ํฌ์ธํธ๋ฅผ ๋ณด๊ณ ํ๋ ๋ฐฉ๋ฒ์ ๋ํ ๋ ๋์/๋ ์ ์ฉํ ๋ฉ์์ง ์์ด๋์ด๊ฐ ์๋ค๋ฉด ์์ ๋กญ๊ฒ ๋ฌธ์ ๋ฅผ ์ ๊ธฐํ๊ฑฐ๋ ๊ฑฐ๊ธฐ์ PR์ ์ ์ถํ์ธ์ ๐.
๋น์ด๋จน์ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ์ 2017๋ ์ ๋ฆฐํธํ๋ ค๊ณ ์ง๋ 5์๊ฐ ๋์ ๋น์ ์ ๋ชจ๋ ์๋ฃจ์ ์ ์ ๋๋ก ์ฌ์ฉํ์ง ๋ชปํ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋๋์ฒด ํญ์ ์ฌ์ฉํ์ฌ ๋ฌธ์ ๊ทธ๋๋ก ๋ค์ฌ์ฐ๊ธฐ๋ฅผ ํ์ง ์๋ ์ด์ ๊ฐ ๋ฌด์์ ๋๊น?
๋๊ฐ ์ด ๊นจ์ง ์์ด๋ฅผ ์์ด๋ผ๋ ์๋ฐฑ๋ง ๋ช ์๊ฒ ๊ณต๊ฐํ๋ ์ด์ ์ ํจ๊ป ๋ฌธ์ ๊ทธ๋๋ก ๋ง์นจํ๋ฅผ ์ฌ์ฉํ์ง ์์ต๋๊น?
์ค. ๊ทธ๋ฆฌ๊ณ ๋๋ฌธ์๋ ๋ฌธ์ฅ์ ์์ ๋ถ๋ถ์ ์ต๋๋ค. ๋ชจ๋ ๊ณณ์ด ์๋๋๋ค.
/ํธ๋กค (๋ฏธ์ํด, ์ด์ฉ ์ ์์์ด)
๊ธ์, ์๋ฃจ์
์ด ๋น๋ถ๊ฐ ์ด๊ฒ์ ๋นํ์ฑํ ํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค ...
์ด์จ๋ ๋๊ฐ ๋ฆฐํฐ๋ฅผ ํ์๋ก ํฉ๋๊น?
@jugglinmike https://github.com/jshint/jshint/issues/3151#issuecomment -312512856์ ์ง๋ฌธ์ ๋ตํ ์ ์์ต๋๊น?
์ด ํธ๋ฆฌ๊ฑฐ๋๋ ๋ค์ํ ๊ฒฝ์ฐ์ ๋ํด 20๊ฐ์ ๊ณ ์ ํ ๋ฌธ์ ๊ฐ ์ด๋ ค ์์ต๋๋ค. ์ฌ๊ธฐ์์ ์ด ๋ฌธ์ ๋ฅผ ์์ ํ๋ ๋ฐ ์๊ฐ์ด ๊ฑธ๋ฆด ๊ฒ ๊ฐ๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ์์ ๊ฒฐ๊ณผ๋ฅผ ๋ณ๊ฒฝํ์ง ์์ ๊ฒ์ด๋ผ๊ณ ๊ฐ์ ํ๊ณ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๊ณ์ ์งํํ๊ณ ์ถ์ต๋๋ค.
์ด ๋ฌธ์ ๋ ๋ด ๋ ์ด๋์์ ๋ฒ์ด๋ฌ์ต๋๋ค. ์ฃ์กํฉ๋๋ค, @Arcanemagus. ๋ถํํ๋, ๋๋ ์ด๋ฒ ์ฃผ๋ง๊น์ง ๋ง๋ ํ ๋ฐ์์ผ ํ ๊ด์ฌ์ ์ค ์ ์์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ง ์์ต๋๋ค. ๊ทธ๊ฒ ๋น์ ์ ์ํด ์๋ํฉ๋๊น?
@jugglinmike ๋ฌผ๋ก ์ ๋๋ค ๐
๊ธฐ์กด ๋ฌธ์ ์ ๋ํด ๋ช ๊ฐ์ง ํ์ธ์ ํ๊ธฐ ๋๋ฌธ์ ๋๋ถ๋ถ์ ์ฌ๋๋ค์ ์ฌ๊ธฐ๋ฅผ ๊ฐ๋ฆฌํค๋ ์ด๋ฏธ ์ด๋ฆฐ ๋ฌธ์ ๋ก ํํฐ๋ง๋ฉ๋๋ค.
@cobexer ์ ๋ ๊ทธ ์์ด๋์ด๊ฐ ๋ง์์ ๋ญ๋๋ค. ์๋ํ๋ฉด ์ฐ๋ฆฌ์๊ฒ ์์ผ๋ก ๋์๊ฐ ๊ธธ์ ์ ์ํ ๋ฟ๋ง ์๋๋ผ
๋ค๋ฅธ ์ํฉ์ ์๋ ์ฌ๋๋ค์๊ฒ ์ ์ฉํ ์ ์์ต๋๋ค. ์ฆ, ๋ด๊ฐ ์๋ ํ ๊ฑฐ๊ธฐ์์
๊ทธ๋ฐ ์ข
๋ฅ์ ๊ธฐ๋ฅ์ ์์ฒญํ ์ ์ด ์์ผ๋ฉฐ
์ ๊ธฐ๋ฅ์ด ๋ณด๊ธฐ์ ์ข๋ค๋ ์ด์ ๋ง์ผ๋ก ์ปค๋ฐํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๋ด ์ด์ ๊ฐ ์๋ค
ํนํ ํด๋น ๊ธฐ๋ฅ์ ๊ถ์ฅํ์ง ์์ต๋๋ค. "rc" ํ์ผ ์ฌ์ด, ์ธ๋ผ์ธ
๊ตฌ์ฑ ๋ฐ Node.js API๋ฅผ ์ฌ์ฉํ๋ฉด ์ฌ์ฉ์๊ฐ ์ํ ๋ ์ด๋ฏธ ๊ฑธ๋ ค ๋์ด์ง๋๋ค.
์ฃผ์ด์ง ์ต์
์ด ํ์ฑํ๋ ์ด์ ๋ฅผ ์ดํดํฉ๋๋ค. ๊ตฌ์ฑ์ ์ํ ๋ค๋ฅธ ๋ฒกํฐ ์ถ๊ฐ
๊ฒฝ์์ง์ ์ด ๋ฌธ์ ๋ฅผ ์
ํ์ํค๋ ๊ฒฝํฅ์ด ์์ต๋๋ค.
์ฌ๊ธฐ์์ ๊ฐ์ฅ ์คํ ๊ฐ๋ฅํ ์๋ฃจ์
์ ์ด์ ์ ์ .
๊ทธ๋ฌ๋ ์ฐ๋ฆฌ๋ character
์์ฑ์ ๊ณต๊ฐ API์ธ Atom์ผ๋ก ๊ฐ์ฃผํด์ผ ํฉ๋๋ค.
๊ฒฐ๊ตญ Editor ํ๋ฌ๊ทธ์ธ ์์ฒด๊ฐ ๋น๋๋ฉ๋๋ค. ๊ทธ๋์ ๊ทธ๊ฒ์ ์์ ํ๋ ๋์
ํ์ฌ์ ์๋ฏธ๋ฅผ ๊ฐ์ง ์๋ก์ด ์์ฑ์ ์ ์ํ๊ณ ,
character
๋ฅผ ๊ทธ๋๋ก ๋๊ณ ์์ฒญ๋ ๋ฐ์ดํฐ๋ฅผ ์
์์ฑ ์ด๋ฆ.
์ด๋ฒ ์ฃผ๋ง์ ์๋ก์ด ๊ธฐ๋ฅ์ ๋ํ ์์
์ ์์ํ์ต๋๋ค. ๋๋ ํ๊ท๋ฅผ ํผํ๊ณ ์ถ๋ค
๋ชจ๋ ๋น์ฉ์ด ๋ฐ์ํ๋ฏ๋ก ์ผ๊ด๋๊ฒ ์ฃผ์ฅํ๊ธฐ ์ํด ํ๋ก์ ํธ์ ํ
์คํธ๋ฅผ ํ์ฅํด์ผ ํฉ๋๋ค.
์์ ๋ฌธ์ ๋ฒํธ. ์ด ์ผ์ ์์ํ๋ฉด์ ๋๋
๋จผ์ ํด๊ฒฐํด์ผ ํ๋ ํ
์คํธ ์ค์ํธ. gh-3174๋
๊ทธ ๋ชฉํ.
์ด ๋ชจ๋ ๊ฒ์ ์๊ฐ์ด ๊ฑธ๋ฆด ๊ฒ ๊ฐ์ต๋๋ค. @Arcanemagus ๋ด๊ฐ ์๋
๋น์ ์ ์ด ๋ฒ๊ทธ์ ์ง๊ฒฉํ์ ๋ง๊ณ ์์ผ๋ฉฐ, ์ด ๋ฒ๊ทธ๋ฅผ
๊ฐ์ ๋ JSHint๋ฅผ ๋ณผ ์ ์๋ ๊ธฐํ. ๋๋ ๋ํ ๋น์ ์ด ๊ด์ฌ์ ๊ฐ๋ ๊ฒ์ ์ข์ํฉ๋๋ค
์ฌ์ฉ์์๊ฒ ํฌ๋ช
ํ์ง ์์ ์๋ฃจ์
์ ํผํฉ๋๋ค. ์งง์ ์๊ฐ์
๊ธฐ๊ฐ, ์ฌ์ฉ์์๊ฒ indent
์ต์
์ 1
๋ก ์ค์ ํ๋๋ก ๊ถ์ฅํ ์ ์ด ์์ต๋๊น?
์ด์์ ์ด์ง๋ ์์ง๋ง ๊ทธ๋ ๊ฒ ํ๋ฉด ๋จ๊ธฐ์ ์ธ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ผ ํฉ๋๋ค.
์ด๊ฒ์ ์ฐ๋ฆฌ๊ฐ ์ด๊ฒ์ ํจ์นํ ํ์๋ ๊ณ์ ์๋ํ ๊ฒ์
๋๋ค.
@Arcanemagus ๋น์ ์ด ์ด ๋ฒ๊ทธ์ ์ง๊ฒฉํ์ ๋ง๊ณ ์๋ค๋ ๊ฒ์ ์๊ณ ์์ผ๋ฉฐ, ์ด๊ฒ์
๊ฐ์ ๋ JSHint๋ฅผ ๋ณผ ์ ์๋ ๊ธฐํ.
๋๋ถ๋ถ์ Atom์ฉ Linter ์ ๊ณต์๊ฐ ์ฌ์ฉํ๋ ์ผ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ฒ์ฌ๋ฅผ ์ถ๊ฐํ ๋ชจ๋ ์ด์ ๋ ์ด์ ๊ฐ์ ๋ฒ๊ทธ๊ฐ ์์ค ๋ฆฐํฐ์์ ํฌ์ฐฉ๋์ด ๋ณด๊ณ /์์ ๋ ์ ์๊ธฐ ๋๋ฌธ์
๋๋ค ๐. ์ด๊ฒ์ ์ค์ ๋ก ๋ ์ผ์ฐ ํฌ์ฐฉ๋์์ ๊ฒ์ด์ง๋ง ํ์๊ฐ ๋๋ถ๋ถ์ ๋ฌธ์์์ ์์ ํ ์คํจํ๊ณ ๋ณด๊ณ ํ ์ข์ ๋ฐฉ๋ฒ์ด ์์์ ๋ ๊ธฐ๋ณธ์ ์ผ๋ก _way_์์ ๋ชจ๋ ์๋ชป๋ ํฌ์ธํธ ์ค๋ฅ๋ฅผ โโ์จ๊ฒผ๋ linter-jshint
์ ํ์ธ์ด ์์์ต๋๋ค. ์ฌ์ฉ์ ๋๋ ์ค๋ณต ์ ๊ฑฐ ๋ฌธ์ ๋ณด๊ณ ์. ์ด์ ๊ทธ๊ฒ๋ค์ด ํ์
๋์์ผ๋ฏ๋ก ํด๋น ์ํ๋ฅผ ์ ๊ฑฐํ๊ณ ์ฌ๊ธฐ ๐๊ฐ ์์ต๋๋ค.
๋ํ ์ฌ์ฉ์์๊ฒ ํฌ๋ช ํ์ง ์์ ์๋ฃจ์ ์ ํผํ๋ ๋ฐ ๊ด์ฌ์ด ์๋ค๋ ์ ๋ ๋ง์์ ๋ญ๋๋ค.
์ฌ์ค, ์ด ํน์ ๋ฌธ์ ์ ๋ํ ํฌ๋ช
ํ ์๋ฃจ์
์ ๊ด์ฐฎ์ ๊ฒ์
๋๋ค. indent
์ค์ ์ 1
๋ก ๊ฐ์ ํ๋ฉด ๊ทธ๋ค์ด ์ป์ ์ ์๋ ๊ฒ๊ณผ ๋น๊ตํ์ฌ ๊ทธ๋ค์ด ๋ณด๊ณ ์๋ ๊ฒฐ๊ณผ๊ฐ ๋ฐ๋์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. jshint
์์ฒด๋ฅผ ์คํํฉ๋๋ค.
๋จ๊ธฐ์ ์ผ๋ก ์ฌ์ฉ์์๊ฒ ๋ค์ฌ์ฐ๊ธฐ ์ต์ ์ 1๋ก ์ค์ ํ๋๋ก ๊ถ์ฅํ ์ ์ด ์์ต๋๊น?
๊ทธ๊ฑด... ์ฌ์ค ๊ทธ ๋ฌธ์ ์ ๊ธ์ ์ฌ๋ฆด ์๊ฐ์ ํ์ง ์์๋ค๋ ํ๋ฅญํ ์์ด๋์ด์ ๋๋ค. ๋๋ ๋ฌธ์ ์ ๋ํ ๋ ๋ง์ ์๊ฒฌ์์ ๊ทธ๊ฒ์ ์ธ๊ธํ๋๋ก ํ ๊ฒ์ ๋๋ค!
์, .jshintrc์์ 'indent' ์์ฑ์ 1๋ก ์ค์ ํ๋ ๊ฒ์ ํ๋ฅญํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋๋ค. ๋๋ ๊ทธ๊ฒ์ ๋ํด ๋ ๋นจ๋ฆฌ ์์๋๋ผ๋ฉด ์ข์์ ํ ๋ฐ. jshint๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก es6์ผ๋ก ์ค์ ๋์ด ์์ง ์๊ธฐ ๋๋ฌธ์ ์ด๋ฏธ .jshintrc๊ฐ ์์ผ๋ฏ๋ก ์ถ๊ฐํ๊ธฐ ์ฝ์ต๋๋ค. ๐
๋ฐ๊ฐ์ต๋๋ค, @tustin2121!
์ ๋ฐ์ดํธ: ์ ๋ ์ฌ์ ํ ํ๊ท๋ฅผ ํผํ๊ธฐ ์ํด JSHint ํ ์คํธ ์ค์ํธ๋ฅผ ๊ฐํํ๊ธฐ ์ํด ๋ ธ๋ ฅํ๊ณ ์์ต๋๋ค. ๊ทธ ๋ ธ๋ ฅ์ ์ต์ ์์ gh-3176์ ๋๋ค.
์ด ๋ฌธ์ ์ ๋ํ ์
๋ฐ์ดํธ๊ฐ ์์ต๋๊น?
ํ์ฌ ์ด ๋ฒ๊ทธ์ ์ํฅ์ ๋ฐ๋ ๊ท์น์ด ์ต์ 40๊ฐ ์ด์์ธ ๊ฒ ๊ฐ์ต๋๋ค ๐.
์ด๊ฒ์ ๋ํ ๋ชจ๋ ์ ๋ฐ์ดํธ,์ด ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ง ๋ช ๋ฌ์ด ์ง๋ฌ์ต๋๋ค.
์๋ ํ์ธ์ @xcrap์ ๋๋ค! ๋ฐฉ๊ธ ๋๊ธ ์ค๋ ๋๋ฅผ ํ์ธํ๋๋ฐ ์๋ฌด๋ ์ ๋ฐ์ดํธ๋ฅผ ๊ฒ์ํ์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค. ์ข์ ์์์ JSHint๊ฐ ์คํ ์์ค ํ๋ก์ ํธ์ด๋ฏ๋ก ์คํธ๋ ์ค๋ฅผ ์ ๋ฐํ๋ ๊ฒฝ์ฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ๋์์ ์ค ์ ์๋ค๋ ๊ฒ์ ๋๋ค! ์์ ๋น๋ ค์ฃผ์๊ฒ ์ต๋๊น? ๊ธฐ๊บผ์ด ์กฐ์ธํด ๋๋ฆฌ๊ฒ ์ต๋๋ค.
@jugglinmike ์ข๊ฒ ๋ค! ๋๋ ํญ์ ์์ ํ๋ก์ ํธ์์ ์๋ํ์ง๋ง ๋ด js ๊ธฐ์ ์ ๋งค์ฐ ๊ธฐ๋ณธ์ ์ด๊ณ ์ ํ์ ์ ๋๋ค. :)
์ด ๋ฒ๊ทธ์ 50๋ฌ๋ฌ์ ํ์๊ธ์ ๊ฑธ์์ต๋๋ค. ๋ค๋ฅธ ์ฌ๋๋ค์ ์ด ๋งํฌ๋ฅผ ํตํด ํ์๊ธ์ ๋๋ฆฌ๋ ๋ฐ ๊ธฐ์ฌํ ์ ์์ต๋๋ค. https://www.bountysource.com/issues/46533252-tab-indentation-breaks-multiple-rules
@tzvipm ์ ํฌํฌ๋ฅผ ๋ก์ปฌ๋ก ๊ฐ์ ธ์ค๊ณ jshint๋ฅผ ๋ค์ ๋น๋ํ๋ฉด ๋ค๋ฅธ ์ฌ๋์ด ์ด ๋ฌธ์ ์ ๊ฑธ๋ ค ๋์ด์ง๋ ๊ฒฝ์ฐ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์ต๋๋ค.
git clone https://github.com/tzvipm/jshint
git remote add upstream [email protected]:jshint/jshint.git
git fetch upstream
git stash
git merge upstream/master
git mergetool --tool=opendiff
npm run build
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋น์ด๋จน์ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ์ 2017๋ ์ ๋ฆฐํธํ๋ ค๊ณ ์ง๋ 5์๊ฐ ๋์ ๋น์ ์ ๋ชจ๋ ์๋ฃจ์ ์ ์ ๋๋ก ์ฌ์ฉํ์ง ๋ชปํ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋๋์ฒด ํญ์ ์ฌ์ฉํ์ฌ ๋ฌธ์ ๊ทธ๋๋ก ๋ค์ฌ์ฐ๊ธฐ๋ฅผ ํ์ง ์๋ ์ด์ ๊ฐ ๋ฌด์์ ๋๊น?