AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 13.11.2014, 17:10   #1  
MikeR is offline
MikeR
MCT
Аватар для MikeR
MCBMSS
Лучший по профессии 2015
Лучший по профессии 2014
 
1,628 / 627 (24) +++++++
Регистрация: 28.11.2005
Адрес: просто землянин
Обзор написанного кода
Коллеги, на мой взгляд интересная статья по code review. Говоря новым полит корректным языком, - как это делается у наших партнеров / конкурентов.

Сегодня на 2014 год, российские компании, внедрившие продукты компании SAP потратили большое количество ресурсов на клиентскую доработку решений. Однако не привносят ли эти разработки дополнительные риски в ваши бизнес-процессы? Компания SAP гарантирует качество кода в своих приложениях благодаря ручному аудиту поставляемого кода и использованию самых современных механизмов статического и динамического анализа своих продуктов на различные уязвимости. Автор этих строк провел исследование в университете г. Саарбрюккен (Германия) целью которого являлся анализ кодов продуктов SAP (решения по электронной коммерции) самыми современными инструментами статического анализа и убедился в высоком качестве этого кода. Программный код компании SAP проходит ручной и автоматизированный анализ, тысячи специальных тест-кейсов. Клиентский программный код зачастую не может быть так полно проанализирован, особенно, в условиях сжатых сроков проектов, в которых приходится работать. Стоит задуматься о качестве клиентского кода в ваших системах. Важно понимать, что проверка авторизации пользователя (синоним безопасности SAP для многих предприятий) не поможет предотвратить использование такого рода ошибок, т.к. пользователь, использующий ошибки в коде, выходит за рамки полномочий, определенных системным администратором.
__________________
Axapta book for developer
За это сообщение автора поблагодарили: driller (0).
Старый 14.11.2014, 08:27   #2  
driller is offline
driller
Сам.AX
Аватар для driller
Самостоятельные клиенты AX
SAP
 
78 / 54 (2) ++++
Регистрация: 11.04.2007
Адрес: Санк-Петербург
Что на ваш взгляд интересного, содержится в статье?
__________________
"Считать метафору доказательством, поток праздных слов источником истины, а себя оракулом - это заблуждение, свойственное всем нам."
Поль Валери
Старый 14.11.2014, 11:44   #3  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Для AX есть некий автоматизированный анализ кода в Lifecycle Services

Сам не пробовал
За это сообщение автора поблагодарили: MikeR (2).
Старый 14.11.2014, 15:16   #4  
MikeR is offline
MikeR
MCT
Аватар для MikeR
MCBMSS
Лучший по профессии 2015
Лучший по профессии 2014
 
1,628 / 627 (24) +++++++
Регистрация: 28.11.2005
Адрес: просто землянин
Честно говоря слабо представляю, как можно автоматизировать проверку или анализ допустим процесса обмена данными между системами. В этом случае только наметанный взгляд поможет.
__________________
Axapta book for developer
Старый 14.11.2014, 15:23   #5  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от MikeR Посмотреть сообщение
Честно говоря слабо представляю, как можно автоматизировать проверку или анализ допустим процесса обмена данными между системами. В этом случае только наметанный взгляд поможет.
Это зависит от того, какое формальное описание этого процесса есть
Старый 14.11.2014, 16:22   #6  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1243 (44) ++++++++
Регистрация: 11.04.2008
Цитата:
Сообщение от belugin Посмотреть сообщение
Для AX есть некий автоматизированный анализ кода в Lifecycle Services

Сам не пробовал
Я пробовал, могу немного рассказать.

1. Тул предлагает загрузить модель для анализа
2. В течение нескольких часов производится закачка\компилирование модели и запускается анализ.
3. Неожиданно, для казалось бы полностью вычищенной модели, получаем кучу ошибок\замечаний.
4. При анализе видим, что найденных 90% замечаний неоднозначные.

Например:
  • Если анализатор "видит" CRUD операции с таблицами и не встречает выше по коду "ttsbegin" в текущем методе, вываливает это как ошибку\замечание, при этом не учитывая, что метод целиком уже может выполняться в рамках транзакции. Отсюда получаем ругань чуть ли не на каждый метод где есть CRUD.
  • Если вы что-то воткнули в стандартный код, то все грехи стандартного кода будут расценены как ваша кастомизация со всеми вытекающими.
  • В исполняемом на сервере коде нельзя пользоваться такими функциями как info\error\setprefix. (ну клиентскими Box:: само собой).
  • Анализатор требует переноса ВСЕХ CRUD операций на таблицы\классы, причем обязательно в серверном исполнении. Т.е. select на форме либо клиентском классе уже не напишешь, даже если это будет временная таблица.
  • Для CRUD операций требуется обязательно предшествующие validateWrite\Delete, даже если таблица временная, использующаяся как некий буфер.
  • Требует кэширования всех дисплей методов, даже если метод закэширован (баг), даже если метод написан на датасорсе.

Есть и много полезных замечаний.

Технически, тул реализован незамысловато. Где-то в облаке крутится аксапта, куда загружается ваша модель (отсюда обязательность совпадения версий вашей модели с версией тула и длительное время на компиляцию). В аксапте написан некий BestPractice extention, который выполняет проверку. По результирующему отчету даже видно, что он выгружается их таблицы SysCompilationOutput.

В общем тул пока сыроват, но в целом полезен, если не воспринимать все замечания в лоб.

Ну а вообще, можно было включить этот BestPractice extention в рамки стандартной системы и не заниматься глупостями в виде отдельных web приблуд.
За это сообщение автора поблагодарили: mazzy (2), belugin (3), sukhanchik (3), Krash (1), MikeR (2).
Старый 14.11.2014, 17:03   #7  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Я, кстати, пробовал что-то подобное сделать, если кому интересно http://1drv.ms/1u9Rs8x

Детектит ошибки типа

X++:
switch (x)
{
   case y:...
   case y:...
}
Старый 19.11.2014, 17:34   #8  
wojzeh is offline
wojzeh
Участник
Аватар для wojzeh
Соотечественники
 
674 / 512 (19) +++++++
Регистрация: 27.04.2006
Адрес: Montreal
что такое DEV_Toolbar?
__________________
Felix nihil admirari
Старый 19.11.2014, 18:07   #10  
wojzeh is offline
wojzeh
Участник
Аватар для wojzeh
Соотечественники
 
674 / 512 (19) +++++++
Регистрация: 27.04.2006
Адрес: Montreal
хотелось бы, конечно, краткого описания
__________________
Felix nihil admirari
Старый 20.11.2014, 07:59   #11  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Features

Toolbuttons
  • From left to right:
  • Tile horisontal (places 2 last activated windoz side by side)
  • Show type hierarchy
  • Show cross references
  • Show list of classes, where selected method in aot was overriden
  • Copy AOT path of selected node to clipboard (hold shift to copy name of the node only)
  • Table browser
  • Open application object (for example, if you have opened method it opens class or form of that method)
  • Find in AOT

Task bar
  • colored tabs
  • middle click closes tab
  • has context menu (right click on tab to see)
  • supports drag & drop of tabs
Input box
  • type full path of AOT node and press enter to open the node
  • type name of the node to open node ot menu of node with the same name
  • type ?<expression> to evaluate X++ expression value (for example ?tableID2Name(13))
  • type !<statement> to run X++ statement (for example !ExchRates::flushClient())
  • type <class>.<method> to open method of a class, for example infolog.add

Autorun
  • to run DEV_Toolbar on start of ax client add line "-startupcmd=Autorun_c:\work\jobs\dev_toolbar.xml" (without quotes and changing path to where you extracted archive) to:
  • shortcut of Ax32.exe
  • or to client configuration parameters
  • or to AxLauncher configuration

Extensibility
to add a button create AOT resorce with name like DEV_Toolbar_<menuItemType>_<menuItemName> and contents 16x16 png image of button. See DEV_Toolbar_Display_SysAotFind resource as an example
Миниатюры
Нажмите на изображение для увеличения
Название: dev_toolbar_small.png
Просмотров: 342
Размер:	35.6 Кб
ID:	9056  

Последний раз редактировалось belugin; 20.11.2014 в 08:02.
За это сообщение автора поблагодарили: Logger (3).
Теги
code review, lifecycle services

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Удобство чтения кода - залог и определенная гарантия его работоспособности sukhanchik DAX: Программирование 29 11.04.2013 10:52
Небольшой тюнинг редактора кода AX2012 kart DAX: Программирование 6 22.02.2013 17:21
axforum blogs: О заполнении Наименования и Кода номенклатуры в печатной форме Накладной (Ax2009 ru7) Blog bot DAX Blogs 0 07.06.2011 09:11
проблема с настройкой штрихового кода Nic DAX: Функционал 4 27.12.2004 09:04
Использование штрихового кода (barcode) в Аксапта Pavlo AKA Panok DAX: Функционал 9 17.10.2003 15:13

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 01:44.