Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
| 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.