Eclipse conta linhas de código


107

Experimentei o plugin Metrics e, embora seja bom e tudo, não é o que meu chefe está procurando. Conta uma linha com apenas um }como linha e ele não quer que isso conte como "não é uma linha, é uma escolha de estilo". Também preciso gerar algum tipo de relatório sobre as métricas fornecidas. Existem boas ferramentas para isso?


1
Pergunta lateral: isso deve ser usado como uma métrica para mostrar como seus desenvolvedores de software estão trabalhando? Nesse caso, a contagem de caracteres / não espaços em branco pode ser melhor. Mesmo assim, parece uma métrica realmente arbitrária ... Como um amigo afirmou: "em geral, mais linhas de código para resolver um problema não é melhor (ou pior) do que menos linhas de código para resolver o mesmo problema"
Sancarn

Respostas:


93

Instale o plug-in Eclipse Metrics . Para criar um relatório HTML (com XML e CSV opcionais) right-click a project -> Export -> Other -> Metrics.

Você pode ajustar as métricas de linhas de código, ignorando as linhas em branco e somente comentários ou excluir Javadoc se desejar. Para fazer isso, verifique a guia em Preferences -> Metrics -> LoC.

É isso aí. Não existe uma opção especial para excluir chaves {}.

O plugin oferece uma métrica alternativa ao LoC chamada Número de Declarações . Isso é o que o autor tem a dizer sobre isso:

Essa métrica representa o número de instruções em um método. Eu considero uma medida mais robusta do que linhas de código, uma vez que este último é frágil no que diz respeito a diferentes convenções de formatação.

Editar:

Depois de esclarecer sua dúvida, entendo que você precisa de uma visão para violações de métricas em tempo real, como avisos ou erros do compilador. Você também precisa de uma funcionalidade de relatório para criar relatórios para seu chefe. O plug-in que descrevi acima é para relatórios porque você deve exportar as métricas quando quiser vê-las.


Exatamente o que eu estava procurando e um bom recurso de exportação.
george_h

1
A versão atual deste plugin (3.14.1) não parece funcionar com Eclipse Luna (4.4). Surpreendentemente, o antigo plugin Metrics do Sourceforge ainda funciona ...
ejain

Muitas pessoas relatam que ele não está mais funcionando, mas ninguém registra um bug no SourceForge ...
Thomas Weller

6
Sim. Não consigo ver nenhuma opção em right click a project -> Export, instalei o plug-in diretamente do eclipse marketplace - a versão é - Eclipse Metrics 3.12.0, alguém pode me ajudar. obrigado!
OverrockSTAR


263

Sempre há a "força bruta":

  1. Pesquisar-> Arquivo

  2. Digite o seguinte em "Texto contido" -> ^.*$. Em seguida, marque a caixa de seleção "Expressão regular"

  3. Digite o seguinte em "Padrões de nome de arquivo" -> *.java

  4. Clique em "Pesquisar"

  5. Verifique o número de correspondências na guia "Pesquisar".


11
Isso fez exatamente o que eu estava procurando. Não exclui colchetes ou qualquer coisa extravagante, mas dá a resposta que eu estava procurando, IN eclipse, SEM plug-ins. Obrigado!
Lucas

24
Você também pode usar \n[\s]*e irá ignorar as linhas vazias
Ascalonian

3
Solução muito boa sem a necessidade de outro plugin! +1
Stephan

2
Isso funciona com o eclipse mais recente (neon), mas o plugin de métricas não
Anatoly Yakimchuk

2
Os comentários de @omerio também devem ser digitados e são parte necessária de qualquer código-fonte. Sem contar os indícios, eles não seriam importantes ou são apenas textos cegos - o que é um erro grave.
Axel Amthor

23

Se em OSX ou * NIX, use

Obtenha todas as linhas reais de código java de arquivos * .java

find . -name "*.java" -exec grep "[a-zA-Z0-9{}]" {} \; | wc -l

Pegue todas as linhas dos arquivos * .java, que incluem linhas vazias e comentários

find . -name "*.java" -exec cat | wc -l

Obtenha informações por arquivo, isso lhe dará [caminho para o arquivo + "," + número de linhas]

find . -name "*.java" -exec wc -l {} \;

Executando o primeiro comando no OSX recebo: grep: intervalo de caracteres inválidos 0
omerio

Isso tem funcionado para mim encontrar. -name "* .java" | xargs cat | grep '[alnum]' | wc -l
omerio

2
deveria serfind . -name "*.java" | xargs cat | grep "[a-zA-Z0-9{}]" | wc -l
warrior107

8

Outra forma seria usar outro utilitário loc, como o LocMetrics por exemplo.
Ele também lista muitas outras ferramentas locais . A integração com o Eclipse não estaria sempre lá (como estaria com o Metrics2 , que você pode verificar porque é uma versão mais recente do que o Metrics ), mas pelo menos essas ferramentas podem raciocinar em termos de linhas lógicas (calculadas pela soma os pontos e vírgulas terminais e as chaves terminais).
Você também pode verificar se o eclipse-metrics está mais adaptado ao que você espera.


7

Outra ferramenta é o Google Analytix , que também permitirá que você execute métricas mesmo que você não consiga construir o projeto em caso de erros


Embora o site diga que é apenas para versões mais antigas do eclipse, ele funciona muito bem no Luna para mim. Obrigado por isso.
CamHart,

7

Uma maneira possível de contar linhas de código no Eclipse:

usando o menu Pesquisar / Arquivo ..., selecione a guia Pesquisa de arquivo, especifique \ n [\ s] * para Texto contido (isso não contará as linhas vazias) e marque Expressão regular.

Dica de chapéu: www.monblocnotes.com/node/2030


uau, isso é super gênio. bom que não conte as linhas em branco, contanto que você não seja pago pelo número ...
JohnnyB

1

Criei um plugin do Eclipse, que pode contar as linhas do código-fonte. Suporta Kotlin, Java, Java Script, JSP, XML, C / C ++, C # e muitos outros tipos de arquivo.

Por favor, de uma olhada nisso. Qualquer opinião será apreciada!

o repositório git-hub está aqui


0

ProjectCodeMeter conta LLOC (linhas lógicas de código) exatamente como você descreveu (apenas linhas efetivas). ele se integra ao eclipse como uma ferramenta de métrica de código externa , embora não seja em tempo real, ele gera um relatório. na verdade, ele conta muitas métricas de código-fonte, como complexidade, complexidade aritmética, strings codificadas, constantes numéricas ... até estima o tempo de desenvolvimento em horas .


0

Para análise estática, usei e recomendo o SonarQube, que executa quase todas as métricas que você poderia desejar em uma ampla gama de idiomas e é gratuito na versão básica (você tem que pagar para analisar os tipos de idiomas que eu apenas codifique com uma arma na minha cabeça).

Você tem que instalá-lo como um aplicativo da web executando a análise de seu repositório de código-fonte, mas também tem um plugin do Eclipse .

É um exagero se você quer apenas saber, de forma pontual, quantas linhas de código existem em seu projeto. Se você deseja rastrear métricas ao longo do tempo, comparar projetos, disparar avisos quando um limite é excedido, etc., é fantástico.

Divulgação: Não tenho relacionamento financeiro com a SonarSource.


0

A primeira coisa a fazer é determinar sua definição de "linha de código" (LOC). Em ambas as suas perguntas

Conta uma linha com apenas um} como linha e ele não quer que conte como "não é uma linha, é uma escolha de estilo"

e nas respostas, por exemplo,

Você pode ajustar as métricas de linhas de código, ignorando as linhas em branco e apenas comentários ou excluir Javadoc se desejar

você pode dizer que as pessoas têm opiniões diferentes sobre o que constitui uma linha de código. Em particular, as pessoas costumam ser imprecisas sobre se realmente desejam o número de linhas de código ou o número de instruções. Por exemplo, se você tem a seguinte linha realmente longa cheia de afirmações, o que deseja relatar, 1 LOC ou centenas de afirmações?

{ a = 1; b = 2; if (a==c) b++; /* etc. for another 1000 characters */ }

E quando alguém perguntar o que você está chamando de LOC, certifique-se de que pode responder, mesmo que seja apenas "minha definição de LOC é a definição da Metrics2". Em geral, para o código formatado mais comumente (ao contrário do meu exemplo), as ferramentas populares fornecem números bastante semelhantes, então Metrics2, SonarQube, etc. devem estar bem, contanto que você os use consistentemente. Em outras palavras, não conte o LOC de algum código usando uma ferramenta e compare esse valor com uma versão posterior desse código que foi medido com uma ferramenta diferente.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.