Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Анализ качества исходного кода, Посоветуйте инструменты и критерии 
:(
    Опции темы
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   Вверх
batigoal
Дата 23.1.2008, 20:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(ivashkanet @  23.1.2008,  20:36 Найти цитируемый пост)
У меня нет конкретного набора правил. Мне бы вообще хоть как-тол проверить

Если не знаешь, куда плывёшь, никакой ветер не будет попутным (с) либо Спиноза, либо Сенека, либо Конфуций


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


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


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

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



Цитата(batigoal @  23.1.2008,  19:08 Найти цитируемый пост)
Если не знаешь, куда плывёшь, никакой ветер не будет попутным (с) либо Спиноза, либо Сенека, либо Конфуций

Либо все вместе взятые, но толку от этого никакого...

batigoal, цель этого топика и выяснить по каким критериям оценивать исходники. На данном этапе меня вполне устраивают правила типа "Microsoft .net best practices" которые и заявляются в большинстве таких тулзовин.
PM MAIL WWW ICQ   Вверх
arilou
Дата 24.1.2008, 11:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


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

Репутация: 2
Всего: 61



Цитата(ivashkanet @  23.1.2008,  20:35 Найти цитируемый пост)
Microsoft .net best practices" которые и заявляются в большинстве таких тулзовин. 

+1 за FxCop, только относись к его предложениям с известной долей скептицизма. 

А критерии оценки тебе что, не сообщили? Задача вида "пойди куда-нибудь, сделай что-нибудь и напиши отчет"?  smile 


--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
ivashkanet
Дата 24.1.2008, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



arilou, ситуация следующая: один постоянный клиент попросил проревьювать исходный код (хз где он его взял), мы думаем брать/не брать (так как опыта анализа кода у нас нет), попросили меня прозондировать этот вопрос, вот я и зондирую (паралельно участвуя в основном проекте, где сейчас просто засада...)...

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


Великий МунаБудвин
****


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

Репутация: 2
Всего: 61



ivashkanet, дык спосите у него, что ему нужно в результате. Ревьюить можно по-разному, например на секьюрность, или соответствие стандарту кодирования (какому?), или на расширяемость, или под конкретную задачу, и т.п.


--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
ivashkanet
Дата 24.1.2008, 17:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



arilou, да понимаю я все это.
Дело в том, что он хочет чтобы мы проверили на "хорошо ли написан код". А если мы ему начнем перечислять 
Цитата(arilou @  24.1.2008,  16:14 Найти цитируемый пост)
на секьюрность, или соответствие стандарту кодирования (какому?), или на расширяемость, или под конкретную задачу

то он скажет: ДА, Да, ДА!!!, и это заверните.

Добавлено через 1 минуту и 30 секунд
Тем более сейчас все это затихло, так я держу крестики, чтобы не выползло опять  smile 

Это сообщение отредактировал(а) ivashkanet - 24.1.2008, 17:40
PM MAIL WWW ICQ   Вверх
arilou
Дата 25.1.2008, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


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

Репутация: 2
Всего: 61



ivashkanet, ну смари сам  smile 


--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
arilou

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


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

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


 




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


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

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