25.06.2017, 10:54 | #1 |
Участник
|
Зло живет в функциях сравнения.
Обсудим тему ?
https://habrahabr.ru/company/pvs-studio/blog/329090/ Статья заинтересовала интересной подборкой типичных багов. Второй вопрос - что Аксапта нам предоставляет в помощь для поиска таких ошибок. В Visual Studio по идее, возможностей должно быть больше, т.е. в Ax7 все станет проще при проверке ? Еще впечатлило, какие смешные баги бывают во всем известных продуктах (и почему они не исправляются подолгу). |
|
|
За это сообщение автора поблагодарили: mazzy (2), Raven Melancholic (1). |
25.06.2017, 11:34 | #2 |
Участник
|
Если посмотреть статистику моих ошибок (которая у меня в голове), то вырисовывается такая картинка:
На первом месте, конечно, идут ошибки копипаста. Это безусловный лидер. Скопировал, отвлекся, забыл поправить. На втором месте - логические ошибки, как верно замечено в обсуждаемой статье. Все кажется настолько простым и тривиальным, что часто мысли уже скачут где-то далеко и руки чисто на автомате набирают код. В ошибках этого типа безусловный лидер - сравнение = или !=. Ну и замыкают хитпарад - ошибки обработки объектов. Часто вместо одной переменной случайно начинаешь подсовывать для обработки другую переменную. Вместо текущего курсора на форме - пришедший курсор из параметров или наоборот. Или источник данных другой цепляю на элемент интерфейса, рука дрогнула типа... |
|
25.06.2017, 13:50 | #3 |
Участник
|
Как сказано в статье (а еще более подробно об этом в той, статье, на которую есть ссылка - про "ошибку последней строки"), основная проблема в том, что, как правило, сами условия простые и при просмотре кода взгляд их просто пропускает. Типа: что там смотреть и так все вроде правильно.
Если условие сложное, то его как-то анализируешь, часто разбиваешь на части (мне переменных не жалко), а вот простые условия ускользают от внимания. Моей типичной ошибкой, почему-то, бывает не использование сравнения на неравенство, а сравнение равенством инвертированной переменной: вместо a != b, часто пишу !a == b. Ошибка совершенно идиотская, сложно сделать её, находясь в здравом уме, то делаю часто (как правило скопипастив другой вариант и изменив в новом месте). Нередко ошибаюсь на объединении нескольких условий по && и || в одной проверке, особенно, если есть перенос условия на несколько строк. |
|
25.06.2017, 14:14 | #4 |
Участник
|
Я начитавшись про pvs studio сделал свою поделку (http://axcoder.blogspot.ru/2014/11/s...-xlnt.html?m=1) в нагребло порядка трех десятков ошибок по всему продукту. Часть поправили часть не появляется (просто мертвый код), в 7 проверка свитча производиться самим компилятором
|
|
|
За это сообщение автора поблагодарили: Logger (1), mazzy (2), macklakov (1). |
25.06.2017, 14:29 | #5 |
Участник
|
|
|
25.06.2017, 15:12 | #6 |
Участник
|
В 7 есть car https://ax.help.dynamics.com/en/wiki/car-2/ на движке Bp.
|
|
|
За это сообщение автора поблагодарили: Logger (3). |
25.06.2017, 15:56 | #7 |
Участник
|
|
|
25.06.2017, 15:58 | #8 |
Участник
|
|
|
25.06.2017, 16:55 | #9 |
Участник
|
Цитата:
Чтобы решить какие проверки реализовать в первую очередь, а на какие забить ? Я думаю основную группу проверок на копипаст и связанные с ним ошибки, а также на ошибки в логических выражениях можно смело было реализовывать. Такие ошибки допускают все. |
|
25.06.2017, 18:50 | #10 |
Участник
|
Есть, например, ошибка с использованием невыбранного поля для него даже рантайм проверку на сервере сделали.
|
|
25.06.2017, 18:53 | #11 |
Участник
|
|
|
|
За это сообщение автора поблагодарили: Raven Melancholic (2). |