Day8 .editorconfig
19890 ワード
1. .editorconfig?
異なるエディタを使用するか、プロジェクト内で同じコードスタイルを維持するために使用するコードフォーマットを指定するドキュメント.
(Eslint、Prettierと同様)
(Visual Studioは独自の.editorconfigファイル形式をサポートしています.)
ソリューション右クリック>追加(D)>新規(N)
editorconfigファイル(.NET)をクリック
このようなファイルは、2つの方法で表示できます.
2. .editorconfigコンテンツ
「無効化」、「推奨」、「警告」、「エラー」の4種類があり、「無効化」または「エラー」が推奨されます.
(「警告」の場合、積み上げすぎると、後で本当に必要な警告が見えなくなる可能性があります)
(また、「警告」はすぐに修復するのではなく、強く後ろに押す感じ)
1)フォーマット
スペースをどこに設定しますか?
ex)「for」文のセミコロンの後にスペースを挿入し、括弧内にスペースを挿入する
同じ行に保持する内容
ex)ブロックを1行に保持する
書くかどうか.
ex)ブロック内容のインデント、case内容のインデント
インデント間隔
ex)インデントサイズ、タブキーを使用しないインデント
Enterまたは特定の文の改行を設定します.
ex)「else」を新しい行に、青い大きいサイズの左かっこを新しい行に
2)コードスタイル
使用するソート順の設定
ex) System.* 柳を先に置くか混ぜて置くか
Null exceptionの表示方法の設定
ex)
// csharp_style_throw_expression = true
this.s = s ?? throw new ArgumentNullException(nameof(s));
// csharp_style_throw_expression = false
if (s == null) { throw new ArgumentNullException(nameof(s)); }
this.s = s;
// csharp_style_conditional_delegate_call = true
func?.Invoke(args);
// csharp_style_conditional_delegate_call = false
if (func != null) { func(args); }
this or Meを使用するかどうか
フィールド、property、event、methodで使用するかどうかを確認します.
varを使用するか、明示的なデータを使用するか
ex)変数、クラス宣言時
各演算子の優先度をかっこで表すかどうか
例文と「算数、関係、その他の異項」、翻訳メモリ
未使用の変数を使用するかどうか
式の本文とブロックの本文を別々に使用します
ex)メソッド、コンストラクション関数、演算子、ramdaなど
// csharp_style_expression_bodied_methods = true
public int GetAge() => this.Age;
// csharp_style_expression_bodied_methods = false
public int GetAge() { return this.Age; }
各種フォーマット(数が多く、設定時に表示する必要があります)
ex)ram多項式、インデックス演算子の使用など
// Code with violations
var n1 = typeof(T).Name;
var n2 = typeof(int).Name;
// Fixed code
var n1 = nameof(T);
var n2 = nameof(Int32);
// csharp_style_pattern_local_over_anonymous_function = true
int fibonacci(int n)
{
return n <= 1 ? 1 : fibonacci(n-1) + fibonacci(n-2);
}
// csharp_style_pattern_local_over_anonymous_function = false
Func<int, int> fibonacci = null;
fibonacci = (int n) =>
{
return n <= 1 ? 1 : fibonacci(n - 1) + fibonacci(n - 2);
};
// csharp_style_implicit_object_creation_when_type_is_apparent = true
C c = new();
C c2 = new() { Field = 0 };
// csharp_style_implicit_object_creation_when_type_is_apparent = false
C c = new C();
C c2 = new C() { Field = 0 };
// csharp_style_prefer_index_operator = true
string[] names = { "Archimedes", "Pythagoras", "Euclid" };
var index = names[^1];
// csharp_style_prefer_index_operator = false
string[] names = { "Archimedes", "Pythagoras", "Euclid" };
var index = names[names.Length - 1];
言語キーを使用するか、フォーマット名を使用するか
ex)
// dotnet_style_predefined_type_for_locals_parameters_members = true
private int _member;
// dotnet_style_predefined_type_for_locals_parameters_members = false
private Int32 _member;
コードブロックを簡略化するかどうか
ex)
// csharp_prefer_simple_using_statement = true
using var a = b;
// csharp_prefer_simple_using_statement = false
using (var a = b) { }
スイッチ式かドアを使用して、モードをマッチングする方法
ex)
// csharp_style_prefer_not_pattern = true
var y = o is not C c;
// csharp_style_prefer_not_pattern = false
var y = !(o is C c);
// csharp_style_prefer_switch_expression = true
return x switch
{
1 => 1 * 1,
2 => 2 * 2,
_ => 0,
};
// csharp_style_prefer_switch_expression = false
switch (x)
{
case 1:
return 1 * 1;
case 2:
return 2 * 2;
default:
return 0;
}
readonlyを使用するかどうか
ex)
// dotnet_style_readonly_field = true
class MyClass
{
private readonly int _daysInYear = 365;
}
ローカル関数を静的に分類するかどうか
ex)
// csharp_prefer_static_local_function = true
void M()
{
Hello();
static void Hello()
{
Console.WriteLine("Hello");
}
}
// csharp_prefer_static_local_function = false
void M()
{
Hello();
void Hello()
{
Console.WriteLine("Hello");
}
}
3)分析器
アナライザはC#またはVisual Basicコードをチェックすることで、コードの品質とスタイルの問題を確認します.NET 5.0開始NET SDKに含め、別途インストールする必要はありません.プロジェクト.デフォルトでは、NET 5以降がコード分析です.プロジェクト.NET Core, .NET標準または.NET Frameworkのような他のNET実装では、コード解析を使用するには、EnableNETAアナライザのプロパティを手動でtrueに設定する必要があります.
もし...NET 5以上のSDKに移動しないか、SDKスタイルではありません.Microsoftは、NET Frameworkプロジェクトを使用するか、NuGetパッケージベースのモデルを好む場合に使用します.CodeAnalysis.NetAnalyzer NuGetパッケージにもアナライザが用意されています.パッケージベースのモデルを使用して、オンデマンドバージョンの更新を推奨します.
Reference
この問題について(Day8 .editorconfig), 我々は、より多くの情報をここで見つけました https://velog.io/@miiunii/Day8-.editorconfigテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol