| プロパティ | 価値 |
|---|---|
| ルール識別子 | CA1877 |
| タイトル |
Path.CombineまたはPath.Joinオーバーロードを使用する |
| カテゴリ | パフォーマンス |
| 修正が破壊的であるか非破壊的であるか | Non-breaking |
| .NET 10 で既定で有効 | 提案として |
原因
パスの構築には、複数の連続する Path.Combine または Path.Join 操作が使用されます。
ルールの説明
複数の連続する Path.Combine または Path.Join 操作を使用する場合は、複数のパス セグメントを受け入れるオーバーロードを使用する方が効率的です。 この方法では、割り当てと関数呼び出しの数が減り、パフォーマンスが向上します。 どちらのメソッドも、複数のパラメーターを受け取るオーバーロードを提供するため、連続する操作を 1 回の呼び出しに折りたためます。
違反を修正する方法
連続する Path.Combine 操作または Path.Join 操作を、すべてのパス セグメントを受け入れるオーバーロードを使用する単一の呼び出しに置き換えます。
この変換を自動的に実行する コード修正 プログラムを使用できます。
Example
次のコード スニペットは、CA1877 の違反を示しています。
public string GetFilePath(string folder, string subfolder, string filename)
{
// Violation.
string temp = Path.Combine(folder, subfolder);
return Path.Combine(temp, filename);
}
public string GetLogPath(string baseDir, string date, string category)
{
// Violation.
return Path.Join(Path.Join(baseDir, date), category);
}
Public Function GetFilePath(folder As String, subfolder As String, filename As String) As String
' Violation.
Dim temp As String = Path.Combine(folder, subfolder)
Return Path.Combine(temp, filename)
End Function
Public Function GetLogPath(baseDir As String, [date] As String, category As String) As String
' Violation.
Return Path.Join(Path.Join(baseDir, [date]), category)
End Function
次のコード スニペットは、違反を修正します。
public string GetFilePath(string folder, string subfolder, string filename)
{
// No violation.
return Path.Combine(folder, subfolder, filename);
}
public string GetLogPath(string baseDir, string date, string category)
{
// No violation.
return Path.Join(baseDir, date, category);
}
Public Function GetFilePath(folder As String, subfolder As String, filename As String) As String
' No violation.
Return Path.Combine(folder, subfolder, filename)
End Function
Public Function GetLogPath(baseDir As String, [date] As String, category As String) As String
' No violation.
Return Path.Join(baseDir, [date], category)
End Function
警告を抑制するタイミング
パフォーマンスが問題でない場合は、この規則からの警告を抑制しても安全です。
警告を抑制する
単一の違反を抑制するだけの場合は、ソース ファイルにプリプロセッサ ディレクティブを追加して無効にしてから、規則をもう一度有効にします。
#pragma warning disable CA1877
// The code that's violating the rule is on this line.
#pragma warning restore CA1877
ファイル、フォルダー、またはプロジェクトのルールを無効にするには、その重大度をnoneでに設定します。
[*.{cs,vb}]
dotnet_diagnostic.CA1877.severity = none
詳細については、「 コード分析の警告を抑制する方法」を参照してください。
こちらも参照ください
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET