Pergunta

O que são os benefícios de fazer análise estática de código em seu código-fonte? Eu estava brincando com FxCop e eu queria saber se há quaisquer benefícios além certificando-se de que você está seguindo os padrões de codificação.

Foi útil?

Solução

Existem todos os tipos de benefícios:

  1. Se houver anti-padrões em seu código, você pode ser avisado sobre isso.
  2. Existem algumas métricas (como de McCabe Cyclomatic Complexidade) que dizer coisas úteis sobre o código-fonte.
  3. Você também pode obter grandes coisas como call-gráficos e diagramas de classe de análise estática. Essas são maravilhoso se você está atacando um nova base de código.

Dê uma olhada SourceMonitor

Outras dicas

Muitas classes de vazamentos de memória e erros de lógica comum pode ser capturado estaticamente também. Você também pode olhar para a complexidade ciclomática e tal, que pode ser parte dos "padrões de codificação" que você mencionou, mas pode ser uma métrica separada que você usa para avaliar a "limpeza" algorítmica do seu código.

Em qualquer caso, apenas uma combinação criteriosa de profiling (dinâmico ou run-time análise) e análise estática / linting irá garantir, uma base de código consistente e fiável. Oh, isso, e um pouco de sorte; -)

É um trade-off. Para um desenvolvedor individual que quer melhorar sua compreensão da estrutura e diretrizes, eu definitivamente incentivá-lo. FxCop gera um monte de ruído / falsos positivos, mas eu também encontrei os seguintes benefícios:

  • detecta erros (por exemplo, um aviso sobre um argumento não utilizado pode indicar que você usou o argumento errado no corpo do método).

  • compreender as diretrizes FxCop está a seguir o ajuda a se tornar um desenvolvedor melhor.

No entanto, com uma equipe mista-capacidade, FxCop pode muito bem gerar demasiados positivos falsos para ser útil. desenvolvedores junior terá dificuldade apreciação sobre se algumas das violações mais esotéricos levantadas por FxCop deve preocupar-los ou são apenas ruído.

A linha inferior:

  • Se você está desenvolvendo bibliotecas de classes reutilizáveis, como um quadro em casa, certifique-se que você tem bons desenvolvedores e usar FxCop.

  • Para o desenvolvimento de aplicativos todos os dias com equipes mistas capacidade, ele provavelmente não será possível.

Na verdade, FxCop não particularmente ajudá-lo a seguir um padrão de codificação. O que ele faz ajudá-lo com está projetando um bem pensado framework / API. É verdade que partes do padrão de codificação (como invólucro de membros públicos) serão capturados por FxCop, mas padrões de codificação não é o foco.

padrões de codificação pode ser verificado com StyleCop , que verifica o código fonte em vez do MSIL como FxCop faz.

Ele pode pegar os bugs reais, como esquecer de Descarte IDisposables.

depende das regras, mas muitos defeitos subtis pode ser evitado, o código pode ser limpo, possíveis problemas de desempenho podem ser detectados etc.

Coloque-o de uma maneira ... se é barato ou gratuito (em tempo e custos financeiros) e não quebrar nada, por que não usá-lo?

FxCop

Há uma lista de todos os avisos em FxCop . Você pode ver que existem avisos das seguintes áreas:

Projeto Avisos

Avisos que suportam biblioteca adequada projetar conforme especificado pelo .NET Framework Guia de Design.

Advertências Globalização

Os avisos que o apoio mundo-pronto bibliotecas e aplicações.

Avisos de interoperabilidade

Os avisos que o apoio interagindo com COM clientes.

Avisos de nomenclatura

Os avisos que o apoio adesão ao convenções de nomenclatura do .NET Framework Guia de Design.

avisos de desempenho

Os avisos de que o desempenho suporte de alta bibliotecas e aplicações.

Avisos de segurança

avisos que suporte bibliotecas mais seguros e aplicações.

Dependendo da sua aplicação algumas dessas áreas pode não ser muito interessante, mas se você, por exemplo, necessidade COM interoperabilidade, os testes podem realmente ajudá-lo a evitar as armadilhas.

Outras ferramentas

Outras ferramentas de verificação estática pode ajudá-lo a detectar erros como não descartar um IDisposable , vazamentos de memória e outros erros sutis. Para um caso extremo ver o ainda-não-lançado ferramenta NStatic .

NStatic é usado para rastrear coisas como parâmetros redundantes, expressões que avaliam a constantes, loops infinitos e muitas outras métricas.

Os benefícios são que você pode automaticamente encontrar e quantificar dívida técnica dentro do seu aplicativo de software.

I encontrar ferramentas de análise estática de código indispensável no desenvolvimento de aplicações de grandes empresas, onde muitos desenvolvedores e testadores de ir e vir ao longo da vida de um aplicativo, mas a qualidade do código ainda precisa ser mantida elevada ea dívida técnica gerida de forma adequada.

Quais são os benefícios de fazer análise estática de código em seu código-fonte?

Os benefícios dependem do tipo de análise estática de código que é executada. Análise estática de código pode variar de simples a sofisticadas técnicas. Por exemplo, a geração de métricas sobre o seu código-fonte para identificar código propenso erro é uma técnica. Outras técnicas ativamente tentativa de encontrar erros em seu código. técnicas sofisticadas usar métodos formais para provar que seu código está livre de bugs.

Portanto, o benefício depende do tipo de análise estática de código a ser utilizado. Se a técnica produz métricas (tais como a complexidade do código, etc), em seguida, uma vantagem é que estas métricas podem ser utilizadas durante a revisão do código de identificação de código de erro propenso. Se a técnica detecta erros, em seguida, a vantagem é que o desenvolvedor pode identificar erros antes de teste de unidade. Se métodos formais técnicas baseadas são usadas para provar que o código não contém erros, então o benefício é que esta informação poderia ser usada para provar ao departamento de QA (ou autoridades de certificação) que o código é livre de certos tipos de erros.

Uma descrição mais detalhada das técnicas e benefícios também podem ser encontradas nesta página: www.mathworks.com / static-análise

Vou tentar descrever os principais:

  • estáticos identifica de análise de código detecta no programa em fase inicial, resultando redução no custo para corrigi-los.
  • Pode detectar falhas em entradas e saídas do programa que não pode ser visto através de testes dinâmicos.
  • Ele verifica automaticamente códigos não compilados e identifica vulnerabilidades.
  • É o que eu sei de lidar com checkmarx é que corrige análise estática de código múltiplas vulnerabilidades em um único ponto, o que economiza muito tempo para o desenvolvedor.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top