Pergunta

Nossa equipe de QA quer concentrar seus testes com base no que EXEs e DLLs ter realmente mudado entre constrói. Temos um relatório de mudança agradável svn, mas a relação entre a fonte e os binários alterados nem sempre é óbvia. O constrói estamos comparando estão sempre limpos completa constrói, por isso não podemos usar timestamps do sistema de arquivos. Estou à procura de ferramentas para comparar janelas (e janelas CE) binários PE que irá ignorar a data e hora incorporadas e outras cruft. Quaisquer recomendações para ferramentas ou outros formas de gerar um relatório confiável 'que binários realmente mudaram? Obrigado.

Esclarecimento: Obrigado pelas respostas até agora, mas não podemos gerar o relatório, fazendo byte a byte simples compara ou comparar somas de verificação, porque todos os arquivos aparecem diferente a cada vez que nós construímos, mesmo se as fontes Haven' t mudou, por causa de marcas de tempo que as inserções do compilador. O problema é como ignorar os falsos positivos. A idéia desmontar e comparar está mais próximo do que precisamos, eu acho ...

respondidas! Bindiff é exatamente o que eu estava procurando. Muito obrigado.

Foi útil?

Solução

Você teve uma olhada bindiff ?

Outras dicas

Eu corri para este problema antes. Minha solução foi a escrever uma ferramenta que definir todas as marcas de tempo em um .exe / .dll para um valor conhecido. Eu executá-lo como uma etapa de pós-construção. Então diffs binários iria funcionar muito bem.

Você poderia talvez desmontar o binário, e depois fazer uma comparação sobre a montagem ...

Isso soa como sua equipe de QA está tomando a abordagem errada embora ... Ele deve não importa a eles o que os olhares de código, como; só que ele faz o que é suposto fazer.

Edit: Oh! Depois de lê-lo novamente, eu percebi que eu mal interpretada a sua pergunta. Eu pensei que eles queriam testar os métodos que tinham mudado ...

Nesse caso, por que não começar o hash MD5 e comparar esses? A mudança mais ínfimo irá causar um hash totalmente diferente a ser gerado.

Não tenho certeza que tipo de binários (DLLs? PE / WinCE Apenas executáveis? Outro?) É possível informações sobre a versão incorporar nos binários, por exemplo, usando uma tag de controle de origem que atualiza a versão do código-fonte em commits. Então, quando a nova compilação é criado, o binário teria de corda versão atualizada também. Em vez de ter que diff um arquivo binário, você poderia usar a cadeia de versão e verifique se para mudanças.

Quando eu estava trabalhando na ferramenta "home grown" para verificação da instalação na minha empresa, usamos Beyond Compare como um backend para comparação.

Ele tem um grande arquivo / comparação de pasta (binário bem) e recursos de script e relatórios XML saída pode.

Projeto dependência gráfico gerador e Dependência-Grapher para C ++ - Projetos tanto para uso GraphViz visualizar dependências. Imagino que você poderia usar qualquer um deles como base para as suas necessidades com destaque especial das agências no gráfico de dependência, onde os arquivos de origem ou outras folhas foram alterados.

MD5 hashes ou checksums (como sugerido acima), um simples diff ignorando espaços em branco e filtrando comentário alterações ou informações changlist de seu sistema de controle de versão pode sinalizar que arquivos foram alterados.

GNU binutils especificamente cordas

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top