Weekly Report 2020/10/04
週報2回目です。毎週日曜日に更新するつもりでしたが早速すっぽかしました。
今週は Hacktoberfest が始まっていろんな意味でOSS界隈が盛り上がりました。僕もTシャツ狙って軽めのタスクを一気にやったのですが、あとから Hacktoberfest の対象になるためには opt-in する必要があるということになって、少し悲しい……
denoland/deno_lint
Issue
- False positives in "prefer-const"
prefer-constルールを実装したんですが、Deno のstdに対して適用してみるといくつか false positive が見つかりました。それを直す作業をやることになりました。
- getter-return and infinite loops
getter-returnというルールで、whileの中からreturnで抜けるようなコードを書くと false positive が発生するよという issue です。ESLint の実装と deno_lint の実装を見比べてみると、deno_lint はifとswitchだけを個別処理しているのに対して、ESLint ではCodePathというものの解析結果を使っているようでした。おそらく issue で報告されている問題を解決するためには ESLint のアプローチを拝借させていただくのが良いだろう、というところまで当たりはついているので、時間に余裕ができたら着手しようかと思っています。
- bug: unconditional return in constructor produces unreachable code after class
no-unreachableについてのバグ報告。fix(control_flow): handle class constructors にて修正
Pull Request
- add Camelcase rule
camelcaseルールを追加するPRです。立てたのは9月上旬ですが、これを導入すると Deno のstdへの影響が大きく、しばらく保留となっていました。stdの修正が進められる中で、「このルール、変数の宣言だけじゃなくて参照に対してもチェックをかけている (obj.foo_bar = 1;って書くとfoo_barに対して怒る、みたいな) けど、それってイケてなくね?」(意訳)という意見が出て、なるほど確かに……となっているのが現状です。ESLintのオリジナルの実装に従うのであれば参照もエラー対象なのですが、そこを改変するか否か、議論中です。といっても議論は全然進んでいなくて、そもそもこのルールに対してみんなの関心が多少薄そう……という印象
- add prefer-const rule
prefer-constを実装しました。結構な大作 (当社比) ですが、のちほどいくつかの実装漏れが見つかり、大幅な手直しをすることになりました。
- fix(prefer-const): handle
+=and-=correctlyprefer-constについて、実装漏れを修正
- fix(prefer-const): treat param of catch clause like thet of function
prefer-constについて、実装漏れを修正
- fix(no-class-assign): increase tests and fix to pass them
- 軽微な修正
- fix(no-compare-neg-zero): handle nested stuff
- 軽微な修正
- fix(control_flow): handle class constructors
no-unreachableのバグを修正
- fix(no-case-declarations): handle nested switch statements
- 軽微な修正
- fix(prefer-const): handle nested assignments correctly by magurotuna · Pull Request #361 · denoland/deno_lint
prefer-constについて、ネストされた代入文に対応できるようにする修正
typescript-eslint/typescript-eslint
Pull Request
- docs(eslint-plugin): add info about
allowDirectConstAssertionInArrowFunctionsoption- 先週「まだ merge されていません」となっていた PR です。無事に merge されました。