Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 [4] 5 6 7   вперед  Ctrl      все
 Re: SqlCodeGuard - бесплатный addin для SSMS  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62035
Minamoto
locky
Обновлено, 2012-08-27
Исправлены глюки, учтены пожелания, исправлена интеграция с русским (и, надеюсь - другими локализациями тоже) SSMS
Интеграция с SSMS2012 пока не работает по техническим причинам (что-то странное происходит, пока не разобрался).
Если что-то не указано в changelog - я об этом помню, просто пока не успел реализовать


У меня в русской SSMS появились пункты меню. Спасибо!

А у вас какая версия SSMS?
27 авг 12, 16:21    [13070975]     Ответить | Цитировать Сообщить модератору
 Re: SqlCodeGuard - бесплатный addin для SSMS  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62035
Ken@t
Mnior
пропущено...
Чтоб я так работал
Спасибо.

Не, у мну опять в тулсах нет, разочаорван.

Не люблю такого говорить, но "а у меня всё нормально" - 2008R2 RTM поверх русской XP SP3
буду подымать у себя еще один стенд для опытов


У кого-нибудь еще были такие проблемы/у кого-то всё нормально?
27 авг 12, 18:58    [13072049]     Ответить | Цитировать Сообщить модератору
 Re: SqlCodeGuard - бесплатный addin для SSMS  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 5656
locky
У кого-нибудь еще были такие проблемы/у кого-то всё нормально?

Вполне в порядке. 2008R2 Developer edition на XP SP3 rus.
28 авг 12, 02:56    [13073301]     Ответить | Цитировать Сообщить модератору
 Re: SqlCodeGuard - бесплатный addin для SSMS  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
locky
Minamoto
пропущено...


У меня в русской SSMS появились пункты меню. Спасибо!

А у вас какая версия SSMS?

2008 R2 русская.

Точнее:
Microsoft SQL Server Management Studio 10.50.1617.0
Компоненты доступа к данным (MDAC) 6.1.7600.16385
Microsoft MSXML 3.0 4.0 5.0 6.0
Microsoft Internet Explorer 9.0.8112.16421
Microsoft .NET Framework 2.0.50727.4971
Операционная система 6.1.7600
28 авг 12, 13:45    [13075736]     Ответить | Цитировать Сообщить модератору
 Re: SqlCodeGuard - бесплатный addin для SSMS  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62035
Обновление до 2.1.4628

+ changes
2012-09-03 SqlCodeGuard.2.1.4628
[+] added USE {DBNAME} and "ALTER" on view object definition
[+] added "isssue groups" to "Select issue window"
[+] added API to use in own build process/tools/so on
[+] added sample app for API usage
[*] changed default set of issues - all issues except [DEP023] Not ending Transact-SQL statements with a semicolon is deprecated
3 сен 12, 00:11    [13102852]     Ответить | Цитировать Сообщить модератору
 Re: SqlCodeGuard - бесплатный addin для SSMS  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6719
Ага, зацикленная рекомпиляция запроса из-за постоянной смены статистики.
У кого-то явно 72 часа в сутках.
3 сен 12, 03:10    [13103017]     Ответить | Цитировать Сообщить модератору
 Re: SqlCodeGuard - бесплатный addin для SSMS  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6719
А где опция показывающая когда имя объекта не сходится с его определением? (происходит такое при sp_ReName)

А подсказки в "Select issues" обрезаются, к примеру для [PE017].
А можно ещё этот диалог (как я их ненавижу) хоть Sizeable сделать.
+ Exception
Exception
LoadObjects:unable to find table in table list:<DB>.dbo.sysdiagrams
Хотя этот sysdiagrams прописан в SkipProcedures (settings.xml)
Exception
SqlCodeGuard.Core.Database.RuleExecutorDelegate:Object reference not set to an instance of an object. at <spTest> (??)
at ?.??(DatabaseObject ?)
at SqlCodeGuard.Core.CodeGuardAnalyser.?(Object ?)
На такой конструкции:
CREATE PROCEDURE [dbo].[spTest]
AS BEGIN
	SELECT	 1
	FROM	(SELECT(								-- Обязательно
			SELECT	Row_Number()OVER(ORDER BY name)				-- Обязательно
			FROM	sys.columns
			FOR XML Path(''),Type).value('text()[1]','NVarChar(max)')	-- Обязательно
		)C(X)
END
GO


[EI009] Call has more parameters than required
Не работает корректно для Synonym-ов (типа у них 0(ноль) параметров)

Как же тяжело придумать что-то. Высокий уровень текущих проверок.
Нужно постоянно помнить об этой тулзе и когда нарываешься на очередную глупость не забыть добавить в Rules. Ыээх
Знал бы я эдак 5 лет назад, накопил бы. Вот что значит низкий уровень менеджера проектов.

Можно ведь анализить курсоры. Если они (между OPEN и CLOSE/DEALLOCATE) состоят из простых команд (SIUD) без всяких вызовов (EXEC или других внешних вызовов). Тогда ругаться что руки не оттуда растут.

[PE009] "No SET NOCOUNT ON before DML". Непривычно позиционирует. Правильно показывает DML, но он где-то в середине может быть. И к тому же, если SELECT @Var = <Expr> игнорирует, то вот это нет:
-- В под-запросах APPLY
SELECT @Var =...
FROM  ... OUTER APPLY ( {|}SELECT ... -- <--
-- В под-запросах
SELECT @Var = ( {|}SELECT ...
-- Описание курсора
DECLARE <Name> CURSOR FOR {|}SELECT

+ CLR методы
Всётаки не умеет пока обрабатывать расширенные CLR методы.
[PE001] "Schema name for procedure is not specifird"
FOR XML Path(''),Type).{|}value('text()[1]','NVarChar(max)')
И до сих пор ругается "Unpased SQL"

Addition Info полезная вещь в принципе.
Вот не знаю, для [PE006] "TABLE HINT is used", может прописывать не тип, а текст. т.е. вместо "INDEX=()" --> "INDEX(<IndexName>)"
3 сен 12, 15:30    [13106424]     Ответить | Цитировать Сообщить модератору
 Re: SqlCodeGuard - бесплатный addin для SSMS  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62035
к сожалению ошибки на запросах вида (select ... for xml).nodes() - неисправимы в ближайшем будущем :(
остальное будем посмотреть.
3 сен 12, 15:40    [13106489]     Ответить | Цитировать Сообщить модератору
 Re: SqlCodeGuard - бесплатный addin для SSMS  [new]
I_Hate_Registration
Member

Откуда:
Сообщений: 3
А можно добавить получение списка Issues в виде коллекции с типом/дескрипшеном через API?
6 сен 12, 14:18    [13123983]     Ответить | Цитировать Сообщить модератору
 Re: SqlCodeGuard - бесплатный addin для SSMS  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62035
I_Hate_Registration
А можно добавить получение списка Issues в виде коллекции с типом/дескрипшеном через API?

Безусловно.
Записал.
6 сен 12, 14:19    [13123994]     Ответить | Цитировать Сообщить модератору
 Re: SqlCodeGuard - бесплатный addin для SSMS  [new]
I_Hate_Registration
Member

Откуда:
Сообщений: 3
А так же было бы неплохо иметь возможность через API достать подробное описание Issue, как в аттаче.
6 сен 12, 14:43    [13124195]     Ответить | Цитировать Сообщить модератору
 Re: SqlCodeGuard - бесплатный addin для SSMS  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62035
Обновлено до 2.1.4634
+
2012-09-09 SqlCodeGuard.2.1.4634
[*] "Select issues" window made resizable
[*] Fixed cutting of issues description in "Select issues" dialog
[+] Added "Dump issues summary"/"Dump issues" to Issue Window context menu
[+] Added SqlCodeGuardAPI.API.IssueList property to enumerate all defined issues


Господа!
Есть огромная просьба!
Сделайте следующее:
1. В выборе Issues поставьте всем Warning
2. Натравите на свою БД
3. Воспользуйтесь пунктом контекстного меню Dump Issues Summaryю Статистика буде содержать только количественную информацию о количестве объектов и о количестве найденных issues по типам
4. Повторите пункты 2-3 для как можно бОльшего количества своих баз
5. Полученную статистику пришлите мне по адресу sqlcodeguard <at> gmail.com

Информация необходима для статистики. Конфиденциальность, нераспространение и т.д. - гарантируется.

Заранее спасибо.
9 сен 12, 22:21    [13137372]     Ответить | Цитировать Сообщить модератору
 Re: SqlCodeGuard - бесплатный addin для SSMS  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6719
locky, данные Issue я отключаю:
BP004
BP008
BP012
BP014
DEP023
DEP028
EI025
ST002
ST005
ST008
Может быть ещё что-то выключу.
10 сен 12, 10:53    [13138584]     Ответить | Цитировать Сообщить модератору
 Re: SqlCodeGuard - бесплатный addin для SSMS  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6719
Вызов RAISERROR не через константу небезопасно.
RAISERROR(<Expression>,...
Параметры должны быть параметризованы:
RAISERROR('StringConstant',...,@Param1,@Param2 ...

RAISERROR('%s',18,1,@Error) -- К примеру

Не знаю в какую группу Issue это засунуть.
10 сен 12, 15:25    [13140821]     Ответить | Цитировать Сообщить модератору
 Re: SqlCodeGuard - бесплатный addin для SSMS  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62035
немного рекламы :)

http://habrahabr.ru/post/151179/
10 сен 12, 18:58    [13142269]     Ответить | Цитировать Сообщить модератору
 Re: SqlCodeGuard - бесплатный addin для SSMS  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6719
Прикольно получилось:
Решил на одной говно-базе список ошибок одного типа выгрузить, для дальнейшей фильтрации.
Ну скопировать тольно несколько строк нельзя - контрол в режиме одного выделения.
Ладно давай "dump issues", нажимаю, появляется новое окно с XML.
Ладно, ща запрос замутим. Только начинаю писать - студия падает.

Проблема понятна, колоринг (подсветка) такого большого текста (XML) вывалилась. Старая проблема, знаем.
Но осадок остался. ;)

Может всё-таки сделать milti-select на контроле и "copy to clipboard" будет копировать выделенное ?

PS: Ну выкрутится можно. Снять все галки кроме нужной, на момент сей сложной операции.
Спасибо за "Issue groups". Спасает.
14 сен 12, 16:24    [13166145]     Ответить | Цитировать Сообщить модератору
 Re: SqlCodeGuard - бесплатный addin для SSMS  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62035
У меня на большом к-ве падать не падает, но исключение - есть.
Будем фиксить
14 сен 12, 16:46    [13166286]     Ответить | Цитировать Сообщить модератору
 Re: SqlCodeGuard - бесплатный addin для SSMS  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62035
Обновлено до версии 2.1.4642

+ changelog
2012-09-17 SqlCodeGuard.2.1.4642
[*] improved performance and reduced memory usage on large amount of issues
[*] some GUI improvements
[*] Fixed error "Class not registered" when installing under Admin account and run under regular user/install for all users
[+] added "Dump issues to file"


Спасибо всем, кто прислал статистику по ошибкам 13137372
напоминаю, что сбор статистики продолжается, спешите поучавствовать во всеблагом деле :)
17 сен 12, 01:10    [13173474]     Ответить | Цитировать Сообщить модератору
 Re: SqlCodeGuard - бесплатный addin для SSMS  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6719
А можно добавить конструкцию INSERT EXEC в список "Best Practice" ?
17 сен 12, 12:41    [13175180]     Ответить | Цитировать Сообщить модератору
 Re: SqlCodeGuard - бесплатный addin для SSMS  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62035
Mnior
А можно добавить конструкцию INSERT EXEC в список "Best Practice" ?

ок.
17 сен 12, 14:37    [13176073]     Ответить | Цитировать Сообщить модератору
 Re: SqlCodeGuard - бесплатный addin для SSMS  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6719
Не скажу что это предложение - ибо сложно, да и тот же Complexity не допилен.
Но хорошо бы находить Copy&Past кода/структуры.

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

На самом деле я мечтаю не просто о поиске C&P (для многих языков/любого), а чтобы можно было манипулировать этим кодом так же легко как это делает Sublime. Выносить "за скобки" общую часть, одним движением мыши/нажатия кнопки. Эх, а щас даже форматирование нельзя сделать.

locky, вас клонировать надо.

А ещё можно
В "Code outline" конструкция вида Milti ELSE IF вываливается в глубокое дерево. Да и ELSE само по себе вложено. Может стоит ставить их на том же уровне что и начальный IF ?
18 сен 12, 12:16    [13181301]     Ответить | Цитировать Сообщить модератору
 Re: SqlCodeGuard - бесплатный addin для SSMS  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62035
по поводу поиска копипасты когда-то думал, в принципе, всё выливается в поиски совпадающих обобщенных под-деревьев.
надо будет как-нибудь поглядеть что там было уже сделано на эту тему
18 сен 12, 13:17    [13181954]     Ответить | Цитировать Сообщить модератору
 Re: SqlCodeGuard - бесплатный addin для SSMS  [new]
beg_inner
Guest
побьем базу Mnior по количеству говнокода!
<root>
<objects>
<object type="P" count="283"/>
<object type="U" count="6532"/>
<object type="V" count="2066"/>
<object type="FN" count="56"/>
<object type="TF" count="2"/>
<object type="TR" count="2"/>
</objects>
<issues>
<issue code="BP001" count="2"/>
<issue code="BP002" count="60"/>
<issue code="BP004" count="1436"/>
<issue code="BP005" count="1421"/>
<issue code="BP006" count="657"/>
<issue code="BP007" count="10"/>
<issue code="BP008" count="258"/>
<issue code="BP012" count="35"/>
<issue code="BP013" count="23"/>
<issue code="BP014" count="6"/>
<issue code="BP015" count="16"/>
<issue code="BP016" count="3"/>
<issue code="CGUNP" count="66"/>
<issue code="DEP019" count="16"/>
<issue code="DEP026" count="43855"/>
<issue code="EI003" count="91"/>
<issue code="EI016" count="12"/>
<issue code="EI020" count="2"/>
<issue code="EI024" count="231"/>
<issue code="EI025" count="62"/>
<issue code="EI027" count="6273"/>
<issue code="MI003" count="3119"/>
<issue code="MI004" count="1"/>
<issue code="MI005" count="53"/>
<issue code="PE001" count="175"/>
<issue code="PE002" count="5606"/>
<issue code="PE003" count="1193"/>
<issue code="PE006" count="1925"/>
<issue code="PE007" count="1"/>
<issue code="PE009" count="267"/>
<issue code="PE010" count="60"/>
<issue code="PE013" count="4"/>
<issue code="PE015" count="16"/>
<issue code="PE018" count="15"/>
<issue code="ST001" count="26"/>
<issue code="ST002" count="3"/>
<issue code="ST003" count="270"/>
<issue code="ST005" count="171"/>
<issue code="ST006" count="468"/>
<issue code="TBL002" count="4820"/>
<issue code="TBL003" count="4816"/>
<issue code="TBL005" count="8"/>
</issues>
</root>

...и даже пока студия не закрылась
про поиск зависимостей тестовой версией отпишусь в соседнем топике.
почта сегодня тоже в ауте :(
25 сен 12, 11:00    [13217173]     Ответить | Цитировать Сообщить модератору
 Re: SqlCodeGuard - бесплатный addin для SSMS  [new]
beg_inner
Guest
ну и вторая база
+
<root>
	<objects>
		<object type="P" count="351"/>
		<object type="V" count="1394"/>
		<object type="U" count="1672"/>
		<object type="IF" count="2"/>
		<object type="FN" count="28"/>
		<object type="TR" count="6"/>
	</objects>
	<issues>
		<issue code="BP001" count="6"/>
		<issue code="BP002" count="48"/>
		<issue code="BP004" count="868"/>
		<issue code="BP005" count="1430"/>
		<issue code="BP006" count="168"/>
		<issue code="BP008" count="332"/>
		<issue code="BP010" count="1"/>
		<issue code="BP011" count="1"/>
		<issue code="BP012" count="33"/>
		<issue code="BP013" count="448"/>
		<issue code="BP014" count="36"/>
		<issue code="BP015" count="307"/>
		<issue code="BP016" count="62"/>
		<issue code="CGUNP" count="183"/>
		<issue code="DEP019" count="278"/>
		<issue code="DEP021" count="26"/>
		<issue code="DEP026" count="14607"/>
		<issue code="DEP027" count="84"/>
		<issue code="EI001" count="12"/>
		<issue code="EI002" count="6"/>
		<issue code="EI003" count="51"/>
		<issue code="EI009" count="2"/>
		<issue code="EI010" count="28"/>
		<issue code="EI011" count="56"/>
		<issue code="EI012" count="56"/>
		<issue code="EI013" count="56"/>
		<issue code="EI014" count="2"/>
		<issue code="EI015" count="10"/>
		<issue code="EI016" count="35"/>
		<issue code="EI017" count="9"/>
		<issue code="EI018" count="113"/>
		<issue code="EI020" count="2"/>
		<issue code="EI024" count="216"/>
		<issue code="EI025" count="215"/>
		<issue code="EI026" count="14"/>
		<issue code="EI027" count="5550"/>
		<issue code="MI002" count="4"/>
		<issue code="MI003" count="5405"/>
		<issue code="MI005" count="127"/>
		<issue code="PE001" count="271"/>
		<issue code="PE002" count="4097"/>
		<issue code="PE003" count="270"/>
		<issue code="PE006" count="408"/>
		<issue code="PE007" count="4"/>
		<issue code="PE009" count="296"/>
		<issue code="PE010" count="16"/>
		<issue code="PE015" count="325"/>
		<issue code="PE017" count="2"/>
		<issue code="PE018" count="325"/>
		<issue code="ST001" count="421"/>
		<issue code="ST002" count="391"/>
		<issue code="ST003" count="329"/>
		<issue code="ST005" count="649"/>
		<issue code="ST006" count="192"/>
		<issue code="ST007" count="10"/>
		<issue code="ST008" count="115"/>
		<issue code="TBL001" count="1"/>
		<issue code="TBL002" count="1001"/>
		<issue code="TBL003" count="1021"/>
		<issue code="TBL004" count="9"/>
		<issue code="TBL005" count="42"/>
	</issues>
</root>
25 сен 12, 11:15    [13217294]     Ответить | Цитировать Сообщить модератору
 Re: SqlCodeGuard - бесплатный addin для SSMS  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6719
beg_inner
...и даже пока студия не закрылась
Т.е. когда вы выгрузили это всё пообъектно (порядка 50 тыс строк) то студия даже незаметила?
25 сен 12, 18:38    [13221033]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 [4] 5 6 7   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить