tag:blogger.com,1999:blog-8596733192274108952.post8253280956332523854..comments2024-03-12T06:00:18.305+02:00Comments on Programming stuff: Пишем простой анализатор с помощью RoslynSergey Teplyakovhttp://www.blogger.com/profile/14300835272589262297noreply@blogger.comBlogger21125tag:blogger.com,1999:blog-8596733192274108952.post-91705034054899550852018-03-16T16:45:52.645+02:002018-03-16T16:45:52.645+02:00Спасибо за статью. Начал разбираться с этой платфо...Спасибо за статью. Начал разбираться с этой платформой (Roslyn).<br />В планах было заплить что-то простое, типа рефакторинга (очень громко сказано) используемых в коде строковых литералов. Короче, вот демка, если интересно:<br /><br />[img]https://media.giphy.com/media/bSVOl65K1NvI2kNq75/giphy.gif[/img] Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-56189923406402347222017-12-14T17:39:27.463+02:002017-12-14T17:39:27.463+02:00Этот комментарий был удален автором.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-49686785985301345572017-12-14T17:32:48.465+02:002017-12-14T17:32:48.465+02:00Этот комментарий был удален автором.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-77283725986911003412017-12-14T17:30:32.076+02:002017-12-14T17:30:32.076+02:00Этот комментарий был удален автором.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-7006191864885776602016-06-25T11:49:04.388+03:002016-06-25T11:49:04.388+03:00Сергей, добрый день.
Я таки сотворил рабочий анал...Сергей, добрый день. <br />Я таки сотворил рабочий анализатор, со всем CI, все ок. При этом пересматривал видео твоего выступления https://www.youtube.com/watch?v=6_nNkagaVyY - ты был абсолютно прав, утверждая что анализаторы отлично подходят для простых вещей. Пару раз по работе сталкивался с потенциально анализируемым кодом, но каждый раз сложность зашкаливала (кастомный код, часто проскакивали исключения). Необходимо было либо учитывать очень много вариантов, либо менять структуру методов, либо работать с меняющимся кодом...<br /><br />В конце концов возникла ситуация, в которой анализатор был полезен, и при этом прост как табуретка. Опять-таки, как ты и говорил, на написание ушло полчаса.<br /><br />Плюс, заметил побочный эффект: последнее время в процессе проектирования я начинаю задумываться: как и что можно проанализировать, что положительно сказывается на результате. Anonymoushttps://www.blogger.com/profile/15522521123295904583noreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-1961946959656170982016-06-20T20:32:29.857+03:002016-06-20T20:32:29.857+03:00Хм.. странно... Ну, на билд машине он-то и должен ...Хм.. странно... Ну, на билд машине он-то и должен устанавливаться как нюгет, но странно, что через vsix не падает...<br />Sergey Teplyakovhttps://www.blogger.com/profile/14300835272589262297noreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-66906078389840066842016-06-20T20:11:57.060+03:002016-06-20T20:11:57.060+03:00@Sergey: если устанавливать как NuGet пакет - билд...@Sergey: если устанавливать как NuGet пакет - билд падает.Anonymoushttps://www.blogger.com/profile/15522521123295904583noreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-71413847491913344482016-06-18T12:01:39.509+03:002016-06-18T12:01:39.509+03:00"А как ты добавляешь анализаторы?"
Взял ..."А как ты добавляешь анализаторы?"<br />Взял VSIX файл после билда, дабл кликнул, далее->далее->далее.<br />Если ткнуть ПКМ на проект с проблемным кодом и выбрать Analyze - ошибка от анализатора висит в Error List. Короче анализатор работает, но билд не стопит. Перезагрузка студии (и винды до кучи) не сработала.Anonymoushttps://www.blogger.com/profile/15522521123295904583noreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-17424691670590215502016-06-18T05:22:28.152+03:002016-06-18T05:22:28.152+03:00@Alex: только что проверил на ErrorProne.NET, и ес...@Alex: только что проверил на ErrorProne.NET, и если срабатывает анализатор, которвый детектит ошибку, то билд фейлится.<br /><br />А как ты добавляешь анализаторы? Попробуй перезапустить студию, что ли...<br />Вообще, смысл анализаторов именно в том, чтобы они были first class citizen и ломали билд.Sergey Teplyakovhttps://www.blogger.com/profile/14300835272589262297noreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-72470492290477587182016-06-17T22:49:55.263+03:002016-06-17T22:49:55.263+03:00Сергей, а можно ли настроить анализатор на слом би...Сергей, а можно ли настроить анализатор на слом билда?<br />Я использую код<br />new DiagnosticDescriptor(DiagnosticId, Title, MessageFormat, Category, DiagnosticSeverity.Error, isEnabledByDefault: true, description: Description);<br />проблемные места подсвечиваются красным, сообщение высвечивается, но Build или Rebuild проходит без проблем.Anonymoushttps://www.blogger.com/profile/15522521123295904583noreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-66107123014928521552015-12-23T04:31:40.718+02:002015-12-23T04:31:40.718+02:00С помощью тестов, или же просто запустить проект п...С помощью тестов, или же просто запустить проект по F5, откроется еще одна версия студии, в которой можно открыть тестовый проект, запустить анализатор и брякнуться в коде.Sergey Teplyakovhttps://www.blogger.com/profile/14300835272589262297noreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-45056018520064273002015-12-22T22:30:27.550+02:002015-12-22T22:30:27.550+02:00Сергей, а как дебажить анализаторы и фиксеры?Сергей, а как дебажить анализаторы и фиксеры?Anonymoushttps://www.blogger.com/profile/15522521123295904583noreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-55006164034193443152015-11-29T08:40:56.216+02:002015-11-29T08:40:56.216+02:00О, увидел твой развернутый ответ в твоем блоге:) С...О, увидел твой развернутый ответ в твоем блоге:) Спасибо за развернутое мнение.<br />Я уже работаю над ответом;)Sergey Teplyakovhttps://www.blogger.com/profile/14300835272589262297noreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-22590273371994140212015-10-28T11:49:42.828+02:002015-10-28T11:49:42.828+02:00"Структуры в C# плохо дружат с ООП…" - О..."Структуры в C# плохо дружат с ООП…" - Ой, ну как так!!?Anonymoushttps://www.blogger.com/profile/11725153141467656623noreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-90396879644356143472015-10-28T01:28:30.770+02:002015-10-28T01:28:30.770+02:00Понял. Буду ждать фидбека/вопросов, с радостью пом...Понял. Буду ждать фидбека/вопросов, с радостью помогу, если друг возникнут вопросы/предложения/пожелания...Sergey Teplyakovhttps://www.blogger.com/profile/14300835272589262297noreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-826650983773327072015-10-28T00:11:01.717+02:002015-10-28T00:11:01.717+02:00"Крутость" - здесь это возможности. Я по..."Крутость" - здесь это возможности. Я попробую написать анализатор - какой - надо решить по Code review. Выяснить "что болит".eugenehttps://www.blogger.com/profile/00368111825500921630noreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-25507202752698812912015-10-26T03:20:00.315+02:002015-10-26T03:20:00.315+02:00Ну, смотри, первое - не всегда нужно ходить к прод...Ну, смотри, первое - не всегда нужно ходить к проджектам:), чтобы спрашивать. Где-то было (кажись в каком-то фильме), что проще извиняться за что-то, что пошло не так, чем просить разрешение сделать что-то;)<br /><br />Второе, если ты делаешь непростую библиотеку или компонент повторного использования, то твои пользователи будут тебе благодарны, если с ним вместе будет идти анализатор. Здесь, я думаю, не должно быть вопросов в пользе (если они есть, готов обсудить).<br /><br />Ну и теперь последний вариант - кастомные анализаторы. Тут я готов привести некоторые примеры.<br /><br />Например, у нас в команде много всего иммутабельного, но при этом R# используется не всеми, поэтому иногда проскакивают баги, что вызывается метод "мутатор", возвращающий новый экземпляр, но при этом он никуда не присваивается (если кажется, что это нереальный кейс, то пару месяцев назад был злой баг в Ролзине, полностью аналогичный приведенному).<br /><br />Или, другой пример, у нас есть проблемы с подавлением исключений и записью ex.Message. Обычно такие вещи ловятся во время ревью, но иногда проскакивают. Подобный анализатор уже сейчас выполняет успешно эту роль.<br /><br />Просто возьми открой последние десяток-другой код ревью и посмотри, какие комменты обычно там постятся... Вполне возможно, что их однообразие подскажет, где могут помочь анализаторы.<br /><br />З.Ы. Я правда предлагаю лично тебе попробовать написать простой анализатор, чтобы ощущение "крутости" тебя покинуло.Sergey Teplyakovhttps://www.blogger.com/profile/14300835272589262297noreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-22929940315206572462015-10-25T21:20:35.433+02:002015-10-25T21:20:35.433+02:00Сереж, все равно не понимаю, как и где это использ...Сереж, все равно не понимаю, как и где это использовать. Сценарий, я прихожу к прожекту и говорю, что нам надо допилить анализатор, который поможет нам... что? Быстрее станем писать - вряд ли. Но это ладно, продавить можно. Но как это увидеть? Это как себя внутренне воспитать надо, чтобы увидеть этот "арбитраж" и сказать, вот точно, это не увидели (VS, Resharper...) и мне и команде это поможет... С точки зрения технология и крутости - вопросов нет. У меня по-прежнему есть вопросы к практическому применению этих фич...eugenehttps://www.blogger.com/profile/00368111825500921630noreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-80442373780126309272015-10-23T18:01:12.287+03:002015-10-23T18:01:12.287+03:00Без тестов и фиксирует там их полтора десятка.
А ...Без тестов и фиксирует там их полтора десятка. <br />А разве раньше где-то было проще?Sergey Teplyakovhttps://www.blogger.com/profile/14300835272589262297noreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-92088634207415474302015-10-23T09:46:41.438+03:002015-10-23T09:46:41.438+03:00Простой анализатор, занявший под сотню строк кода....Простой анализатор, занявший под сотню строк кода. Куда катится мир :)MirrorBoyhttps://www.blogger.com/profile/08273827533792888370noreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-77958763762732986182015-10-22T08:36:32.125+03:002015-10-22T08:36:32.125+03:00Смотрел Ваш доклад 10/17/2015 с этой-же темой. Спа...Смотрел Ваш доклад 10/17/2015 с этой-же темой. Спасибо большое за информацию!Anonymousnoreply@blogger.com