LINUX.ORG.RU

Оценка качества кода

 ,


3

6

Всем привет!

Интересно, чем вы пользуетесь для сабжа? Интересно оценить сложность среднего размера проекта (где-то 1,2Мб С++ кода). Первое, что в голову пришло: cppcheck просто как анализатор того, сколько накосячено; pmccabe для заценить сколько ветвлений в функциях. А чем посоветуете оценить взаимосвязи модулей? Ну и вообще subj )))

Всем заранее спасибо,
velik


Ответ на: комментарий от ckotinko

О, вспомнил какой-то гуй для игр CEGUI, там просто сатанинская инициализация, что-то пропустил и попробуй угадай откуда глючит.

А документация по инициализации для кого написана? Они не поленились и сделали поддержку разных рендереров, оставив возможность самостоятельно прикрутить все, что захочется.

полного рецепта-то инициализации нету у автора.

Какой-то рецепт есть в документации. Кроме того сорцы cegui открыты.

а там еще прикол с отпуском клавиш когда надо в режим первого лица перейти. тоже знать надо.

Что за режим первого лица и каким он боком к cegui?

p.s. Мы не используем cegui, у нас своя гуйня с поэтессами и преферансом. А для дебаг-панели используем imgui.

andreyu ★★★★★
()
Ответ на: комментарий от ckotinko

Кроме того сорцы cegui открыты.

и што?

А то, что вам никто не запрещает заглянуть в них и понять, почему у вас что-то не работает.

andreyu ★★★★★
()
Ответ на: комментарий от andreyu

блдь а чтоб понять как телевизор работает, я должен его открыть и посмотреть электрическую схему и прошивку разобрать?

а чтоб пылесосом пользоваться надо изучить его внутренности обязательно?

ckotinko ☆☆☆
()
Ответ на: комментарий от ckotinko

блдь а чтоб понять как телевизор работает, я должен его открыть и посмотреть электрическую схему и прошивку разобрать?

Нет, вы можете:
1. Воспользоваться методом научного тыка.
2. Прочитать документацию.
3. Использовать свой опыт по использованию других телевизоров.

Но если вы хотите, расширить функциональность вашего телевизора, то вам придется заглянуть в его нутро и, желательно, в принципиальную схему.

а чтоб пылесосом пользоваться надо изучить его внутренности обязательно?

Необязательно. Но лично я не буду против, если вы решите заглянуть внутрь своего пылесоса.

andreyu ★★★★★
()
Ответ на: комментарий от Deleted

Это типичная практика. Вопросы конечно же не про строчку кода i += 2.

dzidzitop ★★
()
Ответ на: комментарий от panzerito

в смысле?

то есть если я хочу сделать изделие на основе К1986ВМ14 например, я должен сам догадаться как оно работает методом тыка? а дрова для радеона надо было писать как нувошники - дампя записи в регистры и гадая на кофейной сгущенке?

ckotinko ☆☆☆
()
Ответ на: комментарий от andreyu

Нет, вы можете:
1. Воспользоваться методом научного тыка.

отличный подход. вот так и надо все программы писать: методом тыка. чтоб глючило и крючило.

2. Прочитать документацию.

вы документацию на телеки видимо никогда не видели, там есть примеры использования. О_о. даже с картинками и на нескольких языках.

а вот примеры использования API в 99.9999% опенсорсных проектов отсутствуют как класс. потому что наши программы не для того, чтоб ими пользовались - они для души пишутся, а кто захочет ими пользоваться пусть сука страдает как мы страдали и деды наши страдали и пусть его дети страдают и внуки до седьмого колена. хрен им врагам а не нормальная документация.

3. Использовать свой опыт по использованию других телевизоров.

а я напомню собравшимся, что этот тред про программирование. и каким хером опыт работы с api postgres применим к firebird например - сиё загадка большая.

ckotinko ☆☆☆
()
Ответ на: комментарий от ckotinko

отличный подход. вот так и надо все программы писать: методом тыка. чтоб глючило и крючило.

Вы сами выбрали наиболее подходящий для себя способ.

а я напомню собравшимся, что этот тред про программирование.

Вы себе об этом напомните:
Оценка качества кода (комментарий)

andreyu ★★★★★
()
Последнее исправление: andreyu (всего исправлений: 1)

Когда надо было быстро оценить сложность доработки чужого кода, я делал так:

  • посчитал SLOC, в Linux это делается стандартными утилитами stackoverflow.com/questions/1358540
  • посмотрел main, куда уходят основные пути (это беглая оценка продуманности архитектуры)
  • посмотрел библиотек и используемые API, т.к. целью было портирование виндовой игрушки на Adnroid/iOS, и API ОС/библиотек могло стать помехой

Цикломатическую сложность и другие статистические данные надо уметь готовить, не думаю что они будут надёжной оценкой качества кода в общем случае.

quiet_readonly ★★★★
()
Ответ на: комментарий от quiet_readonly

Цикломатическую сложность и другие статистические данные надо уметь готовить, не думаю что они будут надёжной оценкой качества кода в общем случае.

Конечно, не будут. Цикломатическую сложность функции с одним switch() и 100500 case будет космическая, но код сам по себе примитивен.
Метрики это - указатель, куда стоит посмотреть.

velikS
() автор топика
Ответ на: комментарий от quiet_readonly

посчитал SLOC, в Linux это делается стандартными утилитами

Жуть. Есть tokei (cloc, если не спешим).

RazrFalcon ★★★★★
()

cppcheck

Adlint - Чтобы словить тысячи варнингов и засуспендить болшую часть из них.

Ещё, в хорошем проекте должы быть тесты, по крайней мере чтобы регрессии отлавливать и править.

А в совсем хорошем не помешает использование CI.

pmccabe

Почитав тред попробовал https://github.com/terryyin/lizard ,словил высокие значения на свичах (конечный автомат с 16-ю состояниями сразу дает «высокорискованный» код).

Спасибо за наводку, можно будет делать эксрпресс-анализ чужого кода на предмет...

А чем посоветуете оценить взаимосвязи модулей?

Если первый раз вижу код - кормлю его диоксигену, смотрю графы включения заголовков, графы зависимости типов данных, графы вызовов.

Дальше либо вырисовывается картина стихийной разработки (признак - бардак в графах вызовов, например), либо не вырисовывается, и тогда нужно смотреть код более глубоко, например - статическими анализаторами и прочими кошерными инструментами.

Чтение исходников - последнее, что делаю.

shkolnick-kun ★★★★★
()
Последнее исправление: shkolnick-kun (всего исправлений: 1)
Ответ на: комментарий от ckotinko

во-первых, должно быть четкое описание программы в общих чертах. с детализацией по модулям, описании принципов взаимодействия модулей и т.д.

- в процессе проектирования и разработки как правило меняется все и не раз

anonymous
()
Ответ на: комментарий от anonymous

там где я работал, «все и не раз» не менялось. такие изменения всегда были мега событием, и все изменения расписывались до написания кода.

но должен же кто-то писать говнокод в режиме аврала для равновесия.

ckotinko ☆☆☆
()
Ответ на: комментарий от ckotinko

там где я работал, «все и не раз» не менялось.

Я вам завидую.

RazrFalcon ★★★★★
()
Ответ на: комментарий от bookman900

Смотря что вам нужно. Если просто посылать события - в QtTestLib есть симуляция пользовательского ввода.

Ну и есть монстры типа Squish.

RazrFalcon ★★★★★
()
24 октября 2017 г.
Ответ на: комментарий от RazrFalcon

а подскажите чем лучше тестить вендо GUI WPF и WinForms при скромном бюджете?

AutoIt для Win и Winium для WPF?

Нет ли чего то более навороченного типа ZennoPoster?

sanyock ★★
()
Ответ на: комментарий от ckotinko

привет глобальные скрытые состояния :)

ps. плоды уровня квалификации тех разрабов которые ...

anonymous
()
Ответ на: комментарий от sanyock

да ладно вам. не сильно-то и засрано, мы когда в общаге бухали сильнее срач разводили и ничего, убирали все потом.

ckotinko ☆☆☆
()
Ответ на: комментарий от sanyock

кстати, общага МФТИ (номер 1 но не думаю что остальные сильно отличались, разве что 8ка) выглядела страшнее даже без срача потому что это была совковая убитая общага с совковой мебелью совковыми кроватями, клопами, мышами и крысами, одну из которых я лично поймал и побрил налысо с левого борта. а для мышей у меня был личный концлагерь с водными процедурами!

что докопались до индусов, не понимаю.

не, плитка в комнате это залёт, понятно. даже две плитки. но честно говоря, я вижу на фото типовую сутиацию «приготовление хавчика». когда я дома готовлю что-то серьёзнее супца, у меня на кухне срач пострашнее стоит. да, на пол насрали, но там линолеум. пошвабровал в совок и пол как новый. раковина да. но ска, я лично не могу их упрекнуть, ибо сам так засирал. работает же, нахер мыть!

в общем, немного армейской дисциплины на первом курсе наверно не помешает и это касается не только индусов. а так комната как комната, в наше время такие комнаты мы только в фантастических фильмах видели.

ckotinko ☆☆☆
()
Ответ на: комментарий от ckotinko

та причем тут комната, речь о людях и о том, что у них в голове творится, если это не фейк

в такой относительно хорошей комнате вообще грех не прибрать

sanyock ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.