elseiver: (I do IT)
[personal profile] elseiver
Вот примерно такое условие, как в сабже, встретил вчера в продакшен-коде, в двух местах.
Понятно, что таких ошибок от невнимательности и опечаток возникает масса, и я боюсь предположить, сколько их в нашей базе кода.

Посему вопрос: не встречались ли уважаемые колеги с автоматическими тулзами, умеющими такие косяки отлавливать, по схеме базы данных, например?
Хочется запустить что-то такое и ужаснуться. Самому писать не хочется:)

Date: 2013-08-06 08:49 am (UTC)
From: [identity profile] evg25.livejournal.com
Переходи на питон, он такое определяет как синтаксическую ошибку :-)

Date: 2013-08-06 08:53 am (UTC)
From: [identity profile] torrio.livejournal.com
У меня десятки мегабайт исходников на дотнете, ошибки, которые я хочу найти - вообще в T-SQL, а ты мне предлагаешь перейти на питон?! Это, конечно, идеальное решение:)

Date: 2013-08-06 08:54 am (UTC)
From: [identity profile] evg25.livejournal.com
Я знаю, что идеальное, потому и предлагаю. :-)

(мне смайлик побольше поставить?) :-)
Просто, когда я обнаружил это в питоне, то очень порадовался :-)

Date: 2013-08-06 12:23 pm (UTC)
From: [identity profile] vgramagin.livejournal.com
Для Java мы используем Findbugs - он такое, безусловно, отлавливает.

Date: 2013-08-06 12:33 pm (UTC)
From: [identity profile] torrio.livejournal.com
Он и в T-SQL отлавливает?!

Date: 2013-08-06 12:35 pm (UTC)
From: [identity profile] torrio.livejournal.com
В целом, для C# у нас есть Re-Sharper, он со многим справляется и подсказывает всякое полезное, но вот оказалось, что есть еще непаханное поле в SQL... По идее, у нас куплен Red Gate SQL Tolbelt, но не факт, что он умеет:(

Date: 2013-08-06 12:51 pm (UTC)
From: [identity profile] vgramagin.livejournal.com
Умммм, не уверен что в таком виде сработает. Но наверняка есть статиканалайзеры и для SQL тоже.

Date: 2013-08-06 03:33 pm (UTC)
From: [identity profile] antomus.livejournal.com
Если нужно только такие вот повторы найти, то можно использовать регулярные выражения например. Они так могут. Правда это не совсем подходит под определение "автоматической тулзы"...
Edited Date: 2013-08-06 03:35 pm (UTC)

Date: 2013-08-06 04:25 pm (UTC)
From: [identity profile] torrio.livejournal.com
Тут немного сложнее. Тот пример, который я привел - такое тоже, конечно, случается, но в реальности, например, было написано вот так:

ON ProjectCarrier.ProjectId = ProjectId

Имелось в виду поле ProjectId из другой таблицы, но у парсера SQL свой взгляд на это:) И его нужно учитывать. Под "простой повтор" такая штука уже не подпадает...

Date: 2013-08-06 06:18 pm (UTC)
From: [identity profile] 5-sb-werewolf93.livejournal.com
меня в мои косяки тыкает решарпер, но не думаю что он на столько глубоко анализирует код.

Date: 2013-08-06 06:21 pm (UTC)
From: [identity profile] elder-george.livejournal.com
Хммм, мне SSMS выдал ошибку Msg 209, Level 16, State 1, Line 10
Ambiguous column name 'projectid'.
.

Пробовал вот так:


declare @ProjectCarrier table(
ProjectId INT NOT NULL
)

declare @Project table(
ProjectId INT NOT NULL
)

select * from @ProjectCarrier pc
inner join @project on pc.ProjectId = ProjectId


Ты что-то скрываешь!

Date: 2013-08-06 06:38 pm (UTC)
From: [identity profile] torrio.livejournal.com
Честное слово не вру! Ambiguous column name не возникло потому, что этот запрос был вложенный, и, видимо, ambiguity разрешилась за счёт более низкого приоритета таблицы из внешнего запроса...

Date: 2013-08-06 06:39 pm (UTC)
From: [identity profile] torrio.livejournal.com
Решарпер вроде как с T-SQL не работает... В C#, да, помогает!

Date: 2013-08-06 06:45 pm (UTC)
From: [identity profile] elder-george.livejournal.com
Коллеги подсказали, что есть, например, http://www.sqlcodeguard.com/ (плагин к SSMS) и http://www.ubitsoft.com/products/t-sql-analyzer/index.php (+ платная версия к нему). Может, ещё что-то подскажут…


Сам не пробовал. Ну и у нас SQL код отличный же =)

Date: 2013-08-06 06:48 pm (UTC)
From: [identity profile] torrio.livejournal.com
Спасибо!

Date: 2013-08-06 06:49 pm (UTC)
From: [identity profile] elder-george.livejournal.com
О, вот тут рассказывают, как гонять static analysis на SQL проектах. Правда, там тоже набор правил фиксированный, не факт, что покрывает твои сценарии.

November 2016

S M T W T F S
  12345
67 89101112
13 141516171819
20212223242526
27282930   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Dec. 25th, 2025 04:14 am
Powered by Dreamwidth Studios