'анaлизaтор' программного кода
От: Mavlyudov  
Дата: 24.04.06 18:08
Оценка:
Допустим, есть некоторое (большое) количество курсовых работ
(по технологии программирования) с исходными кодами. нужно определить, насколько похожи эти
исходники. т.е сравнить их на наличие одинаковых(или очень похожих похожих) кусков кода.
И на основе этого анализа, вывести, например коэффициент подобия или процент
подобия, или в каких именно работах найдены совпадения...
Иными словам нужно написать программу-aнaлизaтор кода для этого...
Искал в Инете, но ничего похожего не нашел..как приваили по словао "анализатор" понималось
что-то другое: компилятор, анализатор скрытых ошибок и т.д.
Может быть, у кого-нибудь есть идеи или советы...или какие-нибудь разработки....
буду благоарен любому помощи...
Re: 'анaлизaтор' программного кода
От: Relayer http://www.strongbit.com
Дата: 24.04.06 18:40
Оценка:
Здравствуйте, Mavlyudov, Вы писали:

M>Допустим, есть некоторое (большое) количество курсовых работ

M>(по технологии программирования) с исходными кодами. нужно определить, насколько похожи эти
M>исходники. т.е сравнить их на наличие одинаковых(или очень похожих похожих) кусков кода.

у нас такое есть готовое см FuzzySearch Library здесь
если хочешь экспериментировать — тогда смотри "расстояние редактирования"
Re[2]: 'анaлизaтор' программного кода
От: Аноним  
Дата: 24.04.06 21:26
Оценка:
Здравствуйте, Relayer, Вы писали:

R>у нас такое есть готовое см FuzzySearch Library здесь

R>если хочешь экспериментировать — тогда смотри "расстояние редактирования"

спасибо...
т.е несколько исходников курсовых работ(в моем случае)
можно считать за текст, доускающий ошибки (текст с ошибками)....
или, как написано в описании это и есть апкроксимация соответствия строк.
В данном ситуации, думаю, будет целесообразно использовать такие функции,как
CompareStringFuzzy и CompareTextFuzzy..
а исхоников нет.. они только продаются..
P.S. на счет "расстояния редактирования".
использовал поисковик сайта. нашел наиболее интересное:
"алгоритм вычисления похожести строк"...

слышал еще про self organizing maps и разделение на кластеры...
Re[3]: 'анaлизaтор' программного кода
От: Miroff Россия  
Дата: 25.04.06 04:11
Оценка:
Здравствуйте, Аноним, Вы писали:

А>спасибо...

А>т.е несколько исходников курсовых работ(в моем случае)
А>можно считать за текст, доускающий ошибки (текст с ошибками)....

Ушлые студенты перед сдачей очень часто меняют форматирование кода. Зачастую автоматическим форматтером, подкрутив у него code conventions. Если рассматиривать код как текст, расстояние редактирования будет плохой метрикой. Я бы предложил парсить код в AST и считать расстояние редактирования между двумя AST.
Re[4]: 'анaлизaтор' программного кода
От: raskin Россия  
Дата: 25.04.06 04:52
Оценка:
Miroff wrote:
> Ушлые студенты перед сдачей очень часто меняют форматирование кода.
> Зачастую автоматическим форматтером, подкрутив у него code conventions.
Всех перекинуть в k&r с помощью indent.
> Если рассматиривать код как текст, расстояние редактирования будет
> плохой метрикой. Я бы предложил парсить код в AST и считать расстояние
> редактирования между двумя AST.
умные ушлые студенты переименовывают всё, что переименовывается и бьют
какую-нибудь процедуру в случайном месте.. Последнее, правда, требует
понимания программы, зато требует много сил для автоматического обнаружения.
Posted via RSDN NNTP Server 2.1 beta
Re[4]: 'анaлизaтор' программного кода
От: Relayer http://www.strongbit.com
Дата: 25.04.06 08:46
Оценка:
Здравствуйте, Miroff, Вы писали:

M>Ушлые студенты перед сдачей очень часто меняют форматирование кода. Зачастую автоматическим форматтером, подкрутив у него code conventions. Если рассматиривать код как текст, расстояние редактирования будет плохой метрикой. Я бы предложил парсить код в AST и считать расстояние редактирования между двумя AST.


это все решается токенизацией и полным игнорированием форматирования
Re[3]: 'анaлизaтор' программного кода
От: Relayer http://www.strongbit.com
Дата: 25.04.06 08:49
Оценка:
Здравствуйте, Аноним, Вы писали:

А>В данном ситуации, думаю, будет целесообразно использовать такие функции,как

А>CompareStringFuzzy и CompareTextFuzzy..

CompareTextFuzzy. собственно оня для этого и писалась — выяснить насколько два фрагмента текста похожи друг на друга.

А>а исхоников нет.. они только продаются..


звыняй, но кушать то хочется

А>слышал еще про self organizing maps и разделение на кластеры...


ой... ты бы еще нейросети вспомнил хотя если есть год свободного времени — можно и это попробовать.
Re: 'анaлизaтор' программного кода
От: ON  
Дата: 26.04.06 20:22
Оценка:
у меня есть программа поиска похожих файлов
www.aicommunity.org/members/no/findtext.rar
только не спрашивайте как она работает, очень умная
Posted via RSDN NNTP Server 2.0
Re: 'анaлизaтор' программного кода
От: Ranger_XL  
Дата: 27.04.06 08:18
Оценка:
Здравствуйте, Mavlyudov, Вы писали:

M>Может быть, у кого-нибудь есть идеи или советы...или какие-нибудь разработки....

M>буду благоарен любому помощи...

Я делал так:
1) В эталонном исходнике выделял некоторые ключевые конструкции, характерные для данного автора
2) Составлял их них регулярные выражения
3) Парсил прочие работы в поисках совпадений

Дешево и сердито
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.