|
Tools Обсуждение программ для MaNGOS |
|
Опции темы | Поиск в этой теме | Опции просмотра |
05.08.2010, 07:57 | #1 |
Супер-модератор
Регистрация: 07.03.2010
Сообщений: 647
Сказал(а) спасибо: 100
Поблагодарили 252 раз(а) в 123 сообщениях
|
[micro] Проверка ScriptDev2 скриптов
Эта небольшая программка, написанная на C# под .NET Framework 3.5, проверяет исходники ScriptDev2 скриптов на очевидные ошибки.
В данный момент умеет:
Скриншот: http://dl.dropbox.com/u/9241118/sd2_scriptcheck_ss.gif Отзывы, идеи, предложения и критика приветствуются! ____________________________________________ Список изменений:
Последняя версия на данный момент: 1.1.0 Исходный код: http://github.com/LordJZ/MyWowTools/...2_ScriptCheck/ Последний бинарник: DropBox | Filebeam Последний раз редактировалось LordJZ; 06.08.2010 в 09:46. |
16 пользователя(ей) сказали cпасибо: |
05.08.2010, 12:09 | #2 |
Умный
Регистрация: 17.06.2010
Сообщений: 397
Сказал(а) спасибо: 58
Поблагодарили 55 раз(а) в 38 сообщениях
|
Вот идеи, в списке "Что нужно сделать" я их не увидел:
1.Проверка на закрыты ли скобки 2.Правильное ли кол-во скобок в условии 3.Стоит ли после функции ";" 4.Верный ли файл подключен 5.Проверка на наличие запятой в enum'e 6.Проверка условий на кол-во знака равенства |
05.08.2010, 17:35 | #4 |
Супер-модератор
Регистрация: 07.03.2010
Сообщений: 647
Сказал(а) спасибо: 100
Поблагодарили 252 раз(а) в 123 сообщениях
|
Это общие проверки синтаксиса, программа не для этого сделана. Ее назначение — проверять очевидные ошибки при создании скриптов специально для SD2.
|
05.08.2010, 21:00 | #5 |
Умный
Регистрация: 17.06.2010
Сообщений: 397
Сказал(а) спасибо: 58
Поблагодарили 55 раз(а) в 38 сообщениях
|
|
05.08.2010, 21:05 | #6 | ||
RuDB Dev
Регистрация: 01.02.2010
Адрес: localhost
Сообщений: 592
Сказал(а) спасибо: 323
Поблагодарили 283 раз(а) в 122 сообщениях
Записей в дневнике: 2
|
Цитата:
Цитата:
|
||
05.08.2010, 23:11 | #7 |
Супер-модератор
Регистрация: 07.03.2010
Сообщений: 647
Сказал(а) спасибо: 100
Поблагодарили 252 раз(а) в 123 сообщениях
|
Еще раз, эта программа делает проверку тех важнейших аспектов скриптования в SD2, проверку коих не делает ни компилятор, ни система управления версиями.
К примеру, это — правильность и полнота загрузки существующих в репозитории С++ скриптов. Вы, написав скрипт для SD2, можете забыть добавить его в ScriptLoader.cpp, и эта программа выкинет вам ошибку. Еще — валидность перегрузчиков функций (планируется). Это, по-большому счету, проверка «на дурака» — то есть, проверка на изменение по незнанию или по невнимательности — предупреждение случаев, когда оверлоад декларирован некорректно, оптимизирован-удален компилятором и не будет вызван никогда. Такие случаи легко дебажатся, но некоторые могут быть не знакомы с такими особенностями компиляторов. Кстати, в C# эта проверка встроена в MS компилятор. |
Пользователь сказал cпасибо: | Lordronn (05.08.2010) |
06.08.2010, 07:25 | #8 |
Почетный флудер
Старожил
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
|
Добавь проверку на наличие playertalkclass->clearmenu() в gossipselect перед выдачей нового меню. хотя это латентная ошибка (и ей страдает почти весь SD2 team), но ей можно ядро положить при умении.
|
Пользователь сказал cпасибо: | LordJZ (06.08.2010) |
06.08.2010, 08:44 | #9 |
RuDB Dev
Регистрация: 01.02.2010
Адрес: localhost
Сообщений: 592
Сказал(а) спасибо: 323
Поблагодарили 283 раз(а) в 122 сообщениях
Записей в дневнике: 2
|
А если сделать так:
Это изначально виновс-форм приложение, в котором есть такой контрол как ListView или TextBox (Стек ошибок) в который будут складываться "ошибки". Стек ошибок представляет собой перечень ошибок с ссылками на указанный файл (по возможности и место ошибки, номер строки...) и ДаблКликом возможность открыть этот файл. Вот только как сделать еще и установку курсора в предполагаемом месте с ошибкой. |
06.08.2010, 09:03 | #10 |
Супер-модератор
Регистрация: 07.03.2010
Сообщений: 647
Сказал(а) спасибо: 100
Поблагодарили 252 раз(а) в 123 сообщениях
|
Пока это будет просто консольное приложение. В промежуточной версии сделал запись в лог файл и раскраску консоли.
|
06.08.2010, 12:11 | #11 |
Умный
Регистрация: 17.06.2010
Сообщений: 397
Сказал(а) спасибо: 58
Поблагодарили 55 раз(а) в 38 сообщениях
|
Вот то, на что компилятор не ругнется, и то, что положит сервер.Правится элементарно, но уже после краша. Когда используешь таргеты, делаешь по ним проверку, зачастую забываешь написать проверку на то, что это таргет - if(pTarget && pTarget->isAlive), и пишешь без проверки - if(pTarget->isAlive()) что приведет к крашу
|
06.08.2010, 12:49 | #12 | |
Гость
Сообщений: n/a
|
Цитата:
Извиняюсь за занудство. |
|
06.08.2010, 13:31 | #13 |
Умный
Регистрация: 02.07.2010
Сообщений: 434
Сказал(а) спасибо: 27
Поблагодарили 73 раз(а) в 45 сообщениях
|
используйте так называемые "умные указатели", не будет никогда засады с нулевыми указателями
|
06.08.2010, 13:41 | #14 | |
RuDB Dev
Регистрация: 01.02.2010
Адрес: localhost
Сообщений: 592
Сказал(а) спасибо: 323
Поблагодарили 283 раз(а) в 122 сообщениях
Записей в дневнике: 2
|
Цитата:
Последний раз редактировалось Konctantin; 06.08.2010 в 13:55. |
|
06.08.2010, 17:22 | #16 |
Умный
Регистрация: 17.06.2010
Сообщений: 397
Сказал(а) спасибо: 58
Поблагодарили 55 раз(а) в 38 сообщениях
|
Можно еще проверку на наличие скрипта в файле проэкта сделать.
|
06.08.2010, 17:24 | #17 |
Гость
Сообщений: n/a
|
Компилятор сам сообщит.
|
06.08.2010, 17:30 | #18 |
Умный
Регистрация: 17.06.2010
Сообщений: 397
Сказал(а) спасибо: 58
Поблагодарили 55 раз(а) в 38 сообщениях
|
Сообщит только в случае если указать некорректный путь, а если его забыть указать, и в скрипт лоадере забыть объявить тогда промолчит. Проверка на скрипт лоадер есть, можно и эту добавить.
|
06.08.2010, 19:43 | #19 | |
Умный
Регистрация: 02.07.2010
Сообщений: 434
Сказал(а) спасибо: 27
Поблагодарили 73 раз(а) в 45 сообщениях
|
Цитата:
PHP код:
Подробнее про это дело можно почитать у Джеффа Элджера "Библиотека программиста с++" |
|
06.08.2010, 19:48 | #20 |
Гость
Сообщений: n/a
|
Как то это плохо.
Может привести к совсем неожиданным результатам, да и не отловишь в чем баг потом. |
06.08.2010, 19:51 | #21 |
Умный
Регистрация: 02.07.2010
Сообщений: 434
Сказал(а) спасибо: 27
Поблагодарили 73 раз(а) в 45 сообщениях
|
ну не скажи...
допустим ptr2 - указатель на производный класс, у которого все функции выводят сообщение об ошибке -) Но это конечно потребует большой переделки кода. |
06.08.2010, 20:29 | #22 |
Умный
Регистрация: 02.07.2010
Сообщений: 434
Сказал(а) спасибо: 27
Поблагодарили 73 раз(а) в 45 сообщениях
|
вот например так
PHP код:
|
Пользователь сказал cпасибо: |
06.08.2010, 23:55 | #23 | |
Супер-модератор
Регистрация: 07.03.2010
Сообщений: 647
Сказал(а) спасибо: 100
Поблагодарили 252 раз(а) в 123 сообщениях
|
Цитата:
Уже есть в «Что надо сделать». |
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Проверка нахождения нпц в мире | virusav | Новичкам | 3 | 08.11.2010 00:08 |
Как делать отладку скриптов? | tozter | Скрипты | 5 | 13.07.2010 20:05 |
Проверка браузера | selector | Новичкам | 8 | 05.06.2010 18:42 |
Предложение по написанию скриптов | virusav | Новости RMDC | 17 | 29.03.2010 12:38 |