Tslint: no-unused-variable κ·œμΉ™ μ‚¬μš© 쀑단 μ‹œμž‘

에 λ§Œλ“  2016λ…„ 08μ›” 13일  Β·  30μ½”λ©˜νŠΈ  Β·  좜처: palantir/tslint

방금 v2.0μ—μ„œ μ΄λŸ¬ν•œ μƒˆλ‘œμš΄ 컴파일러 검사λ₯Ό λ°œκ²¬ν–ˆμŠ΅λ‹ˆλ‹€: --noUnusedParameters 및 --noUnusedLocals . 이것듀은 본질적으둜 no-unused-variable κ·œμΉ™μ„ μ“Έλͺ¨μ—†κ²Œ λ§Œλ“­λ‹ˆλ‹€. 맀우 핡심적인 κ·œμΉ™μ΄λ―€λ‘œ μ¦‰μ‹œ μ œκ±°ν•΄μ•Ό ν•œλ‹€κ³  μƒκ°ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

μ œμ•ˆ:

  • v4.0의 tslint:latest 및 tslint:recommended μ—μ„œ no-unused-variable 제거
  • v4.0μ—μ„œ 더 이상 μ‚¬μš©λ˜μ§€ μ•ŠλŠ” κ·œμΉ™μœΌλ‘œ ν‘œμ‹œ

    • μ•„λ§ˆλ„ μ‹€νŒ¨ λ©”μ‹œμ§€μ—μ„œ?

  • TSLint v5.0μ—μ„œ κ·œμΉ™ κ΅¬ν˜„μ„ μ™„μ „νžˆ μ œκ±°ν•˜μ‹­μ‹œμ˜€.
Won't Fix Breaking Change

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

μž‘μ€ ν”Όλ“œλ°±. tslint에 μ΄λŸ¬ν•œ κ·œμΉ™μ΄ 있으면 linter κ²½κ³ κ°€ ν‘œμ‹œλ  λ•Œ 정말 νŽΈλ¦¬ν•˜μ§€λ§Œ μ½”λ“œλŠ” μ—¬μ „νžˆ μ»΄νŒŒμΌλ©λ‹ˆλ‹€. μ €λŠ” 개인적으둜 특히 λ¦¬νŒ©ν† λ§μ΄λ‚˜ 아이디어 μ‹œλ„μ™€ 같은 λΉ λ₯Έ μ½”λ“œ 변경을 μˆ˜ν–‰ν•  λ•Œ μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” λ³€μˆ˜, λ§€κ°œλ³€μˆ˜ λ˜λŠ” κ°€μ Έμ˜€κΈ°λ‘œ 인해 컴파일러 였λ₯˜κ°€ λ°œμƒν•˜λŠ” 것을 맀우 μ„±κ°€μ‹œκ²Œ μƒκ°ν•©λ‹ˆλ‹€.

λͺ¨λ“  30 λŒ“κΈ€

μ—¬κΈ°μ„œ 쒋은 κΈ°λŠ₯은 μ»΄νŒŒμΌλŸ¬κ°€ μ˜΅νŠΈμ•„μ›ƒμ„ μ œκ³΅ν•œλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€. λ³€μˆ˜ 이름에 μ„ ν–‰ 밑쀄을 μ§€μ •ν•˜λ©΄ μ»΄νŒŒμΌλŸ¬μ—μ„œ ν”Œλž˜κ·Έλ₯Ό μ§€μ •ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μ΄λ ‡κ²Œ ν•˜λ©΄ 컴파일러 검사λ₯Ό ν™œμ„±ν™”ν•˜κ³  μ‹Άμ§€λ§Œ λ³€κ²½ν•˜κ³  싢지 μ•Šμ€ κ²½μš°κ°€ ν•œλ‘ 가지 μžˆμ„ 수 μžˆλŠ” μ‚¬λžŒλ“€μ΄ 더 μ‰½κ²Œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

@JKillian λ§€κ°œλ³€μˆ˜μ—λ§Œ ν•΄λ‹Ήλ˜λŠ”κ±° 맞죠?

@glen-84 - 쒋은 캐치, 당신이 μ˜³λ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.

@adidahiya --noUnusedLocals 와 no-unused-variable λŠ” μƒλ‹Ήνžˆ λ‹€λ₯΄κ²Œ μž‘λ™ν•©λ‹ˆλ‹€.

--noUnusedLocals λŠ” 클래슀 속성도 ν™•μΈν•©λ‹ˆλ‹€(TS 버전 2.0.2μ—μ„œ).

@charsleysa λ„€, κ΅¬ν˜„μ΄ μ•½κ°„ λ‹€λ¦…λ‹ˆλ‹€. 컴파일러 μ˜΅μ…˜μ΄ TSLint κ·œμΉ™λ³΄λ‹€ λ‚«λ‹€κ³  μƒκ°ν•˜κΈ° λ•Œλ¬Έμ— 이 κ·œμΉ™μ„ μ„ ν˜Έν•©λ‹ˆλ‹€. μ›λž˜ 문제 κ²Œμ‹œλ¬Όμ—μ„œ μ–ΈκΈ‰ν–ˆλ“―μ΄ TSLint μ½”μ–΄μ—μ„œ 천천히 μ œκ±°ν•©λ‹ˆλ‹€.

버전 4μ—μ„œ μ œκ±°ν•΄μ•Ό ν•œλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€. λͺ¨λ“  κ°œλ°œμžκ°€ μ‚¬μš© 쀑단 κ²½κ³ λ₯Ό λ³Ό 수 μžˆλŠ” λ§Žμ€ 미리 보기 λ¦΄λ¦¬μŠ€κ°€ μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€. 그리고 μ–΄μ¨Œλ“  컴파일러 μ˜΅μ…˜μ„ μœ„ν•΄ λ‹€λ₯Έ κ·œμΉ™μ„ μ œκ±°ν–ˆμŠ΅λ‹ˆλ‹€.

PD: dev-1 λ¦΄λ¦¬μŠ€μ—μ„œλŠ” 이것이 ꢌμž₯ 섀정이라고 μƒκ°ν•©λ‹ˆλ‹€.

μ•½κ°„μ˜ ν”Όλ“œλ°±μœΌλ‘œ 였늘 λ°€ 이 λ¬Έμ œμ— λΆ€λ”ͺν˜”μŠ΅λ‹ˆλ‹€. 이 문제λ₯Ό 찾은 후에도 --noUnusedLocals 및 --noUnusedParameters κ°€ tslintκ°€ μ•„λ‹ˆλΌ tsc κ΅¬μ„±μ΄λΌλŠ” 것을 μ΄ν•΄ν•˜λŠ” 데 μ•½κ°„μ˜ μ‹œκ°„μ΄ κ±Έλ ΈμŠ΅λ‹ˆλ‹€. 였λ₯˜ λ©”μ‹œμ§€μ—μ„œ 이λ₯Ό λͺ…ν™•νžˆ ν•˜λŠ” 것이 μœ μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

@ryanguill ν”Όλ“œλ°± μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€. λ©”μ‹œμ§€λ₯Ό λͺ…ν™•νžˆ ν•˜λŠ” λ³€κ²½ 사항을 μ»€λ°‹ν–ˆμŠ΅λ‹ˆλ‹€.

μž‘μ€ ν”Όλ“œλ°±. tslint에 μ΄λŸ¬ν•œ κ·œμΉ™μ΄ 있으면 linter κ²½κ³ κ°€ ν‘œμ‹œλ  λ•Œ 정말 νŽΈλ¦¬ν•˜μ§€λ§Œ μ½”λ“œλŠ” μ—¬μ „νžˆ μ»΄νŒŒμΌλ©λ‹ˆλ‹€. μ €λŠ” 개인적으둜 특히 λ¦¬νŒ©ν† λ§μ΄λ‚˜ 아이디어 μ‹œλ„μ™€ 같은 λΉ λ₯Έ μ½”λ“œ 변경을 μˆ˜ν–‰ν•  λ•Œ μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” λ³€μˆ˜, λ§€κ°œλ³€μˆ˜ λ˜λŠ” κ°€μ Έμ˜€κΈ°λ‘œ 인해 컴파일러 였λ₯˜κ°€ λ°œμƒν•˜λŠ” 것을 맀우 μ„±κ°€μ‹œκ²Œ μƒκ°ν•©λ‹ˆλ‹€.

μ»΄νŒŒμΌλŸ¬λŠ” λ‚΄κ°€ μƒκ°ν•˜λŠ” 더 λ‚˜μ€ λ°©μ‹μœΌλ‘œ 이것을 μ²˜λ¦¬ν•˜κ³ , 이것 λ•Œλ¬Έμ— 컴파일이 λ˜μ§€ μ•Šμ•„μ•Ό ν•œλ‹€λŠ” λ°©μ‹μœΌλ‘œ 당신을 μ§€μ›ν•˜μ§€λ§Œ, 예λ₯Ό λ“€μ–΄ μ›ΉνŒ©κ³Ό 같은 것을 μ‚¬μš©ν•˜λ©΄ 였λ₯˜κ°€ λ°œμƒν•˜μ§€λ§Œ μ»΄νŒŒμΌμ€ λ©ˆμΆ”μ§€ μ•Šμ„ κ²ƒμž…λ‹ˆλ‹€.

@zubivanμ—κ²Œ

λ™μ˜ν•˜λ‹€. λ‚˜λŠ” 이 κ²½κ³ λ₯Ό 린트 λ‹¨κ³„μ—μ„œ μœ μ§€ν•˜λŠ” 것을 μ„ ν˜Έν•©λ‹ˆλ‹€. λ‚΄ μ›Œν¬ν”Œλ‘œλŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

any file/code changes => run ts-compile => run tests => run ts-lint

더티 μ½”λ“œλ₯Ό λΉ λ₯΄κ²Œ λ³€κ²½ν•˜κ³  κ²°κ³Όλ₯Ό λ¨Όμ € ν…ŒμŠ€νŠΈν•œ λ‹€μŒ tslintλ‘œλΆ€ν„° 보호λ₯Ό μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€. ν…ŒμŠ€νŠΈ 전에 κΉ¨λ—ν•œ μ½”λ“œλ₯Ό μž‘μ„±ν•˜λ„λ‘ κ°•μš”ν•˜λŠ” 것은 정말 μ§œμ¦λ‚˜λŠ” μΌμž…λ‹ˆλ‹€.

@michaeljotaμ—κ²Œ

ν…ŒμŠ€νŠΈ ν›„ κ²½κ³ λ₯Ό ν‘œμ‹œν•˜λŠ” 것을 μ„ ν˜Έν•˜μ§€λ§Œ λͺ©ν‘œλ₯Ό λ‹¬μ„±ν•˜κΈ° μœ„ν•œ μ›ΉνŒ© μ˜ˆμ œκ°€ μžˆμŠ΅λ‹ˆκΉŒ?

TSLintκ°€ 컴파일러λ₯Ό μ‹€ν–‰ν•˜κ³  ν•΄λ‹Ή κ²½κ³ λ₯Ό ꡬ문 λΆ„μ„ν•˜κ³  TSLint 경고둜 좜λ ₯ν•  수 μžˆλŠ”μ§€ κΆκΈˆν•©λ‹ˆλ‹€. 그의 것은 TSLintκ°€ κ·œμΉ™μ˜ κ΅¬ν˜„μ„ μœ μ§€ 관리해야 ν•˜λŠ” 것을 자유둭게 ν•  κ²ƒμ΄μ§€λ§Œ μ‚¬μš©μžλŠ” λ‹€λ₯Έ 이점듀 μ€‘μ—μ„œ μœ μš©ν•œ λΉ„ν™œμ„±ν™”/λ¬΄μ‹œ TSLint 주석을 계속 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

λ‚΄ ν”„λ‘œν•„μ˜ @xareelee μ—μ„œ λ˜μ§€μ§€ μ•Šκ³  TS 컴파일이 ν¬ν•¨λœ Angular 2 섀정을 λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€.

이것이 컴파일러의 일뢀인 이유λ₯Ό 이해할 수 μ—†μŠ΅λ‹ˆλ‹€. 그것듀은 μ½”λ“œμ˜ 정확성에 영ν–₯을 λ―ΈμΉ˜μ§€ μ•Šκ³  μˆœμ „νžˆ 문체이기 λ•Œλ¬Έμ— λ¦°ν„° μ˜΅μ…˜μœΌλ‘œ 더 μžμ—°μŠ€λŸ½κ²Œ λ³΄μž…λ‹ˆλ‹€. λ‚˜λ„ νŠΉμ • κ²½μš°μ— μ΄λŸ¬ν•œ κ²½κ³ λ₯Ό λ¬΄μ‹œν•  수 μžˆλŠ” κΈ°λŠ₯을 μ›ν•©λ‹ˆλ‹€. tslintλ‘œλŠ” ν•  수 μžˆμ§€λ§Œ tscλ‘œλŠ” ν•  수 μ—†μŠ΅λ‹ˆλ‹€.

이것이 μ§€κΈˆ 컴파일러의 일뢀인 μ΄μœ λŠ” μ—¬κΈ°μ„œ λ…Όμ˜ν•  사항이 μ•„λ‹™λ‹ˆλ‹€. 이미 λ“œλŸ¬λ‚œ 이유 λ•Œλ¬Έμ— 그듀이 이 κ·œμΉ™μ„ 읽지 μ•Šμ„ 것이라고 μƒκ°ν•©λ‹ˆλ‹€.

λΉ λ₯Έ 둜컬 κ°œλ°œμ„ λ°©μ§€ν•˜κΈ° λ•Œλ¬Έμ— 컴파일러 μ˜΅μ…˜μ„ μ‚¬μš©ν•˜κ³  싢지 μ•ŠκΈ° λ•Œλ¬Έμ— 이에 λŒ€ν•œ μ†”λ£¨μ…˜μ„ μ°ΎλŠ” λ‹€λ₯Έ λͺ¨λ“  μ‚¬λžŒλ“€μ˜ 경우(일뢀 μ½”λ“œλ₯Ό 주석 μ²˜λ¦¬ν•˜λ©΄ λ³€ν™˜μ΄ μ‹€νŒ¨ν•¨) λ‹€μŒκ³Ό 같이 ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이것:

const Rule = require('tslint/lib/rules/noUnusedVariableRule').Rule;

// Hide deprecation message
Rule.metadata.deprecationMessage = '';
Rule.metadata.ruleName = 'no-unused-variable-wrapped';

module.exports.Rule = Rule;

μžμ‹ μ˜ κ·œμΉ™ noUnusedVariableWrapped.js νŒŒμΌμ—μ„œ "no-unused-variable-wrapped": true λ₯Ό 톡해 ν™œμ„±ν™”ν•˜μ‹­μ‹œμ˜€.

tslint κ·œμΉ™μ΄ μ•„λ‹Œ 컴파일러 κ·œμΉ™μ— 따라 μ†μ‹€λ˜λŠ” ν•œ κ°€μ§€λŠ” μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” κ°€μ Έμ˜€κΈ°/λ³€μˆ˜λ₯Ό μžλ™ μˆ˜μ •ν•˜κ³  μ œκ±°ν•˜λŠ” κΈ°λŠ₯μž…λ‹ˆλ‹€.

이 κ·œμΉ™μ„ μœ μ§€ν•˜λŠ” 데 λ§Žμ€ 관심이 μžˆλŠ” 것 κ°™μŠ΅λ‹ˆλ‹€. κ³„μ†ν•΄μ„œ κ·œμΉ™μ„ λΉ„μΆ”μ²œν•˜λŠ” #2256을 λ³‘ν•©ν–ˆμŠ΅λ‹ˆλ‹€. κΈ°λ³Έ 제곡 κ΅¬μ„±μ—μ„œλŠ” μ—¬μ „νžˆ ꢌμž₯λ˜μ§€ μ•Šμ§€λ§Œ 옡트인 κΈ°μ€€μœΌλ‘œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

tsconfig에 "jsx": "react" κ°€ μžˆλŠ” 경우 tslintλŠ” λ°˜μ‘ κ°€μ Έμ˜€κΈ° λˆ„λ½μ— λŒ€ν•œ 였λ₯˜λ₯Ό λ°œμƒμ‹œμΌœμ•Ό ν•©λ‹ˆλ‹€.

@ccorcos "κ°€μ Έμ˜€κΈ° λˆ„λ½"은 "μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” λ³€μˆ˜ μ—†μŒ"κ³Ό μ™„μ „νžˆ λ‹€λ₯Έ 였λ₯˜μž…λ‹ˆλ‹€. tsc 이(κ°€) 도움이 될 κ²ƒμž…λ‹ˆλ‹€.

쒋은 μ†Œλ¦¬. VSCodeμ—μ„œ 이 였λ₯˜κ°€ ν‘œμ‹œλ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€... :/

μ•ˆλ…•ν•˜μ„Έμš” @adidahiya ,

이 κ·œμΉ™μ„ λ˜μ°Ύμ•„ μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€. λ¬Έμ œλŠ” μ–Έμ œ μΆœμ‹œλ©λ‹ˆκΉŒ? λ‚΄κ°€ λ³Ό 수 μžˆλ“―μ΄ 아직 5.1.0에 ν¬ν•¨λ˜μ–΄ μžˆμ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

@javier-tarazaga 항상 κ·Έλž˜μ™”λ“―μ΄ v5에 μžˆμŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ tslint:recommended κ΅¬μ„±μ—μ„œλŠ” ν™œμ„±ν™”λ˜μ–΄ μžˆμ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

μ•ˆλ…•ν•˜μ„Έμš” @adidahiya ,

음 이상해. tslint 5.1.0 버전에 κ·œμΉ™μ„ ν¬ν•¨ν•˜λ©΄ λ‹€μŒ 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€.

Could not find implementations for the following rules specified in the configuration:
    no-unused-vars
Try upgrading TSLint and/or ensuring that you have all necessary custom rules installed.
If TSLint was recently upgraded, you may have old rules configured which need to be cleaned up.

잘λͺ»λœ 파일 이름을 μ‚¬μš©ν–ˆκΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€. μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” λ³€μˆ˜κ°€ μ•„λ‹™λ‹ˆλ‹€.
μ‚¬μš©ν•˜μ§€ μ•Šμ€ λ³€μˆ˜

μ˜€μ „ 02.05.2017 09:33 schrieb "Javier Tarazaga" [email protected] :

μ•ˆλ…•ν•˜μ„Έμš” @adidahiya https://github.com/adidahiya ,

음 이상해. tslint 5.1.0 버전에 κ·œμΉ™μ„ ν¬ν•¨ν•˜λ©΄
λ‹€μŒ 였λ₯˜,

ꡬ성에 μ§€μ •λœ λ‹€μŒ κ·œμΉ™μ— λŒ€ν•œ κ΅¬ν˜„μ„ 찾을 수 μ—†μŠ΅λ‹ˆλ‹€.
μ‚¬μš©ν•˜μ§€ μ•Šμ€ λ³€μˆ˜
TSLintλ₯Ό μ—…κ·Έλ ˆμ΄λ“œν•˜κ±°λ‚˜ ν•„μš”ν•œ λͺ¨λ“  μ‚¬μš©μž 지정 κ·œμΉ™μ΄ μ„€μΉ˜λ˜μ–΄ μžˆλŠ”μ§€ ν™•μΈν•˜μ‹­μ‹œμ˜€.
TSLintκ°€ μ΅œκ·Όμ— μ—…κ·Έλ ˆμ΄λ“œλœ 경우 정리해야 ν•˜λŠ” 이전 κ·œμΉ™μ΄ κ΅¬μ„±λ˜μ–΄ μžˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€.

β€”
이 μŠ€λ ˆλ“œμ— κ°€μž…ν–ˆκΈ° λ•Œλ¬Έμ— 이 λ©”μ‹œμ§€λ₯Ό λ°›κ³  μžˆμŠ΅λ‹ˆλ‹€.
이 이메일에 직접 λ‹΅μž₯ν•˜κ³  GitHubμ—μ„œ ν™•μΈν•˜μ„Έμš”.
https://github.com/palantir/tslint/issues/1481#issuecomment-298527837 ,
λ˜λŠ” μŠ€λ ˆλ“œ μŒμ†Œκ±°
https://github.com/notifications/unsubscribe-auth/ALaeKKYydi8vQ8MAhxOwBk3uL02jgzKNks5r1txLgaJpZM4JjuQh
.

κ°μ‚¬ν•©λ‹ˆλ‹€! μ§€κΈˆμ€ #2650에 μ§λ©΄ν•˜κ³  μžˆμ–΄μ„œ μ‹€μ œλ‘œ 확인할 수 μ—†μŠ΅λ‹ˆλ‹€.

https://github.com/blakeembrey/tslint-config-standard λ₯Ό μ„€μΉ˜ν–ˆμŠ΅λ‹ˆλ‹€.
μ–΄μ¨Œλ“ μ΄ κ²½κ³ λ₯Ό 제거 ν•  수 μžˆμŠ΅λ‹ˆκΉŒ? ν‘œμ€€ λ˜λŠ” tslint와 관련이 μžˆλŠ”μ§€ ν™•μ‹€ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

> [email protected] lint /Users/nikos/WebstormProjects/common
> tslint 'src/**/*.ts' 'test/**/*.ts'

Warning: The 'await-promise' rule requires type information.
Warning: The 'no-unused-variable' rule requires type information.
Warning: The 'no-use-before-declare' rule requires type information.
Warning: The 'return-undefined' rule requires type information.
Warning: The 'no-floating-promises' rule requires type information.
Warning: The 'no-unnecessary-qualifier' rule requires type information.
Warning: The 'no-unnecessary-type-assertion' rule requires type information.
Warning: The 'strict-type-predicates' rule requires type information.

@QuantumInformation --project μ‚¬μš©ν•΄ λ³΄μ…¨μŠ΅λ‹ˆκΉŒ?

λ„€ μž‘λ™ν•©λ‹ˆλ‹€ thx

πŸ€– 삐삐! πŸ‘‰ TSLintλŠ” 더 이상 μ‚¬μš©λ˜μ§€ μ•ŠμœΌλ©° πŸ‘ˆ typescript-eslint 둜 μ „ν™˜ ν•΄μ•Ό ν•©λ‹ˆλ‹€! πŸ€–

πŸ”’ 이 μ΄μŠˆλŠ” 더 μ΄μƒμ˜ λΆˆν•„μš”ν•œ 토둠을 λ°©μ§€ν•˜κΈ° μœ„ν•΄ 잠그고 μžˆμŠ΅λ‹ˆλ‹€. κ°μ‚¬ν•©λ‹ˆλ‹€! πŸ‘‹

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰