Подтвердите, что двоичные файлы сайта ASP.NET не меняются после добавления комментариев в исходный код.

Член моей проектной команды должен добавить комментарии к исходному коду во многие свои проекты ASP.NET, чтобы обеспечить лучшую документацию. Некоторые члены команды проекта рекомендуют проводить тщательное регрессионное тестирование, если мы добавляем какие-либо комментарии к исходному коду, поскольку существует небольшая вероятность того, что часть исходного кода может непреднамеренно быть закомментирована и вызвать изменение в поведении программы. Затем мы также должны были бы провести приложение через процедуру управления изменениями и перенести его на наш производственный сервер.

Мне кажется, что мы должны иметь возможность добавлять комментарии исходного кода, перекомпилировать исходный код и использовать что-то вроде хеша md5 (или sha1) (используя что-то вроде fciv) для сравнения библиотек DLL до и после, чтобы подтвердить, что комментарии исходного кода не повлияли на скомпилированную версию. Тестируя эту концепцию с помощью простого консольного приложения, я вижу, что проблема заключается в том, что хэш двоичных файлов изменится, если увеличится версия DLL. Если бы я мог удалить манифест из двоичных файлов, возможно, я мог бы тогда провести сравнение двоичных файлов между яблоками и яблоками.

В качестве дополнительной проблемы эти приложения ASP.NET используют модель компиляции веб-сайта ASP.NET, в которой код динамически компилируется (предположительно в папку%SystemRoot%\Microsoft.NET\Framework\version\Temporary ASP.NET Files), когда сайт посещается, а не модель веб-приложения, где весь код проекта скомпилирован в одну сборку в папке bin.

Есть идеи?

2 ответа

Решение

Ответ Рохана Уэста (спасибо Рохану!) Привел меня к комментариям bitdiffer, которые предоставили следующее решение:

  • Перед добавлением комментариев к коду заново создайте файлы кода из IL с помощью Reflector и надстройки Reflector.FileDisassembler. Это создаст каталог файлов исходного кода, который содержит основной исходный код только без комментариев.
  • Добавьте комментарии к коду.
  • Создайте второй каталог сгенерированных файлов исходного кода, используя Reflector и надстройку Reflector.FileDisassembler.
  • Используйте разностный инструмент, такой как WinMerge, чтобы сравнить до и после сгенерированных каталогов исходного кода и убедиться, что изменения комментария исходного кода не изменили основной код.

Хеширование сборок не работает, даже если версия сделана постоянной, после каждой компиляции меняется уникальный guid, встроенный в сборку, каждый раз создается новый хеш. Можно ли изменить приложение так, чтобы оно было предварительно скомпилировано?

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

Существует также инструмент под названием ndepends, который имеет API для сравнения сборок. Это очень круто!

Другие вопросы по тегам