2011-12-13 13 views
9

Pracuję nad systemem SQL Server 2005 z dużą ilością wklejonych kopiują kodów, wieloma powtarzającymi się obliczeniami zamiast funkcjami, wieloma procedurami przechowywanymi, które różnią się tylko nieznacznie, zamiast sparametryzować. Również wiele pakietów SSIS, które są bardzo podobne.Narzędzie do wykrywania kopiowanego/wklejanego kodu w TSQL?

Idąc dalej, chciałbym móc wykryć tego rodzaju "zapach kodu". Istnieje wiele narzędzi do tego, ale nie znalazłem nic dla SQL.

Jakieś pomysły na temat produktów do wykorzystania lub najlepszych praktyk do zastosowania w odniesieniu do kopiowanego/wklejanego kodu w TSQL?

Dziękujemy ...

EDIT: Dzięki za wszystkie informacje zwrotne. Zrobiłem kilka z nich, ale ten, który wygląda na najprostszy i łatwy w użyciu, wydaje się być Atomiq. Musiałem wyeksportować wszystkie moje obiekty do plików .sql, a następnie musiałem użyć pliku wsadowego, aby zmienić nazwy wszystkich plików z rozszerzeniem .sql na .cs, ponieważ nie używa on .sql. Jednak już dostałem dobre informacje na temat poważnych problemów z naszym kodem.

+1

uważaj na to, co zmienisz. Jeśli naprawdę pracujesz nad systemem zbudowanym przez hack, nic nie zepsujesz. Jednakże, jeśli system został wykonany przez kogoś naprawdę dobrego, to możesz złamać wiele dobrych planów zapytania! –

Odpowiedz

7

masz kilka do tego celu:

  • Atomiq - handlowych
  • Black Duck Suite - handlowy (oprogramowanie analizujące suite)
  • CloneDR - handlowych (Ada, C, C++, C#, Java, COBOL, Fortran, Python, VB.net, VB6, PHP4/5, PLSQL, SQL2011, XML, wiele innych)
  • ConQAT (Open Source, obsługuje: ABAP, ADA, Cobol , C/C++, C#, Java, PL/I, PL/SQL, Python, Tekst, Transact SQL, Visual Basic, XML)
  • Simian (oprogramowanie)
4

Możesz spróbować uruchomić Simian. Jest to narzędzie, które obsługuje wiele języków (w tym SQL)

+0

Przyjemnie wyglądające narzędzie, które. +1 – gbn

1

paczkowana narzędzie jest prawdopodobnie będzie najszybsza/Najprostszym sposobem, aby się tam dostać, ale sposób, aby uzyskać tam z maksymalnej liczby punktów hakerów i maksimum zabawy byłoby uruchomić Levenshtein distance algorithm przed przechowywanego kodu procedury w bazie danych, które mogą być łatwo dostępnym przy użyciu:

SELECT OBJECT_NAME(OBJECT_ID) as ProcName, 
     OBJECT_DEFINITION(OBJECT_ID) as ProcCode 
FROM sys.procedures 

Here is one example kogoś realizującego algorytm w T-SQL.

Oczywiście trzeba również przejrzeć wszystkie procenty i porównać je jeden do jednego, pokrywając każdą kombinację, a następnie grupować wyniki.

Mogę faktycznie spróbować samemu, tylko dla kopnięć!

Powiązane problemy