.../articles/
CircleCIでeslint-disable-lineを検出する

CircleCIでeslint-disable-lineを検出する

2019.09.26

ESLint

JavaScriptのプロジェクトを複数人(もちろん個人でも)で開発する際は、ESLintを使うことでコーディングルールを統一することができます。 またESLintをCI上でも実行することでレビューの前段階としてミスなど発見がしやすくなります。

eslint-disable-line

ESLintではインラインコメントで部分的にルールを無効にすることができます。

ローカルで開発する際はちょっと確認のために eslint-disable-line を使ってあれこれすることもあるかと思いますが、これを残したままコードをプッシュしてしまうと意図せずコーディングルールにそぐわないコードが紛れてしまう可能性がでてきます。

例えば console を禁止するルールがあっても、以下のようなコードはESLintでは検出できません。 (もしできる方法があったら教えてほしい) ↓追記へ

console.log('hello') // eslint-disable-line

CircleCIで検出する

eslint-disable-line が使われていないかチェックするため、CirleCIで以下のコマンドを実行します。

      - run:
          name: Search eslint-disable-line
          command: |
            git grep --heading --break -n -e 'eslint-disable-line' -- '*.js' '*.vue' || status=$?
            if [ -z "$status" ]; then exit 1; fi
git grep --heading --break -n -e 'eslint-disable-line' -- '*.js' '*.vue'

これはjs(この例ではvueも、他のパターンも指定可能)に eslint-disable-line がないか探すコマンドです、オプションはお好みで。

後ろに続く || status=$? について、上記の git-grep コマンドは該当する行があった場合はステータスが0となりますが、該当する行が無かった場合はステータスが1となります。

つまり該当する行があった場合は $status には値がセットされないので、値がセットされていなければ exit 1 するというのが以下のコマンドです。

if [ -z "$status" ]; then exit 1; fi

これでCircleCI上で eslint-disable-line を検出することができるようになりました。


追記

ESLintのCLIのドキュメントを見たら --no-inline-config というオプションがありました。

このオプションをつけるとインラインでルールを変更している箇所も元々のルールで見るので、CI上でESLintを実行する時にこのオプションを渡せば目的は達成できそうです。

インラインのルール変更自体を禁止する設定もできるようなので、必要であればこちらを設定しても良さそうです。

written by

.../article/

Articles

記事

Firebase Functions×Remix で POST データが読めない!?

Firebase Functions×Remix で POST データが読めない!?

Firebase Functions 環境で Remix の action から POST データを読む方法まとめ

経営層・リーダーのための生成AI活用 〜自走型DXのためのアプローチ〜

経営層・リーダーのための生成AI活用 〜自走型DXのためのアプローチ〜

生成AIを活用して、経営者やリーダー自身が課題抽出・打ち手検討を行える体制を構築する。 弊社が提供する“伴走型支援”と組み合わせることで、DX推進の質とスピードを飛躍的に高める方法をご紹介します。

AWS AmplifyにmonorepoのNext.js(App Router)をデプロイする

AWS AmplifyにmonorepoのNext.js(App Router)をデプロイする

monorepo管理しているNext.jsをAmplifyにデプロイしようとした際にいくつか躓く内容があったのでまとめておきます。

Laravel 日本一解りやすい全文検索のマイグレーション記載方法解説

Laravel 日本一解りやすい全文検索のマイグレーション記載方法解説

Laravel + MySQLで全文検索を実装する

リモートワーク・オンライン会議でも、スムーズに制作を進めるために大切なこと[資料編]

リモートワーク・オンライン会議でも、スムーズに制作を進めるために大切なこと[資料編]

コロナ禍の影響により、リモートワークの導入をおこなっている制作会社も多く、実際に弊社でも導入しています。

売れるECサイトデザインを作るために。参考にしたいおしゃれな事例の探し方。

売れるECサイトデザインを作るために。参考にしたいおしゃれな事例の探し方。

売れるECサイトのデザインは、「この形式」という決まりはありません。ECサイトで売り上げを上げるなら、しっかりとしたコンセプトと、コンセプトを決定するまでのリサーチが必要です。

Figmaでデザインのコミット履歴を残せるプラグイン【Thought Recorder】をリリースしました

Figmaでデザインのコミット履歴を残せるプラグイン【Thought Recorder】をリリースしました

Figmaを利用するWebデザイナーの助けになれると嬉しいです。使い方は本記事をご覧ください。

制作会社の考える、業務効率化ツールのおすすめ。個人でも使いやすいサービスなど。

制作会社の考える、業務効率化ツールのおすすめ。個人でも使いやすいサービスなど。

新型コロナウイルス感染拡大の影響で、リモートワークが主流になり、弊社でも週のほとんどは各自宅で作業をしています。

ECの構築方法、おすすめのECサービス。

ECの構築方法、おすすめのECサービス。

ファッションや家電、スーパーの買い物でさえもECサイトを利用することが当たり前になりました。加えて新型コロナウイルスの影響もあり、弊社にも「どんなプラットフォームを利用したら良いか」「どれくらいコストがかかるのか」などECに関するさまざまなご相談を頂きます。

Laravelのオブザーバーが便利だった

Laravelのオブザーバーが便利だった

オブザーバーを使って、モデルのCRUDイベントキャッチしようという試み

すべての記事

お問い合わせ