CA1839: A Environment.ProcessPath használata a Process.GetCurrentProcess() helyett. MainModule.FileName
Tulajdonság | Érték |
---|---|
Szabályazonosító | CA1839 |
Cím | A Process.GetCurrentProcess() helyett használja a Environment.ProcessPath parancsot. MainModule.FileName |
Kategória | Teljesítmény |
A javítás kompatibilitástörő vagy nem törik | Nem törés |
Alapértelmezés szerint engedélyezve a .NET 8-ban | Javaslatként |
Ok
A folyamatot kezdeményező fájl elérési útjának lekérésére Environment.ProcessPathhasználhatóProcess.GetCurrentProcess().MainModule.FileName
.
Szabály leírása
System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName
költséges:
- Lefoglal egy és ProcessModule egy Process példányt, általában csak azért, hogy lekérje a
FileName
. - A Process példányt el kell dobni, ami hatással van a teljesítményre.
- Könnyű elfelejteni a példány meghívását Dispose()Process .
- Ha semmi más nem használja a
Process
példánytFileName
, akkor a hivatkozott típusok gráfjának növelésével szükségtelenül nő a csatolt méret. - Ezt az API-t kissé nehéz felderíteni vagy megtalálni.
System.Environment.ProcessPath
elkerüli ezeket a hátrányokat, és ugyanazokat az információkat állítja elő.
Megjegyzés:
System.Environment.ProcessPath a .NET 6-tól kezdve érhető el.
Szabálysértések kijavítása
A szabálysértés manuálisan is kijavítható, vagy bizonyos esetekben a Gyorsműveletek segítségével kijavíthatja a kódot a Visual Studióban.
A következő két kódrészlet a szabály megsértését és a hiba elhárítását mutatja be:
using System.Diagnostics;
class MyClass
{
void MyMethod()
{
string path = Process.GetCurrentProcess().MainModule.FileName; // Violation occurs
}
}
Imports System.Diagnostics
Class MyClass
Private Sub MyMethod()
Dim path As String = Process.GetCurrentProcess().MainModule.FileName ' Violation occurs.
End Function
End Class
using System.Diagnostics;
class MyClass
{
void MyMethod()
{
string path = System.Environment.ProcessPath; // Violation fixed
}
}
Imports System.Diagnostics
Class MyClass
Private Sub MyMethod()
Dim path As String = System.Environment.ProcessPath ' Violation fixed.
End Function
End Class
Tipp.
Ehhez a szabályhoz kódjavítás érhető el a Visual Studióban. A használathoz helyezze a kurzort a szabálysértésre, és nyomja le a Ctrl+ billentyűt. (pont). A megjelenő lehetőségek listájában válassza a "Environment.ProcessPath" lehetőséget.
Mikor kell letiltani a figyelmeztetéseket?
Nyugodtan el lehet tiltani a szabály megsértését, ha nem aggódik a szükségtelen kiosztás és a ProcessProcessModule példányok végleges elidegenítése által gyakorolt teljesítményhatás miatt.
Figyelmeztetés mellőzése
Ha csak egyetlen szabálysértést szeretne letiltani, adjon hozzá előfeldolgozási irányelveket a forrásfájlhoz a szabály letiltásához és újbóli engedélyezéséhez.
#pragma warning disable CA1839
// The code that's violating the rule is on this line.
#pragma warning restore CA1839
Ha le szeretné tiltani egy fájl, mappa vagy projekt szabályát, állítsa annak súlyosságát none
a konfigurációs fájlban.
[*.{cs,vb}]
dotnet_diagnostic.CA1839.severity = none
További információ: Kódelemzési figyelmeztetések letiltása.
Kapcsolódó információk
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: