Bagikan melalui


CA1877: Gunakan kelebihan beban 'Path.Combine' atau 'Path.Join'

Harta benda Nilai
Identifikasi Aturan CA1877
Title Menggunakan Path.Combine atau Path.Join kelebihan beban
Kategori Kinerja
Perbaikan bersifat merusak atau tidak merusak Non-breaking
Diaktifkan secara default di .NET 10 Sebagai saran

Penyebab

Beberapa operasi atau Path.Join berturut-turut Path.Combine digunakan untuk membangun jalur.

Deskripsi aturan

Saat Anda menggunakan beberapa operasi atau Path.Join berturut-turutPath.Combine, lebih efisien untuk menggunakan kelebihan beban yang menerima beberapa segmen jalur. Pendekatan ini mengurangi jumlah alokasi dan panggilan fungsi, meningkatkan performa. Kedua metode menyediakan kelebihan beban yang menerima beberapa parameter, memungkinkan Anda untuk menciutkan operasi berturut-turut menjadi satu panggilan.

Cara memperbaiki pelanggaran

Ganti operasi atau Path.Join berturut-turut Path.Combine dengan satu panggilan menggunakan kelebihan beban yang menerima semua segmen jalur.

Perbaikan kode yang secara otomatis melakukan transformasi ini tersedia.

Example

Cuplikan kode berikut menunjukkan pelanggaran 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

Cuplikan kode berikut memperbaiki pelanggaran:

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

Kapan harus menekan peringatan

Aman untuk menekan peringatan dari aturan ini jika performa tidak menjadi perhatian.

Menyembunyikan peringatan

Jika Anda hanya ingin menyembunyikan satu pelanggaran, tambahkan arahan praprosedur ke file sumber Anda untuk dinonaktifkan lalu aktifkan kembali aturannya.

#pragma warning disable CA1877
// The code that's violating the rule is on this line.
#pragma warning restore CA1877

Untuk menonaktifkan aturan untuk file, folder, atau proyek, atur tingkat keparahannya ke none dalam file konfigurasi.

[*.{cs,vb}]
dotnet_diagnostic.CA1877.severity = none

Untuk informasi selengkapnya, lihat Cara menyembunyikan peringatan analisis kode.

Lihat juga