Я ищу много ответов, чтобы узнать о новых инструментах и консолидировать это знание в одном вопросе/потоке, таким образом, я сомневаюсь, что будет 1 истинный ответ на этот вопрос.
Мой ответ на мой собственный вопрос - то, что мы используем:
, Гудзон также имеет плагин сканера задачи, который отобразит количество TODO и FIXMEs, а также покажет, где они находятся в исходных файлах.
Все интегрированы со Знатоком 1.x в нашем случае и наброшены Гудзон, который выполняет наши сборки на регистрации, а также дополнительных вещах ночью и еженедельно. Гудзонская тенденция изображает в виде графика наши тесты JUnit, покрытие, findbugs, а также открытые задачи. Существует также Гудзонский плагин, который сообщает и изображает наши предупреждения компиляции в виде графика. У нас также есть несколько тестов производительности с их собственными графиками производительности и использования памяти, со временем использование Гудзона выводит плагин на печать также.
Вы не перематываете свои MemoryStreams, поэтому хеш вычисляется из пустой последовательности байтов. Используйте
ms1.Position = 0;
ms2.Position = 0;
после вызова Save
.
Еще одно замечание: не используйте GetBuffer
таким образом. Используйте ToArray
, который даст вам массив байтов того же размера, что и длина потока - GetBuffer
возвращает необработанный буфер, который (обычно) будет иметь некоторые отступы, которые вы бы не хотели использовать случайно. Вы можете использовать GetBuffer
, если затем убедитесь, что используете только соответствующую его часть, конечно - это позволяет избежать создания новой копии данных.
GetBuffer
возвращает необработанный буфер, который (обычно) будет иметь некоторые отступы, которые вы не захотите использовать случайно. Вы можете использовать GetBuffer
, если затем убедитесь, что используете только соответствующую его часть, конечно - это позволяет избежать создания новой копии данных. s length - GetBuffer
возвращает необработанный буфер, который (обычно) будет иметь некоторые отступы, которые вы не захотите использовать случайно. Вы можете использовать GetBuffer
, если затем убедитесь, что используете только соответствующую его часть, конечно - это позволяет избежать создания новой копии данных.