Benefícios da análise de código estático
-
01-07-2019 - |
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.
Solução
Existem todos os tipos de benefícios:
- Se houver anti-padrões em seu código, você pode ser avisado sobre isso.
- Existem algumas métricas (como de McCabe Cyclomatic Complexidade) que dizer coisas úteis sobre o código-fonte.
- 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.