![]() |
|
|
![]()
|
|
| ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: нет Всего: 149 |
Всем привет.
Возникла задача проанализировать качество исходного кода одного проекта. Никогда с такими задачами не сталкивался, поэтому даже не знаю по каким критериям его проверять... Набросал за утро следующее: 1) Соответствие стандартам (тут нужна тулза, кот прошлась бы по коду) 2) Качество модели классов: сложность поддержки, расширения, ... 3) Читабельность (чисто субъективная характеристика, но, ихмо, очень важная) 4) Объем и сложность функций (можно отнести к первому пункту) 5) Всякие неиспользуемые, неинициализированные переменные, неотловленые эксепшены, частое исползование копипаста и дыды. Проект на .Net, но это касается только тулзы для анализа кода, все остальное будет делаться руками, так что приветствуются идеи и критерии всех, а не только .net-чиков. Зарание спасибо, ivashkanet. |
|||
|
||||
| tol05 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: нет Всего: 170 |
посмотри этот топик, я как раз об этом говорил.
Есть Microsoft Code Conventions (как бы полуофициально, recomendated) и для их проверки разработана утилита FxCop и библиотеки, содержащие сами rules (бизнес-классы, реализующие определенные проверки). Архитектура известная - плагины, как и в unit testing, ccnet и т.д. и т.п. Можно работать как в итерактивном, так и в командном режиме, с выводом репорта в файл. В инете много инфы по этому поводу. Но для меня было одно "но" (см. топик) - FxCop не проверит коментарии, curly braces чтоб каждая на отдельной строке была, использование сокращенных типов (int, а не System.Int32) и т.п. Компилятор многие вещи игнорирует и в откомпилированной dll/exe твоего правило может вообще не быть. Да еще мне сайты нужно было проверять, а они так просто в dll не билдаются. Нужно aspnet_compiler.exe вызывать... Так что я сделал 2-х ярусную проверку: - сделал dll для FxCop с моими правилами, с теми, что можно хоть как-то проверить - мое виндовс-приложение требует входные данные (пути к сайту, пути к моим FxCop-dll), и сначала текстовым и ReGex парсингом проверяю то, что нельзя проверить FxCop-dll, а парсингом можно Могу кинуть проект на мыло. Но нужно немного времени (наши Code conventions ты не знаешь, прийдется многое до-комментировать). P.S. а некоторые вещи я так и не смог проверить... ни моими танцами с бубном, ни FxCop-ом. Это сообщение отредактировал(а) tol05 - 23.1.2008, 11:46 -------------------- На хорошей работе и сны хорошие снятся. |
|||
|
||||
| Retro |
|
|||
![]() Диалектик ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1934 Регистрация: 28.6.2005 Где: Киев Репутация: нет Всего: 117 |
ivashkanet, привет.
Для анализа кода нужна хорошая QA-платформа, а насколько я знаю все серьезные приложения в данной сфере платные, причем хорошо платные. Если кто-то подкинет хорошую программку, то скажу большое спасибо. Как пример. Средней паршивости программа. В принципе это работа для грамотного QA-специалиста, который знает стандарты и критерии оценки. И сможет изложить все огрехи в виде отчета. Это отдельная специальность требующая соответственной подготовки, подручными средствами тяжело обойтись в серьезном проекте. |
|||
|
||||
| batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: нет Всего: 151 |
Для Java в средах разработки часто имеются code ispector'ы, осуществляющие:
а) стилистическую проверку (стандарты именования, обращение к статическим полям через имя класса, а не экземпляра и т.п.) б) некоторую проверку семантики (неиспользуемые публичные методы, например) в) проверку "откомментированности" кода г) и кое-что ещё. Мне больше всего нравится инспектор в IntelliJ Idea. Очень много всего сечёт. Наверняка, и для .NET такие штуки есть. -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
| ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: нет Всего: 149 |
Что именно проверять нужно я не знаю, это все еще придет.
Код этот писался не нами, так что непонятно какие стандарты там использовались.
Для .Net тоже есть (например в 2008 студии, только я еще не разобрался как с ним работать). Дело только в том, что я с этим никогда не работал. tol05, Retro, спасибо за линки я гляну. Эхххх, жисть моя жестянка. А что еще делать? Начальство сказало делать, значит делать |
|||
|
||||
| batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: нет Всего: 151 |
Во-первых, это настраивается, а во-вторых, навряд ли они отступают от рекомендованных Code Conventions. -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
| HalkaR |
|
|||
![]() Пуфыстый назгул ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2132 Регистрация: 8.12.2002 Где: В Москве Репутация: нет Всего: 42 |
Помогут тебе ReSharper и обыкновенный Code Analysis из Студии
|
|||
|
||||
| ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: нет Всего: 149 |
Да, стал браузить инет и нашел, что именно его все и советуют. Но он есть только Team System Edition. Будем искать его и разбираться. На данный момент это, ИМХО, самый перспективный вариант. |
|||
|
||||
| tol05 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: нет Всего: 170 |
не, ну я не спорю, решарпер крут... Только мне нужно было сайты из source safe брать и проверять. По нескольку тысяч файлов. Так что открывать их в студии и решарпером проверять... как-то даже не думал. Говорю то, что делал, а выбирать - вам P.S. ну ... может про "несколько тысяч" я и "загнул"... но больше 30 проектов... Тысяча где-то была... Это сообщение отредактировал(а) tol05 - 23.1.2008, 12:53 -------------------- На хорошей работе и сны хорошие снятся. |
|||
|
||||
| ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: нет Всего: 149 |
tol05, насколько я понял, открываешь проект в студии и командуешь: анализировать.
Он тебе выкидывает кучу ворнингов: тут не так написано, здесь фигня заюзана,... И ты потом это все анализируешь. Он даже XML-re создает с результатами анализа, только я еще не разобрался кому ее можно скормить, чтобы получить сгруппированный отчет... Хотя можо самому трансформацию написать... |
|||
|
||||
| tol05 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: нет Всего: 170 |
у нас 2005-я юзается, там Code Analysis есть?
да даже если бы и была... Она проверяет то, что написано в моих "CodeConventions"? не думаю. Иначе мне бы не стали платить эстимэйты за мою тулзовину. Подвожу итог мне было поставлена задача и я ее выполнил лписанным мной способом. -------------------- На хорошей работе и сны хорошие снятся. |
|||
|
||||
| ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: нет Всего: 149 |
tol05, да, VS2005 Team Edition содержит эту фичу.
Да, пишешь свой класс правил и поехал. Даже больше, можно подключать FxCop-ие правила. |
|||
|
||||
| ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: нет Всего: 149 |
Нашел такую страничку: http://sharptoolbox.com/categories/code-an...dards-verifiers просматриваю...
|
|||
|
||||
| tol05 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: нет Всего: 170 |
ivashkanet, когда мне таск поставили, я первым делом тулзы искать кинулся. И многие пересмотрел.
Повторяю - они проверяют только тот набор правил, который определил разработчик каждой конкретной тулзы. Мне не подошла ни одна (я имею в виду полностью). Поэтому я не только но и еще дописал то, что "не ездит" на FxCop. А так, чтобы подбирать несколько тулзовин разных производителей и 20 правил проверять одной, 15 - другой и еще тремя тулзованами - по 1 правилу ... Моих заказчиков такой бардак не устраивал. Им нужно чтобы было по максимуму: выбрать две папки и нажать на две кнопки, получить файл и отправить его девелоперу читать. Это сообщение отредактировал(а) tol05 - 23.1.2008, 17:58 -------------------- На хорошей работе и сны хорошие снятся. |
|||
|
||||
| ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: нет Всего: 149 |
У меня нет конкретного набора правил. Мне бы вообще хоть как-тол проверить |
|||
|
||||
![]()
|
|
|
НА ЗЛОБУ ДНЯ: Дорогие посетители, прошу обратить внимание на то, что новые темы, касающиеся новых вопросов, создаются кнопкой "Новая тема", а не "Ответить"! Любые оффтопиковые вопросы, заданные в текущих темах, будут удалены. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, arilou. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | УП: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |