Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Анализ качества исходного кода, Посоветуйте инструменты и критерии 
:(
    Опции темы
ivashkanet
Дата 23.1.2008, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: нет
Всего: 149



Всем привет.

Возникла задача проанализировать качество исходного кода одного проекта.
Никогда с такими задачами не сталкивался, поэтому даже не знаю по каким критериям его проверять...

Набросал за утро следующее:
1) Соответствие стандартам (тут нужна тулза, кот прошлась бы по коду)
2) Качество модели классов: сложность поддержки, расширения, ...
3) Читабельность (чисто субъективная характеристика, но, ихмо, очень важная)
4) Объем и сложность функций (можно отнести к первому пункту)
5) Всякие неиспользуемые, неинициализированные переменные, неотловленые эксепшены, частое исползование копипаста и дыды.


Проект на .Net, но это касается только тулзы для анализа кода, все остальное будет делаться руками, так что приветствуются идеи и критерии всех, а не только .net-чиков.

Зарание спасибо, ivashkanet.
PM MAIL WWW ICQ   Вверх
tol05
Дата 23.1.2008, 11:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 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, а парсингом можно smile, потом вызываю фоново aspnet_compiler.exe, потом, фоново - FxCop в командном режиме.

Могу кинуть проект на мыло. Но нужно немного времени (наши Code conventions ты не знаешь, прийдется многое до-комментировать).

P.S. а некоторые вещи я так и не смог проверить... ни моими танцами с бубном, ни FxCop-ом.

Это сообщение отредактировал(а) tol05 - 23.1.2008, 11:46


--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
Retro
Дата 23.1.2008, 11:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Диалектик
***


Профиль
Группа: Участник Клуба
Сообщений: 1934
Регистрация: 28.6.2005
Где: Киев

Репутация: нет
Всего: 117



ivashkanet, привет.

Для анализа кода нужна хорошая QA-платформа, а насколько я знаю все серьезные приложения в данной сфере платные, причем хорошо платные. Если кто-то подкинет хорошую программку, то скажу большое спасибо. smile 
Как пример. Средней паршивости программа.

В принципе это работа для грамотного QA-специалиста, который знает стандарты и критерии оценки. И сможет изложить все огрехи в виде отчета. Это отдельная специальность требующая соответственной подготовки, подручными средствами тяжело обойтись в серьезном проекте.
PM MAIL   Вверх
batigoal
Дата 23.1.2008, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: нет
Всего: 151



Для Java в средах разработки часто имеются code ispector'ы, осуществляющие:

а) стилистическую проверку (стандарты именования, обращение к статическим полям через имя класса, а не экземпляра и т.п.)
б) некоторую проверку семантики (неиспользуемые публичные методы, например)
в) проверку "откомментированности" кода
г) и кое-что ещё.

Мне больше всего нравится инспектор в IntelliJ Idea. Очень много всего сечёт.

Наверняка, и для .NET такие штуки есть.


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
ivashkanet
Дата 23.1.2008, 12:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: нет
Всего: 149



Что именно проверять нужно я не знаю, это все еще придет.
Код этот писался не нами, так что непонятно какие стандарты там использовались.

Цитата(batigoal @  23.1.2008,  10:53 Найти цитируемый пост)
Для Java в средах разработки часто имеются code ispector'ы, осуществляющие:

Для .Net тоже есть (например в 2008 студии, только я еще не разобрался как с ним работать). Дело только в том, что я с этим никогда не работал.

tol05, Retro, спасибо за линки я гляну.

Цитата(Retro @  23.1.2008,  10:48 Найти цитируемый пост)
Это отдельная специальность требующая соответственной подготовки

Эхххх, жисть моя жестянка. А что еще делать? Начальство сказало делать, значит делать smile 
PM MAIL WWW ICQ   Вверх
batigoal
Дата 23.1.2008, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: нет
Всего: 151



Цитата(ivashkanet @  23.1.2008,  13:20 Найти цитируемый пост)
Код этот писался не нами, так что непонятно какие стандарты там использовались.

Во-первых, это настраивается, а во-вторых, навряд ли они отступают от рекомендованных Code Conventions.


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
HalkaR
Дата 23.1.2008, 12:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пуфыстый назгул
****


Профиль
Группа: Экс. модератор
Сообщений: 2132
Регистрация: 8.12.2002
Где: В Москве

Репутация: нет
Всего: 42



Помогут тебе ReSharper и обыкновенный Code Analysis из Студии smile
PM MAIL   Вверх
ivashkanet
Дата 23.1.2008, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: нет
Всего: 149



Цитата(HalkaR @  23.1.2008,  11:37 Найти цитируемый пост)
обыкновенный Code Analysis из Студии

Да, стал браузить инет и нашел, что именно его все и советуют. Но он есть только Team System Edition. Будем искать его и разбираться. На данный момент это, ИМХО, самый перспективный вариант.

PM MAIL WWW ICQ   Вверх
tol05
Дата 23.1.2008, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1632
Регистрация: 21.12.2006
Где: Харьков

Репутация: нет
Всего: 170



 smile 


не, ну я не спорю, решарпер крут... Только мне нужно было сайты из source safe брать и проверять. По нескольку тысяч файлов. Так что открывать их в студии и решарпером проверять... как-то даже не думал.

Говорю то, что делал, а выбирать - вам  smile 

P.S. ну ... может про "несколько тысяч" я и "загнул"... но больше 30 проектов... Тысяча где-то была...

Это сообщение отредактировал(а) tol05 - 23.1.2008, 12:53


--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
ivashkanet
Дата 23.1.2008, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: нет
Всего: 149



tol05, насколько я понял, открываешь проект в студии и командуешь: анализировать.
Он тебе выкидывает кучу ворнингов: тут не так написано, здесь фигня заюзана,...
И ты потом это все анализируешь.

Он даже XML-re создает с результатами анализа, только я еще не разобрался кому ее можно скормить, чтобы получить сгруппированный отчет... Хотя можо самому трансформацию написать...
PM MAIL WWW ICQ   Вверх
tol05
Дата 23.1.2008, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1632
Регистрация: 21.12.2006
Где: Харьков

Репутация: нет
Всего: 170



у нас 2005-я юзается, там Code Analysis есть?
да даже если бы и была... Она проверяет то, что написано в моих "CodeConventions"?

не думаю. Иначе мне бы не стали платить эстимэйты за мою тулзовину. 

Подвожу итог мне было поставлена задача и я ее выполнил лписанным мной способом. smile


--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
ivashkanet
Дата 23.1.2008, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: нет
Всего: 149



tol05, да, VS2005 Team Edition содержит эту фичу.
Цитата(tol05 @  23.1.2008,  12:19 Найти цитируемый пост)
CodeConventions

Да, пишешь свой класс правил и поехал.
Даже больше, можно подключать FxCop-ие правила.
PM MAIL WWW ICQ   Вверх
ivashkanet
Дата 23.1.2008, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: нет
Всего: 149



Нашел такую страничку: http://sharptoolbox.com/categories/code-an...dards-verifiers просматриваю...
PM MAIL WWW ICQ   Вверх
tol05
Дата 23.1.2008, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1632
Регистрация: 21.12.2006
Где: Харьков

Репутация: нет
Всего: 170



ivashkanet, когда мне таск поставили, я первым делом тулзы искать кинулся. И многие пересмотрел. smile
Повторяю - они проверяют только тот набор правил, который определил разработчик каждой конкретной тулзы. 
Мне не подошла ни одна (я имею в виду полностью). 

Поэтому я не только
Цитата(ivashkanet @  23.1.2008,  13:20 Найти цитируемый пост)
свой класс правил и поехал

но и еще дописал то, что "не ездит" на FxCop. А так, чтобы подбирать несколько тулзовин разных производителей и 20 правил проверять одной, 15 - другой и еще тремя тулзованами - по 1 правилу ... Моих заказчиков такой бардак не устраивал. 
Им нужно чтобы было по максимуму: выбрать две папки и нажать на две кнопки, получить файл и отправить его девелоперу читать.


Это сообщение отредактировал(а) tol05 - 23.1.2008, 17:58


--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
ivashkanet
Дата 23.1.2008, 19:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: нет
Всего: 149



Цитата(tol05 @  23.1.2008,  16:48 Найти цитируемый пост)
Мне не подошла ни одна (я имею в виду полностью). 

У меня нет конкретного набора правил. Мне бы вообще хоть как-тол проверить smile
PM MAIL WWW ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
arilou

НА ЗЛОБУ ДНЯ: Дорогие посетители, прошу обратить внимание на то, что новые темы, касающиеся новых вопросов, создаются кнопкой "Новая тема", а не "Ответить"! Любые оффтопиковые вопросы, заданные в текущих темах, будут удалены.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, arilou.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | УП: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0576 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.