Doświadczyłem kilku niewygodnych sporadycznych błędów, w których metody asynchroniczne zwracały pustkę zamiast zadania i dlatego nie były oczekiwane. Aby uniknąć takich problemów w przyszłości, próbuję stworzyć niestandardowy wzór resharpera, aby wyróżnić takie metody, jak ostrzeżenia.Jak skonfigurować program resharper, aby ostrzegał o metodach asynchronicznych, które zwracają nieważne
Utworzyłem wzór takiego:
async void $methodname$($arguments$)
{
$statements$
}
(gdzie argumenty i oświadczenia umożliwić nieograniczoną liczbę i sposób każdy pasuje to identyfikator zawierający 1 lub więcej znaków prawnych Identifier)
dziwne Podkreśla wszystkie nieważne metody, a nie tylko asynchroniczne metody. Czy ktoś może zobaczyć mój błąd? Ponieważ wydaje się, że wspólny wzorzec próbuje się dopasować, a Google go nie zgłasza, wątpię, czy jest to nierozwiązany problem w Reshaper 8.2.1.
P.S. Wiem, że mój wzór nie będzie pasował do metody rodzajowe - czy mogę dostać pracy dla tych nierodzajową Zrobię to później)
UPDATE
Jak podkreślono w komentarzach Zdaję sobie sprawę, istnieją liczba fałszywych alarmów i fałszywych negatywów, których ta reguła nie byłaby w stanie obsłużyć. Obawiam się tutaj, jak dopasować asynchroniczne do pracy w resharperie - kiedy to działa, mogę poszukać reguły dokładniejszej.
Co jeśli '$ nazwa_metody $' musi 'czekać' na wywołanie metody? – 48klocs
Moje przeprosiny, jeśli moje pytanie jest niejednoznaczne, powodem, dla którego błędy wywołane tymi metodami były przeczące, było to, że metody, które chcę znaleźć, były rzeczywiście asynchroniczne i wymagały oczekiwania. Poprawka polega na tym, aby metody zwracały Zadanie, a zatem zachęcały/ostrzegały dzwoniących, by czekali na ich zakończenie. Prawie wszystkie metody asynchroniczne powinny zwracać zadanie lub zadanie. –
Typhlosaurus
Nie będzie możliwe uwzględnienie programów obsługi zdarzeń na najwyższym poziomie, które naprawdę powinny być "asynchroniczne".Nie odnosi się również do asynchronicznych lambad, które w moich doświadczeniach są najbardziej prawdopodobnymi przyczynami niezamierzonej metody 'async void'. – Servy