Calcular métricas de código [fechado]

87

Existem ferramentas disponíveis para calcular as 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, com o tempo, produzir um gráfico mostrando as tendências?

Bjorn Reppen
fonte
Depende do idioma, qual idioma você está usando?
Valentin Rocher

Respostas:

67

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

  • Coleta métricas em uma passagem rápida e única pelos arquivos de origem.
  • Mede métricas para código-fonte escrito em C ++, C, C #, VB.NET, Java, Delphi, Visual Basic (VB6) ou HTML.
  • Inclui métricas de nível de método e função para C ++, C, C #, VB.NET, Java e Delphi.
  • Salva métricas em pontos de verificação para comparação durante projetos de desenvolvimento de software.
  • Exibe e imprime métricas em tabelas e gráficos.
  • Opera em uma GUI padrão do Windows ou dentro de seus scripts usando arquivos de comando XML.
  • Exporta métricas para arquivos XML ou CSV (valores separados por vírgula) para processamento posterior com outras ferramentas.

Para .NET além do NDepend, que é simplesmente a melhor ferramenta, posso recomendar vil .

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

aku
fonte
SourceMonitor parece ser uma ferramenta somente para Windows. Existe algo semelhante para outros sistemas operacionais (Linux, BSD, Mac)?
Mnementh
Mnementh, eu sou o Windows Dev, não conheço nenhuma dessas ferramentas para os caras do FOSS. Talvez você possa tentar executar o SourceMonitor no emulador do Wine?
aku
2
Agora existe uma ferramenta do tipo NDepend para C ++, CppDepend
Goosey
SourceMonitor é apenas para uso não comercial.
Scott 混合 理论
2
@Kevin 混合 理论 leia a licença com atenção - você pode usá-la em qualquer ambiente em que simplesmente não pode vendê-la. "Ou seja, você pode usar este executável como parte de seus próprios esforços de desenvolvimento de software (comercial ou outro), mas não pode vendê-lo ..."
Natalie Adams
12

Sonar é definitivamente uma ferramenta que você deve considerar, especialmente para projetos Java. No entanto, 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 de 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

Romain Linsolas
fonte
Aparentemente, o SO não me deixa corrigir o link - o link deveria ser: nemo.sonarsource.org
Natalie Adams
8

Eu também estava procurando por uma ferramenta / plugin de métricas de código para meu IDE, mas até onde eu sei, não há nenhum (para o eclipse) que também mostre um gráfico da complexidade em um período de tempo especificado. No entanto, encontrei o plug - in eclipse metrics , 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 de gráfico que você está procurando também.
Eu acho que, se você não encontrar nenhum plug-in / ferramenta que possa lidar com a representação gráfica ao longo do tempo, você deve procurar a ferramenta que mais se adapta a você e oferece todas as informações de que você precisa; mesmo que as informações fornecidas sejam apenas para a construção atual do seu projeto.

Como uma observação lateral, o plugin eclipse metrics permite que você exporte os dados para um arquivo externo (o link vai para um exemplo), então se você usar uma ferramenta de controle de origem, e você deve !, você sempre pode exportar os dados para o arquivo específico construir e armazenar o arquivo junto com o código-fonte, dessa forma você ainda tem uma maneira (básica) de voltar no tempo e verificar as diferenças.

sven
fonte
4

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

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

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

Andreas Petersson
fonte
2
Avalie um programador por linhas de comentários e você obterá ... linhas de comentários.
EML
3

Em relação à ferramenta NDepend, ela vem com 82 métricas de código diferentes, de Número de Linhas de Código, a 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 estimar o débito técnico, o que é uma métrica de código interessante (quantidade de esforço de desenvolvimento para corrigir problemas x quantidade de tempo de desenvolvimento estragado por ano para deixar problemas não corrigidos).

Todas essas métricas são detalhadas aqui .

Patrick da equipe NDepend
fonte
2

Se você estiver no espaço .NET, o CodeRush do Developer Express fornece LOC, Cyclomatic Complexity e a (excelente, IMHO) análise de Complexidade de Manutenção de código em tempo real.

(Desculpe pelo link de Complexidade de Manutenção; está indo para o cache do Google. O original parece ser um ATM offline).

moobaa
fonte
2

Atlassian FishEye é outra ferramenta excelente 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, porém, e o produto em si é comercial (mas com preços muito razoáveis, IMO).

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

Jack Leow
fonte
2

Para Visual Studio .NET (pelo menos C # e VB.NET), considero o StudioTools gratuito extremamente útil para métricas. Ele também adiciona uma série de recursos encontrados em ferramentas comerciais, como ReSharper .

Careca
fonte
2

O Code Analyzer é uma ferramenta simples que gera esse tipo de métrica.

texto alternativo
(fonte: teel.ws )

prakash
fonte
3
Embora a GUI pareça boa, as métricas geradas parecem bastante inúteis - por exemplo, "Linhas de espaço em branco por arquivo"?
kizzx2
1

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

Somente leitura
fonte
1

Eu recomendaria o Code Metrics Viewer Exention para o visual studio.

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

Leia mais aqui sobre os recursos

Baljeetsingh
fonte
0

No front do PHP, acredito, por exemplo, que o phpUnderControl inclui métricas através do phpUnit (se não me engano).

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

Até
fonte
0

Se você está atrás de alguma análise de tendência, isso realmente significa algo além do SLOC?

Mesmo se você apenas fizer um grep para o ponto-e-vírgula final e contar o número de linhas retornadas, o que você está procurando é 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 da Complexidade Ciclométrica McCabe me daria? Eu acho que o CC deve ser usado mais para um instantâneo de qualidade para fornecer feedback aos desenvolvedores.

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

HTH.

Felicidades,

Roubar

Rob Wells
fonte
0

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

andreas buykx
fonte
0

O medidor de código de projeto fornece um relatório de histórico de desenvolvimento diferencial (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 que deseja.

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

Benji
fonte
0

Para Java, você pode experimentar nossa ferramenta, QualityGate , 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 manutenção do código-fonte.

Tibor Bakota - FrontEndART
fonte