849 votes

Comment compter les lignes de code dans une solution Visual Studio ?

Est-il possible de trouver le nombre de lignes de code dans une solution entière ? J'ai entendu parler de MZ-Tools mais existe-t-il un équivalent en source ouverte ?

24 votes

Je suis d'accord que ça n'aide pas beaucoup mais si la direction le demande...

1 votes

Ce n'est pas nécessairement lié à la programmation, mais cela peut vous donner une indication de la complexité de votre base de code. J'ai été assez surpris d'apprendre la taille de notre solution, en utilisant le PS script de Greg D.

36 votes

La LdC est simplement une métrique et est particulièrement intéressante dans deux cas : 1) pour avoir une idée de la taille de la base de code, par exemple lorsque vous rejoignez une nouvelle équipe 2) pour mesurer vos progrès lorsque vous essayez de rendre votre base de code plus compacte.

891voto

Greg D Points 24218

J'ai trouvé powershell utile pour cela. De toute façon, je considère que la LdC est une mesure assez bidon, donc je ne pense pas que quelque chose de plus formel soit nécessaire.

Du répertoire d'une petite solution :

PS C:\Path> (gci -include *.cs,*.xaml -recurse | select-string .).Count
8396
PS C:\Path>

Cela comptera les lignes non vides dans tous les fichiers .cs et .xaml de la solution. Pour un projet plus important, j'ai simplement utilisé une liste d'extensions différente :

PS C:\Other> (gci -include *.cs,*.cpp,*.h,*.idl,*.asmx -recurse | select-string .).Count
909402
PS C:\Other>

Pourquoi utiliser une application entière quand une seule ligne de commande suffit :)

22 votes

(La seule fois où l'on m'a demandé de fournir des décomptes de lignes, c'était lorsque la haute direction évaluait le temps qu'il faudrait pour migrer tous nos produits à l'étranger afin de pouvoir fermer notre site national).

10 votes

(Oui, cela inclut les fichiers et les commentaires codés. Non, cela ne me dérange pas. Les concepteurs, le code gen'd et les commentaires doivent être maintenus, eux aussi).

28 votes

Très bien, j'avais complètement oublié powershell. il devrait devenir le remplaçant par défaut de cmd

601voto

Herter Points 2262

Visual Studio 2010 Ultimate intègre cette fonctionnalité :

Analyser Calculer Code Métriques

13 votes

Ultimate et Premium, je pense

0 votes

La prime l'inclut. Cependant, il semble ignorer les fichiers de code où le type est défini dans le xaml.

47 votes

Avertissement : Cela fait beaucoup d'autres choses que simplement compter les lignes. Il liste également "l'indice de maintenabilité", "la complexité cyclomatique", "la profondeur de l'héritage", et "le couplage des classes", qui sont tous assez compliqués à calculer, et vous ne pouvez pas exécuter les métriques pour une partie seulement. Cela signifie que si votre base de code est particulièrement volumineuse, vous risquez de passer des heures à l'attendre. Si tout ce que vous voulez est le nombre de lignes, il existe des solutions beaucoup plus rapides.

368voto

J'ai utilisé Ctrl + Shift + F . Ensuite, mettez un \n dans le champ de recherche et dans le champ d'activation des expressions régulières. Ensuite, dans les résultats de la recherche, à la fin de l'écran se trouvent le nombre de fichiers recherchés et les lignes de code trouvées.

Vous pouvez utiliser [^\n\s]\r\n pour sauter les lignes vides et les lignes d'espacement (merci à Zach dans les commentaires).

19 votes

Cette solution inclut de manière incorrecte des lignes vides, des commentaires, de la documentation et des déclarations de fractionnement. Pour de nombreuses applications, celles-ci ne devraient pas compter comme des lignes de code.

1 votes

Bien qu'il soit légèrement imprécis (si vous utilisez en fait \n dans votre code, cette ligne sera comptée deux fois), il reste la meilleure réponse si vous avez besoin d'un ROM de lignes de code sans outil tiers.

1 votes

Vous pouvez également sélectionner un type de fichier spécifique en choisissant une option Look at these file types: juste en dessous de la liste déroulante enable regular expressions box .

219voto

Ali Parr Points 2490

Un compteur de lignes open source pour VS2005, 2003 et 2002 est disponible ici :

http://www.wndtabs.com/

Il y a aussi une discussion sur la création d'un addin VS de comptage de lignes, avec le code sur Codeproject, ici.

http://www.codeproject.com/KB/macros/LineCounterAddin.aspx

Slick Edit Gadgets propose également un joli compteur de lignes, ici :

http://www.slickedit.com/products/slickedit

et Microsoft Visual Studio Team System 2008 comprend un bon compteur de lignes.

Mais n'oubliez pas :

Mesurer les progrès de la programmation en lignes de code, c'est comme mesurer les progrès de la construction aéronautique en poids. Bill Gates

1 votes

Il est souvent stupide de compter les lignes de code, et la quantité n'est pas synonyme de qualité. Cependant, une énorme équipe qui met en l'air un Dreamliner de 545 000 livres (545 000 lb !!) est un accomplissement entièrement différent du lancement de l'ultralite que j'ai construit tout seul dans mon garage. Et si vous pensez au nombre de lignes de code dans Windows, peut-être que M. Bill voulait dire cela d'une manière différente de celle qui est habituellement prise... ?

18 votes

Aucun d'entre eux ne semble s'appliquer à Visual Studio 2010, et le lien slickedit est cassé.

57 votes

Vous trouverez la fonction LOC dans Visual Studio 2010 Ultimate sous la rubrique "Analyse > Métrique du code" J'espère avoir bien traduit. J'ai la version allemande. C'est "Analyse" > "Codemetriken berechnen".

80voto

Mads Andersen Points 1644

J'ai trouvé cette astuce : LOC avec VS Rechercher et remplacer

Ce n'est pas un plugin si c'est ce que vous recherchez.

0 votes

J'adore celle-ci, mais je pense avoir trouvé une petite erreur dans l'expression. Pour VB.Net, je pense que cela devrait être ^~(:Wh@')~(:Wh@\#).+ et pour C#, je pense ^~(:Wh@//)~(:Wh@\{:Wh@)~(:Wh@\}:Wh@)~(:Wh@\#).+ De cette façon, les lignes de commentaires vides et les directives du compilateur sont correctement traitées. Cela a mieux fonctionné pour moi avec VB.NET de toute façon, et C# je n'ai pas testé.

0 votes

^~(:Wh@//)~(:Wh@\{:Wh@)~(:Wh@\}:Wh@)~(:Wh@\#)~(:Wh@$).+ a fini par mieux fonctionner pour C#, j'obtenais des lignes constituées uniquement d'espaces.

0 votes

Ne compte-t-il pas aussi toutes les lignes commentées ? Seulement les lignes de CODE s'il vous plaît !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X