2011-02-07 2 views
4

Кто-нибудь знает хороший инструмент для поиска дублирующего кода в программе delphi, например SolidSDD?Обнаружение дублирования кода - Delphi

+5

Я уверен, что вы могли бы найти кого-нибудь на SO, чтобы написать на уровне системы крюк, чтобы отключить 'WM_COPY' и' WM_PASTE' устранить эту проблему на источник! –

+0

@ Давид Хеффернан: Есть еще один тип дублированного кода, называемый «изобретенным колесом». Приобретение «копии» и «вставки» в этом случае не кажется полезным. –

+2

@Andriy Извините, я пытался сделать шутки, основанные на большом объеме вопросов SO от людей, пытающихся перехватить системные вызовы. Я должен был сделать более очевидным, что я не серьезно. –

ответ

5

Delphi 2010 & XE есть его built in. Существует новый инструмент под названием Audits & Метрики.

Они выполняют несколько тестов против вашего кода, чтобы найти различные проблемы или неприятные запахи, которые могут быть обнаружены при статическом анализе.

В XE из меню вы можете выбрать, Project | Аудит QA для доступа к функциям проверки дубликатов кода. Вы можете запустить 3 разных проверки кода.

QA Audits

Хотя это не делает дубликат обнаружения кода, есть также Peganza Pascal Analyzer, который выполняет различные проверки с помощью статического анализа.

+0

Хорошо, спасибо за ответ, но, как мой вопрос говорит, я ищу инструмент для поиска дублирующего кода. Ни Аудиты, ни Пеганза не могут этого сделать. –

+2

Аудиты поддерживают дублирующий код. Я отредактирую свой ответ с помощью экрана и инструкций. –

+1

По крайней мере, в 2010 году эта функция недоступна для Professional Edition. – awmross

3

Попробуйте это:

Delphi Audit

+0

он не выполняет обнаружение двойного кода. –

+0

На самом деле, см. Ответ Роберта Лава (обновленный) –

2

Вы можете попробовать AQTime от программного обеспечения Smartbear, его приятно профилирование и анализирующей инструмент, который позволяет вам обнаруживать duplicated code и многое другое, как:

покрытие кода, вопросы производительности, распределение памяти, Exception- и функции трассировки и т.д.

Этот инструмент не является бесплатным, но его очень мощный и поддерживает приложения Delphi, вы даже можете интегрировать его в свою среду IDE.

для получения дополнительной информации о гр AQ-Profilers

+0

Хорошо ... мы используем AQTime здесь, когда я работаю, и я не знал, что это возможно. –

+0

Как AQTime помогает найти дубликат кода в любом случае? – Kromster

+0

С помощью профилировщика Duplicated code прочитайте это http://smartbear.com/support/viewarticle/18222/ – CloudyMarble

4

Мы нашли DupeCheck через веб-сайт Delphi в Торри в. Это автономный .exe, который сканирует список каталогов и проходит через .pas-файлы, пытаясь искать повторяющиеся строки кода - игнорируя комментарии, пробелы и чувствительность к регистру.

0

Я использовал Simian. http://www.harukizaemon.com/simian/

Вы можете легко запустить его, чтобы найти дублированный код. Например:

simian-2.3.33 -ignoreCharacterCase+ -ignoreCurlyBraces+ %1 

Это не специально для Delphi, но это работает.

Вот пример вывода:

Simian is not free unless used solely for non-commercial or evaluation purposes. 
{failOnDuplication=true, ignoreCharacterCase=true, ignoreCurlyBraces=true, ignoreIdentifierCase=true, ignoreModifiers=true, ignoreStringCase=true, threshold=6} 
Found 6 duplicate lines in the following files: 
Between lines 6386 and 6391 in c:\develop\Schedule.pas 
Between lines 6370 and 6375 in c:\develop\Schedule.pas 
Found 6 duplicate lines in the following files: 
Between lines 5229 and 5235 in c:\develop\Schedule.pas 
Between lines 5189 and 5195 in c:\develop\Schedule.pas 
Found 6 duplicate lines in the following files: 
Between lines 6892 and 6898 in c:\develop\Schedule.pas 
Between lines 6418 and 6423 in c:\develop\Schedule.pas 
Between lines 6402 and 6407 in c:\develop\Schedule.pas 
Between lines 6354 and 6359 in c:\develop\Schedule.pas 
Between lines 6338 and 6343 in c:\develop\Schedule.pas 
Found 27 duplicate lines in the following files: 
Between lines 2995 and 3022 in c:\develop\Schedule.pas 
Between lines 3035 and 3062 in c:\develop\Schedule.pas 
Смежные вопросы