Code Quality | GitLab Docs
https://docs.gitlab.com/ja-jp/ci/testing/code_quality/ • 83 KB fetched Open original page
Code Quality | GitLab Docs メインコンテンツにスキップ
GitLabドキュメントのホームページに移動
新機能
新機能
無料トライアルを開始
メニューを開閉
* GitLabを使用する
* GitLab Duo
* GitLab Orbit
* 拡張
* インストール
* 管理
* サブスクライブ
* コントリビュート
* ソリューション
はじめに
チュートリアル
組織を管理する
プロジェクトで作業を整理する
作業を計画および追跡する
認証と認可を管理する
Gitを使用する
コードを管理する
CI/CDを使用してアプリケーションをビルドする
はじめに
チュートリアル
CI/CD YAML構文リファレンス
Runner
パイプライン
ジョブ
CI/CDコンポーネント
CI/CDインプット
CI/CD変数
パイプラインセキュリティ
GitLab Secrets Manager
外部シークレット
デバッグ
Auto DevOps
テスト
アクセシビリティテスト
ブラウザパフォーマンステスト
コードカバレッジ
コード品質
CodeClimateベースのスキャン(非推奨)
トラブルシューティング
フェイルファストテスト
ロードパフォーマンステスト
メトリクスレポート
テストケース
単体テストレポート
CI/CDの持続可能性
Google Cloudインテグレーション
GitLab CI/CDに移行する
外部リポジトリインテグレーション
Mobile DevOps
アプリケーションを保護する
アプリケーションをデプロイおよびリリースする
インフラストラクチャを管理する
アプリケーションをモニタリングする
GitLabの使用状況を分析する
リリースノート
機能サポート
GitLabのバージョンを確認する
* GitLabドキュメント
/
* GitLabを使用する
/
* CI/CDを使用してアプリケーションをビルドする
/
* テスト
/
* コード品質
正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、 英語版 をご参照ください。
ドキュメントに関する現在のご利用体験についてお聞かせください。 アンケートにご協力ください 。
Code Quality
* プラン : Free、Premium、Ultimate
* 提供形態 : GitLab.com、GitLab Self-Managed、GitLab Dedicated
Code Qualityは、技術的負債になる前に保守性の問題を特定します。コードレビュー中に自動的に行われるフィードバックにより、チームはより良いコードを書くことができます。検出結果はマージリクエストに直接表示されるため、最もコスト効率よく修正できるタイミングで問題を把握できます。
Code Qualityは複数のプログラミング言語に対応しており、一般的なLinter、スタイルチェッカー、複雑性アナライザーと統合できます。既存のツールをCode Qualityワークフローに組み込むことで、結果の表示方法を標準化しながら、チーム独自の設定を維持できます。
プランごとの機能
次の表に示すように、利用できる機能は GitLabのプラン によって異なります:
機能 Free Premium Ultimate
CI/CDジョブからCode Qualityの結果をインポートする はい はい はい
CodeClimateベースのスキャンを使用する はい はい はい
マージリクエストウィジェットで検出結果を確認する はい はい はい
パイプラインレポートで検出結果を確認する いいえ はい はい
マージリクエストの変更ビューで検出結果を確認する いいえ いいえ はい
プロジェクトの品質サマリービューで全体的な健全性を分析する いいえ いいえ はい
コードをスキャンして品質違反を検出する
Code Qualityは、多くのスキャンツールからの結果のインポートをサポートするオープンシステムです。違反を見つけて表示するには、以下の手順を実行します:
* スキャンツールを直接使用して、 結果をインポート する。 (推奨)
* 組み込みのCI/CDテンプレートを使用 してスキャンを有効にする。このテンプレートでは、一般的なオープンソースツールをラップするCodeClimateエンジンを使用しています。 (非推奨)
1つのパイプラインで、複数のツールから結果をキャプチャできます。たとえば、コードをスキャンするコードLinterと、ドキュメントをスキャンする言語Linterを一緒に実行したり、スタンドアロンツールとCodeClimateベースのスキャンを組み合わせて使用したりできます。Code Qualityはすべてのレポートを統合するため、 結果を表示 する際にすべてのレポートを確認できます。
CI/CDジョブからCode Qualityの結果をインポートする
多くの開発チームではすでに、Linter、スタイルチェッカー、その他のツールをCI/CDパイプラインで使用し、コーディング標準の違反を自動的に検出しています。これらのツールをCode Qualityと統合することで、検出結果を簡単に確認して修正できるようになります。
お使いのツールにドキュメント化された統合が存在するかを確認するには、 一般的なツールをCode Qualityと統合する を参照してください。
別のツールをCode Qualityと統合するには、以下を実行します:
* CI/CDパイプラインにツールを追加します。
* レポートをファイルとして出力するようにツールを設定します。
* このファイルは 特定のJSON形式 を使用する必要があります。
* 多くのツールはこの出力形式をネイティブにサポートしています。これらのツールでは、この形式を「CodeClimateレポート」や「GitLab Code Qualityレポート」、または類似の名称で呼ぶことがあります。
* 他のツールでは、カスタムJSON形式またはテンプレートを使用してJSON出力を生成できることがあります。 レポート形式 の必須フィールドは少ないため、この出力タイプを使用してCode Quality向けのレポートを作成できる場合があります。
* このファイルに対応する codequality レポートアーティファクト を宣言します。
これで、パイプラインを実行すると、品質ツールの結果が 処理および表示 されます。
組み込みのCode Quality CI/CDテンプレートを使用する(非推奨)
この機能は、GitLab 17.3で 非推奨 となり、19.0で削除される予定です。代わりに、 サポートされているツールの結果を直接統合 してください。
Code Qualityには、組み込みのCI/CDテンプレート Code-Quality.gitlab-ci.yaml も含まれています。このテンプレートは、オープンソースのCodeClimateスキャンエンジンに基づいてスキャンを実行します。
CodeClimateエンジンは以下を実行します:
* サポート対象の言語セット の基本的な保守性チェック。
* ソースコードを分析するための、オープンソーススキャナーをラップした設定可能な プラグイン のセット。
詳細については、 CodeClimateベースのCode Qualityスキャンを設定する を参照してください。
CodeClimateベースのスキャンから移行する
CodeClimateエンジンは、カスタマイズ可能な 分析プラグイン のセットを使用します。一部はデフォルトで有効になっていますが、それ以外は明示的に有効にする必要があります。組み込みのプラグインを置き換えるために、次の統合を利用できます:
プラグイン デフォルトで有効 置換
Duplication はい PMD Copy/Paste Detectorを統合します 。
ESLint はい ESLintを統合します 。
gofmt いいえ golangci-lintを統合 し、 gofmt Linter を有効にします。
golint いいえ golangci-lintを統合 し、golintを置き換える付属のLinterのいずれかを有効にします。golintは 非推奨となり凍結 されました。
govet いいえ golangci-lintを統合 します。golangci-lintには、 デフォルトでgovetが含まれます 。
markdownlint いいえ(コミュニティサポート型) markdownlint-cli2 を統合します。
pep8 いいえ Flake8 、 Pylint 、 Ruff などの代替Python Linterを統合します。
RuboCop はい RuboCopを統合します 。
SonarPython いいえ Flake8 、 Pylint 、 Ruff などの代替Python Linterを統合します。
Stylelint いいえ(コミュニティサポート型) Stylelintを統合します 。
SwiftLint いいえ SwiftLintを統合します 。
Code Qualityの結果を表示する
Code Qualityの結果は次の場所に表示されます:
* マージリクエストウィジェット
* マージリクエストの変更ビュー
* パイプラインの詳細ビュー
* プロジェクトの品質ビュー
マージリクエストウィジェット
ターゲットブランチに比較用のレポートがある場合、Code Qualityの分析結果がマージリクエストウィジェット領域に表示されます。マージリクエストウィジェットには、マージリクエストで行われた変更によって発生したCode Qualityの検出結果と解決事項が表示されます。同一のフィンガープリントを持つ複数のCode Qualityの検出結果は、マージリクエストのウィジェットでは単一のエントリとして表示されます。個々の検出結果は、 パイプライン の詳細ビューで参照できる完全なレポートで確認できます。
マージリクエストの変更ビュー
* プラン : Ultimate
* 提供形態 : GitLab.com、GitLab Self-Managed、GitLab Dedicated
Code Qualityの結果は、マージリクエストの 変更 ビューに表示されます。Code Qualityの問題を含む行は、ガターの横に記号でマークされます。記号を選択すると問題のリストが表示され、問題を選択するとその詳細が表示されます。
パイプラインの詳細ビュー
* プラン : Premium、Ultimate
* 提供形態 : GitLab.com、GitLab Self-Managed、GitLab Dedicated
パイプラインによって生成されたCode Qualityの違反の完全なリストは、パイプラインの詳細ページの Code Quality タブに表示されます。パイプラインの詳細ビューには、パイプラインが実行されたブランチで検出されたすべてのCode Qualityの検出結果が表示されます。
プロジェクトの品質ビュー
* プラン : Ultimate
* 提供形態 : GitLab.com、GitLab Self-Managed
* ステータス : ベータ
履歴
* GitLab 14.5で project_quality_summary_page フラグ とともに 導入 されました。この機能は ベータ版 です。デフォルトでは無効になっています。
プロジェクトの品質ビューに、コード品質の検出結果の概要が表示されます。このビューは 分析 > CI/CD分析 で確認できます。また、特定のプロジェクトに対して project_quality_summary_page 機能フラグを有効にする必要があります。
Code Qualityのレポート形式
次の形式でレポートを出力できる任意のツールから、 Code Qualityの結果をインポート できます。この形式は、 CodeClimateレポート形式 の一種で、フィールド数が少なくなっています。
Code Qualityレポートアーティファクト として提供するファイルには、単一のJSON配列を含める必要があります。その配列内の各オブジェクトには、少なくとも次のプロパティが必要です:
名前 型 説明
description 文字列 コード品質違反について、人間が読める形式で記載された説明。
check_name 文字列 この違反に関連するチェックやルールを表す一意の名前。
fingerprint 文字列 特定のコード品質違反を識別するための一意のフィンガープリント(その違反内容のハッシュなど)。
location.path 文字列 リポジトリ内の相対パスで表した、コード品質違反を含むファイル。 ./ を先頭に付けないでください。
location.lines.begin または location.positions.begin.line 整数 コード品質違反が発生した行。
severity 文字列 違反の重大度。 info 、 minor 、 major 、 critical 、 blocker のいずれかになります。
この形式は、次の点で CodeClimateレポート形式 と異なります:
* CodeClimateレポート形式 は、より多くのプロパティをサポートしていますが、Code Qualityは前述のフィールドのみを処理します。
* GitLabパーサーは、先頭に バイトオーダーマーク(BOM) があるファイルを処理できません。
以下に、準拠した形式のレポートの例を示します:
[
{
"description" : "'unused' is assigned a value but never used." ,
"check_name" : "no-unused-vars" ,
"fingerprint" : "7815696ecbf1c96e6894b779456d330e" ,
"severity" : "minor" ,
"location" : {
"path" : "lib/index.js" ,
"lines" : {
"begin" : 42
}
}
}
]
一般的なツールをCode Qualityと統合する
多くのツールは、結果をCode Qualityと統合するために必要な レポート形式 をネイティブにサポートしています。これらのツールでは、この形式を「CodeClimateレポート」や「GitLab Code Qualityレポート」、または類似の名称で呼ぶことがあります。
その他のツールは、カスタムテンプレートまたは形式の仕様を指定することで、JSON出力を生成するように設定できます。 レポート形式 の必須フィールドは少ないため、この出力タイプを使用してCode Quality向けのレポートを作成できる場合があります。
CI/CDパイプラインですでにツールを使用している場合は、既存のジョブを調整してCode Qualityレポートを追加することが推奨されます。既存のジョブを調整することで、デベロッパーを混乱させたり、パイプラインの実行時間を長くしたりする可能性のある別のジョブを実行せずに済みます。
ツールをまだ使用していない場合は、CI/CDジョブを一から作成するか、 CI/CDカタログ のコンポーネントを使用してツールを導入できます。
コードスキャンツール
ESLint
CI/CDパイプラインにすでに ESLint ジョブがある場合は、その出力をCode Qualityに送信するためにレポートを追加する必要があります。出力を統合するには、以下を実行します:
* プロジェクトに開発依存関係として eslint-formatter-gitlab を追加します。
* ESLintの実行に使用するコマンドに --format gitlab オプションを追加します。
* レポートファイルの場所を指す codequality レポートアーティファクト を宣言します。
* デフォルトでは、フォーマッターはCI/CD設定を読み取り、レポートを保存するファイル名を推測します。フォーマッターがアーティファクトの宣言で使用したファイル名を推測できない場合は、CI/CD変数 ESLINT_CODE_QUALITY_REPORT に、アーティファクトに指定したファイル名( gl-code-quality-report.json など)を指定します。
ESLint CI/CDコンポーネント を使用または調整してスキャンを実行し、その出力をCode Qualityと統合することもできます。
Stylelint
CI/CDパイプラインにすでに Stylelint ジョブがある場合は、その出力をCode Qualityに送信するためにレポートを追加する必要があります。出力を統合するには、以下を実行します:
* プロジェクトに開発依存関係として @studiometa/stylelint-formatter-gitlab を追加します。
* Stylelintの実行に使用するコマンドに --custom-formatter=@studiometa/stylelint-formatter-gitlab オプションを追加します。
* レポートファイルの場所を指す codequality レポートアーティファクト を宣言します。
* デフォルトでは、フォーマッターはCI/CD設定を読み取り、レポートを保存するファイル名を推測します。フォーマッターがアーティファクトの宣言で使用したファイル名を推測できない場合は、CI/CD変数 STYLELINT_CODE_QUALITY_REPORT に、アーティファクトに指定したファイル名( gl-code-quality-report.json など)を指定します。
詳細およびCI/CDジョブ定義の例については、 @studiometa/stylelint-formatter-gitlab のドキュメント を参照してください。
MyPy
CI/CDパイプラインにすでに MyPy ジョブがある場合は、その出力をCode Qualityに送信するためにレポートを追加する必要があります。出力を統合するには、以下を実行します:
* プロジェクトに依存関係として mypy-gitlab-code-quality をインストールします。
* mypy コマンドを変更して、その出力をファイルに送信します。
* ジョブ script にステップを追加し、 mypy-gitlab-code-quality を使用してファイルを必要な形式に再処理します。例:
- mypy $(find -type f -name "*.py" ! -path "**/.venv/**") --no-error-summary > mypy-out.txt || true # "|| true" is used for preventing job failure when mypy find errors
- mypy-gitlab-code-quality < mypy-out.txt > gl-code-quality-report.json
* レポートファイルの場所を指す codequality レポートアーティファクト を宣言します。
MyPy CI/CDコンポーネント を使用または調整してスキャンを実行し、その出力をCode Qualityと統合することもできます。
Flake8
CI/CDパイプラインにすでに Flake8 ジョブがある場合は、その出力をCode Qualityに送信するためにレポートを追加する必要があります。出力を統合するには、以下を実行します:
* プロジェクトに依存関係として flake8-gl-codeclimate をインストールします。
* Flake8の実行に使用するコマンドに引数 --format gl-codeclimate --output-file gl-code-quality-report.json を追加します。
* レポートファイルの場所を指す codequality レポートアーティファクト を宣言します。
Flake8 CI/CDコンポーネント を使用または調整してスキャンを実行し、その出力をCode Qualityと統合することもできます。
Pylint
CI/CDパイプラインにすでに Pylint ジョブがある場合は、その出力をCode Qualityに送信するためにレポートを追加する必要があります。出力を統合するには、以下を実行します:
* プロジェクトに依存関係として pylint-gitlab をインストールします。
* Pylintの実行に使用するコマンドに引数 --output-format=pylint_gitlab.GitlabCodeClimateReporter を追加します。
* pylint コマンドを変更して、その出力をファイルに送信します。
* レポートファイルの場所を指す codequality レポートアーティファクト を宣言します。
Pylint CI/CDコンポーネント を使用または調整してスキャンを実行し、その出力をCode Qualityと統合することもできます。
Ruff
CI/CDパイプラインにすでに Ruff ジョブがある場合は、その出力をCode Qualityに送信するためにレポートを追加する必要があります。出力を統合するには、以下を実行します:
* Ruffの実行に使用するコマンドに引数 --output-format=gitlab を追加します。
* ruff check コマンドを変更して、その出力をファイルに送信します。
* レポートファイルの場所を指す codequality レポートアーティファクト を宣言します。
ドキュメント化されたRuff GitLab CI/CDインテグレーション を使用または調整してスキャンを実行し、その出力をCode Qualityと統合することもできます。
golangci-lint
CI/CDパイプラインにすでに golangci-lint ジョブがある場合は、その出力をCode Qualityに送信するためにレポートを追加する必要があります。出力を統合するには、以下を実行します:
* golangci-lint の実行に使用するコマンドに引数を追加します。
* v1の場合は、 --out-format code-climate:gl-code-quality-report.json,line-number を追加します。
* v2の場合は、 --output.code-climate.path=gl-code-quality-report.json を追加します。
* レポートファイルの場所を指す codequality レポートアーティファクト を宣言します。
golangci-lint CI/CDコンポーネント を使用または調整してスキャンを実行し、その出力をCode Qualityと統合することもできます。
PMD Copy/Paste Detector
PMD Copy/Paste Detector(CPD) は、デフォルトの出力が必要な形式に準拠していないため、追加の設定が必要です。
PMD CI/CDコンポーネント を使用または調整してスキャンを実行し、その出力をCode Qualityと統合できます。
SwiftLint
SwiftLint を使用する場合は、デフォルトの出力が必要な形式に準拠していないため、追加の設定が必要です。
Swiftlint CI/CDコンポーネント を使用または調整してスキャンを実行し、その出力をCode Qualityと統合できます。
RuboCop
RuboCop を使用するには、デフォルトの出力が必要な形式に準拠していないため、追加の設定が必要です。
RuboCop CI/CDコンポーネント を使用または調整してスキャンを実行し、その出力をCode Qualityと統合できます。
Roslynator
Roslynator を使用する場合は、デフォルトの出力が必要な形式に準拠していないため、追加の設定が必要です。
Roslynator CI/CDコンポーネント を使用または調整してスキャンを実行し、その出力をCode Qualityと統合できます。
ドキュメントスキャンツール
Code Qualityを使用すると、コード以外でも、リポジトリに保存されている任意のファイルをスキャンできます。
Vale
CI/CDパイプラインにすでに Vale ジョブがある場合は、その出力をCode Qualityに送信するためにレポートを追加する必要があります。出力を統合するには、以下を実行します:
* 必要な形式を定義するValeテンプレートファイルをリポジトリ内に作成します。
* GitLabドキュメントのチェックに使用するオープンソースのテンプレート をコピーできます。
* コミュニティの gitlab-ci-utils Valeプロジェクト で使用されているものなど、別のオープンソースバリアントを使用することもできます。このコミュニティプロジェクトでは、同じテンプレートを含む 事前に作成されたコンテナイメージ も提供しているため、パイプラインで直接使用できます。
* Valeの実行に使用するコマンドに引数 --output="$VALE_TEMPLATE_PATH" --no-exit を追加します。
* vale コマンドを変更して、その出力をファイルに送信します。
* レポートファイルの場所を指す codequality レポートアーティファクト を宣言します。
オープンソースのジョブ定義を使用または調整してスキャンを実行し、その出力をCode Qualityと統合することもできます。たとえば、次のようなジョブ定義があります:
* GitLabドキュメントのチェックに使用される Vale Lintのステップ 。
* コミュニティの gitlab-ci-utils Valeプロジェクト 。
markdownlint-cli2
CI/CDパイプラインにすでに markdownlint-cli2 ジョブがある場合は、その出力をCode Qualityに送信するためにレポートを追加する必要があります。出力を統合するには、以下を実行します:
* プロジェクトに開発依存関係として markdownlint-cli2-formatter-codequality を追加します。
* まだない場合は、リポジトリの最上位に .markdownlint-cli2.jsonc ファイルを作成します。
* outputFormatters ディレクティブを .markdownlint-cli2.jsonc に追加します:
{
"outputFormatters" : [
[ "markdownlint-cli2-formatter-codequality" ]
]
}
* レポートファイルの場所を指す codequality レポートアーティファクト を宣言します。デフォルトでは、レポートファイル名は markdownlint-cli2-codequality.json です。
* (推奨)レポートファイル名をリポジトリの .gitignore ファイルに追加します。
詳細およびCI/CDジョブ定義の例については、 markdownlint-cli2-formatter-codequality のドキュメント を参照してください。
* プランごとの機能
* コードをスキャンして品質違反を検出する
* CI/CDジョブからCode Qualityの結果をインポートする
* 組み込みのCode Quality CI/CDテンプレートを使用する(非推奨)
* CodeClimateベースのスキャンから移行する
* Code Qualityの結果を表示する
* マージリクエストウィジェット
* マージリクエストの変更ビュー
* パイプラインの詳細ビュー
* プロジェクトの品質ビュー
* Code Qualityのレポート形式
* 一般的なツールをCode Qualityと統合する
* コードスキャンツール
* ESLint
* Stylelint
* MyPy
* Flake8
* Pylint
* Ruff
* golangci-lint
* PMD Copy/Paste Detector
* SwiftLint
* RuboCop
* Roslynator
* ドキュメントスキャンツール
* Vale
* markdownlint-cli2
* Facebook
* LinkedIn
* Twitter
* YouTube
会社
* GitLabについて
* 価格を表示する
* GitLabを無料で試す
フィードバック
* ページソースを表示する
* Web IDEで編集する
* GitLabにコントリビュートする
* 更新を提案する
ヘルプとコミュニティ
* 認定を受ける
* サポートを受ける
* GitLabフォーラムに投稿する
リソース
* 利用規約
* プライバシーに関する声明
* 生成AIの使用
* ユーザーライセンスの利用規定
*
Links found on this page
- メインコンテンツにスキップ [direct]
- GitLabドキュメントのホームページに移動 [direct]
- 新機能 [direct]
- 無料トライアルを開始 [direct]
- GitLabを使用する [direct]
- GitLab Duo [direct]
- GitLab Orbit [direct]
- 拡張 [direct]
- インストール [direct]
- 管理 [direct]
- サブスクライブ [direct]
- コントリビュート [direct]
- ソリューション [direct]
- はじめに [direct]
- チュートリアル [direct]
- 組織を管理する [direct]
- プロジェクトで作業を整理する [direct]
- 作業を計画および追跡する [direct]
- 認証と認可を管理する [direct]
- Gitを使用する [direct]
- コードを管理する [direct]
- CI/CDを使用してアプリケーションをビルドする [direct]
- はじめに [direct]
- チュートリアル [direct]
- CI/CD YAML構文リファレンス [direct]
- Runner [direct]
- パイプライン [direct]
- ジョブ [direct]
- CI/CDコンポーネント [direct]
- CI/CDインプット [direct]
- CI/CD変数 [direct]
- パイプラインセキュリティ [direct]
- GitLab Secrets Manager [direct]
- 外部シークレット [direct]
- デバッグ [direct]
- Auto DevOps [direct]
- テスト [direct]
- アクセシビリティテスト [direct]
- ブラウザパフォーマンステスト [direct]
- コードカバレッジ [direct]
- CodeClimateベースのスキャン(非推奨) [direct]
- トラブルシューティング [direct]
- フェイルファストテスト [direct]
- ロードパフォーマンステスト [direct]
- メトリクスレポート [direct]
- テストケース [direct]
- 単体テストレポート [direct]
- CI/CDの持続可能性 [direct]
- Google Cloudインテグレーション [direct]
- GitLab CI/CDに移行する [direct]
- 外部リポジトリインテグレーション [direct]
- Mobile DevOps [direct]
- アプリケーションを保護する [direct]
- アプリケーションをデプロイおよびリリースする [direct]
- インフラストラクチャを管理する [direct]
- アプリケーションをモニタリングする [direct]
- GitLabの使用状況を分析する [direct]
- リリースノート [direct]
- 機能サポート [direct]
- GitLabのバージョンを確認する [direct]
- GitLabドキュメント [direct]
- 英語版 [direct]
- アンケートにご協力ください [direct]
- GitLabのプラン [direct]
- codequality レポートアーティファクト [direct]
- 非推奨 [direct]
- サポート対象の言語セット [direct]
- プラグイン [direct]
- gofmt Linter [direct]
- 非推奨となり凍結 [direct]
- フラグ [direct]
- 導入 [direct]
- CodeClimateレポート形式 [direct]
- バイトオーダーマーク(BOM) [direct]
- ESLint [direct]
- eslint-formatter-gitlab [direct]
- ESLint CI/CDコンポーネント [direct]
- Stylelint [direct]
- @studiometa/stylelint-formatter-gitlab [direct]
- MyPy [direct]
|
|