Идентификация файлов .patch

Вот в чем проблема. Я пишу часть программного обеспечения, которое запрашивает вложения об ошибках из системы отслеживания ошибок. Я могу отфильтровать запрос, получая только текстовое вложение (обычный/текст и т. д.), и я хочу сохранить только действительные файлы исправлений (файлы, которые имеют аналогичный вывод diff -u, который можно применить в качестве исправления к исходному файлу). Поэтому мне нужен способ указать, какое вложение является допустимым патчем. Например:

скажем, у меня есть это вложение со следующим содержанием:

Индекс: компилятор/cpp/src/generate/t_csharp_generator.cc

---compiler/cpp/src/generate/t_csharp_generator.cc (ревизия 1033689) +++compiler/cpp/src/generate/t_csharp_generator.cc (рабочая копия) @@ -456,7 +456,7 @@ t = ((t_typedef*)t)->get_type(); } if ((*m_iter)->get_value() != NULL) { - print_const_value(out, "this." + (*m_iter)->get_name(), t, (*m_iter)->get_value(), true , истинный); + print_const_value(out, "this._" + (*m_iter)->get_name(), t, (*m_iter)->get_value(), true, true); } }

Как я могу узнать, что это правильный патч? Есть ли регулярное выражение для соответствия некоторым возможным выводам diff -u, поэтому я могу написать что-то вроде этого в java:

Строка attachmentContent = ..... if(attachmentContent.matches(regex))...

Заранее спасибо, Элвис


person Elvis    schedule 10.05.2011    source источник


Ответы (1)


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

С другой стороны, у вас не должно возникнуть особых проблем с поиском библиотеки, анализирующей и загружающей исправления Unix (и это определенно не требует больших вычислительных ресурсов), поэтому простая попытка загрузки исправления позволит вам проверить его. например утилиты сравнения Java должны сделать это прямо.

person armel    schedule 28.12.2011