Pergunta

Existem ferramentas disponíveis que calcularão métricas de código (por exemplo, número de linhas de código, complexidade ciclomática, acoplamento, coesão) para o seu projeto e, ao longo do tempo, produzirão um gráfico mostrando as tendências?

Foi útil?

Solução

No meu último projeto eu usei Monitor de Fonte.É uma ótima ferramenta gratuita para análise de métricas de código.
Aqui está um trecho do site oficial do SourceMonitor:

  • Coleta métricas em um passe rápido e único através de arquivos de origem.
  • Mede métricas para código -fonte escritos em C ++, C, C#, VB.NET, Java, Delphi, Visual Basic (VB6) ou HTML.
  • Inclui métricas de método e nível de função para C ++, C, C#, VB.NET, Java e Delphi.
  • Salva as métricas nos pontos de verificação para comparação durante os projetos de desenvolvimento de software.
  • Exibe e imprime métricas em tabelas e gráficos.
  • Opera dentro de uma GUI do Windows padrão ou dentro de seus scripts usando arquivos de comando XML.
  • Exporta métricas para arquivos XML ou CSV (valor se separado por vírgula) para processamento adicional com outras ferramentas.

Para .NET ao lado NDepend que é simplesmente a melhor ferramenta, posso recomendar vilão.

As seguintes ferramentas podem realizar análises de tendências:

Outras dicas

Sonar é definitivamente uma ferramenta que você deve considerar, especialmente para projetos Java.No entanto, ele também irá lidar com código PHP ou C/C++, Flex e Cobol.

Aqui está uma captura de tela que mostra algumas métricas em um projeto:

texto alternativo http://sonar.codehaus.org/wp-content/uploads/2009/05/squid-metrics.png

Observe que você pode experimentar a ferramenta usando o site de demonstração em http://nemo.sonarsource.org

NDepend para .net

Eu também estava procurando uma ferramenta/plugin de métricas de código para meu IDE, mas até onde eu sei, não há nenhuma (para o Eclipse) que também mostre um gráfico da complexidade em um período de tempo especificado.Contudo, encontrei o plugin de métricas do eclipse, ele pode lidar com:

  • Complexidade ciclomática de McCabe
  • Acoplamentos Eferentes
  • Falta de coesão nos métodos
  • Linhas de código no método
  • Número de campos
  • Número de níveis
  • Número de locais no escopo
  • Número de parâmetros
  • Número de declarações
  • Métodos ponderados por classe

E ao usá-lo, não perdi a opção gráfica que você procura também.
Acho que, se você não encontrar nenhum plugin/ferramenta que possa lidar com os gráficos ao longo do tempo, você deve procurar a ferramenta que mais combina com você e que oferece todas as informações que você precisa;mesmo que as informações fornecidas sejam apenas para a versão atual do seu projeto.

Como observação lateral, o plugin de métricas do eclipse permite que você exportar os dados para um arquivo externo (o link leva para um exemplo), então se você usar uma ferramenta de controle de origem, e deveria!, você sempre poderá exportar os dados para a compilação específica e armazenar o arquivo junto com o código-fonte, dessa forma você ainda terá um (básico ) maneira de voltar no tempo e verificar as diferenças.

tenha em mente: o que você mede é o que você obtém.loc não diz nada sobre produtividade ou eficiência.

avalie um programador por linhas de código e você obterá ..linhas de código.o mesmo argumento vale para outras métricas.

ah.. http://www.crap4j.org/ é uma métrica muito conservadora e útil.estabelece complexidade em relação à cobertura.

NDepend, estou usando e é melhor para esse fim.Verifique isto:http://www.codeproject.com/KB/dotnet/NDepend.aspx

Em relação à ferramenta NDepend vem com 82 métricas de código diferentes, desde Número de Linhas de Código, até Classificação de Método (popularidade), Complexidade Ciclomática, Falta de Coesão de Métodos, Cobertura Percentual (extraída de NCover ou VSTS), Profundidade de Herança...

Com seu sistema de regras, o NDepend também pode encontrar problemas e estimativas dívida técnica que é uma métrica de código interessante (quantidade de esforço de desenvolvimento para corrigir problemas vs. quantidade de tempo de desenvolvimento desperdiçado por ano para deixar os problemas não resolvidos).

Todas essas métricas são detalhadas aqui.

Se você estiver no espaço .NET, Developer Express' CódigoRush fornece LOC, complexidade ciclomática e (bastante excelente, IMHO) Complexidade de manutenção análise de código em tempo real.

(Desculpe pelo link Complexidade de Manutenção;vai para o cache do Google.O original parece ser um caixa eletrônico offline).

Atlassian FishEye é outra excelente ferramenta para o trabalho.Ele se integra ao seu sistema de controle de origem (atualmente suporta CVS, SVN e Perforce) e analisa todos os seus arquivos dessa forma.A análise é bastante básica e o produto em si é comercial (mas com preços muito razoáveis, IMO).

Você também pode obter um complemento chamado Crisol, que facilita revisões de código por pares.

Para Visual Studio .NET (pelo menos C# e VB.NET), acho o gratuito Ferramentas de estúdio extremamente útil para métricas.Ele também adiciona vários recursos encontrados em ferramentas comerciais, como ReSharper.

Analisador de código é uma ferramenta simples que gera esse tipo de métrica.

alt text
(fonte: teel.ws)

Para Python, pilar pode fornecer algumas métricas de qualidade de código.

Há também um plugin de métricas de código para refletor, caso você esteja usando .NET.

eu recomendaria Extensão do visualizador de métricas de código para estúdio visual.

É muito fácil analisar a solução de uma só vez, faça também uma comparação se você progrediu ;-)

Consulte Mais informação aqui sobre a características

Na frente do PHP, acredito, por exemplo phpUnderControl inclui métricas por meio phpUnit (se não me engano).

Lembre-se de que as métricas costumam ser falhas.Por exemplo, um codificador que está trabalhando em problemas triviais produzirá mais código e terá melhor aparência em seus gráficos do que um codificador que está resolvendo problemas complexos.

Se você está atrás de alguma análise de tendências, realmente significa alguma coisa medir além do SLOC?

Mesmo se você apenas fizer um grep para o final do ponto-e-vírgula e contar o número de linhas retornadas, o que você procura é consistência na técnica de medição SLOC.Desta forma, a medição de hoje pode ser comparada com a medição do mês passado de uma forma significativa.

Eu realmente não consigo ver o que uma tendência de Complexidade Ciclométrica McCabe daria?Acho que o CC deveria ser usado mais para obter um instantâneo da qualidade e fornecer feedback aos desenvolvedores.

Editar:Ah, sim.Pensei em algumas outras medidas que podem ser úteis.Comentários como porcentagem do SLOC e cobertura de teste.Nenhum dos quais você quer deixar escapar.Voltar para reformar qualquer um deles nunca é tão bom quanto fazê-los "no calor do momento!"

HTH.

saúde,

Roubar

Entenda o Scitools tem a capacidade de gerar muitas métricas de código para você.Não tenho muita experiência com recursos de métricas de código, mas os recursos de análise estática em geral eram bons e o preço era muito razoável.O suporte foi excelente.

Medidor de código de projeto fornece um relatório diferencial de histórico de desenvolvimento (em formato Excel) que mostra suas métricas de progresso de codificação em SLOC, tempo e porcentagem de produtividade (sua estimativa de tempo é baseada na complexidade ciclomática e outras métricas).Então, no Excel você pode produzir facilmente o gráfico desejado.

veja este artigo que descreve passo a passo:http://www.projectcodemeter.com/cost_estimation/help/FN_monsizing.htm

Para Java você pode experimentar nossa ferramenta, Portão de Qualidade que calcula mais de 60 métricas de código-fonte, rastreia todas as alterações ao longo do tempo e também fornece uma classificação geral para a capacidade de manutenção do código-fonte.

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