Уже давно хотел поразбираться с анализаторами на основе Розлина. Тем более, что меня уже был опыт создания плагинов для Resharper-а (R# Contract Editor Extension), поэтому хотелось сравнить разные инфраструктуры и удобство использования. Есть идея переписать этот плагин с помощью анализаторов Roslyn-а, но я решил начать с чего-то попроще.
Цель недельного проекта была такая: сделать простой анализатор, который будет показывать типовые ошибки обработки исключений. Самые болезненные с моей точки зрения такие:
- Повторная генерация исключений с помощью throw ex;
- “Проглатывание” всех исключений с помощью пустых блоков catch {} или catch(Exception) {}.
- “Проглатывание” исключений в определенных ветках блока catch.
- Сохранение в логгах только сообщения ex.Message, теряя при этом потенциально важную информацию о месте возникновения исключения.
- Некорректное пробрасывание новых исключений из блока catch.