Comment comptez-vous 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 y a-t-il un équivalent open source?

674
demandé sur Rob 2009-08-07 17:35:47

25 réponses

Visual Studio 2010 Ultimate a ceci intégré.

Analyser - > Calculer Les Paramètres Du Code

400
répondu Herter 2011-06-29 03:59:55

j'ai trouvé powershell utile pour cela. Je considère que LoC est une métrique assez bidon de toute façon, donc je ne pense pas que quelque chose de plus formel devrait être nécessaire.

du répertoire d'une petite solution:

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

qui va compter les lignes non vides dans toutes les solutions .cs et .les fichiers xaml. Pour un projet plus important, je viens d'utiliser une liste d'extension différente:

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

Pourquoi utiliser un toute application lorsqu'une seule ligne de commande va faire? :)

750
répondu Greg D 2016-10-06 16:42:39

j'ai utilisé Ctrl + Shift + F . Ensuite, mettez un \n dans la boîte de recherche et activez la boîte des expressions régulières. Ensuite, dans les résultats de recherche, à la fin de l'écran se trouve le nombre de fichiers recherchés et les lignes de code trouvées.

333
répondu NicolásKittsteiner 2014-11-18 16:33:09

open source en ligne de compteur pour VS2005, 2003 et 2002 est disponible ici:

http://www.wndtabs.com /

il est également question de créer une ligne counting VS addin, complète avec le code sur Codeproject, ici

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

aussi astucieux Gadgets D'édition ont une belle ligne-compteur, ici:

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

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

rappelez-vous:

mesurer la progression de la programmation par des lignes de code, c'est comme mesurer la progression de la construction d'un aéronef par le poids. Bill Gates

218
répondu Ali Parr 2015-07-28 07:45:56

trouvé ce bout: LOC avec VS Find et remplacer

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

80
répondu Mads Andersen 2010-02-28 14:27:54

Voici une mise à jour pour Visual Studio 2012/2013/2015 pour ceux qui veulent faire l'option" Find " (que je trouve la plus facile): ce RegEx va trouver toutes les lignes non Vierges avec plusieurs exclusions pour donner les résultats les plus précis.

entrez la RegEx suivante dans la case" trouver". Veuillez vous assurer de sélectionner l'option "Utiliser des Expressions régulières". Changez l'option de recherche en "projet actuel" ou "Solution entière" selon vos besoins. Maintenant, sélectionnez "Trouver Tout". Au bas de la fenêtre trouver les résultats , vous verrez" lignes correspondantes " qui est le nombre de lignes du code.


^(?!(\s*\*))(?!(\s*\-\-\>))(?!(\s*\<\!\-\-))(?!(\s*\n))(?!(\s*\*\/))(?!(\s*\/\*))(?!(\s*\/\/\/))(?!(\s*\/\/))(?!(\s*\}))(?!(\s*\{))(?!(\s(using))).*$

ce RegEx exclut les articles suivants:


commentaires

// This is a comment

les commentaires Multi-lignes (en supposant que les lignes soient correctement commentées avec un * devant chaque ligne)

/* I am a
* multi-line
* comment */

XML for Intellisense

/// <summary>
/// I'm a class description for Intellisense
/// </summary>

Commentaires HTML:

<!-- I am a HTML Comment -->

à l'Aide des déclarations:

using System;
using System.Web;

broches à ouvrir:

{

la Fermeture des accolades:

}

Note: n'importe quoi entre les accolades serait inclus dans la recherche, mais dans cet exemple seulement 4 lignes de code compteraient, au lieu de 18 lignes réelles non vides:

        public class Test
        {
            /// <summary>
            /// Do Stuff
            /// </summary>
            public Test()
            {
                TestMe();
            }
            public void TestMe()
            {
                //Do Stuff Here
                /* And
                 * Do
                 * Stuff
                 * Here */
            }
        }

" j'ai créé ceci pour me donner un nombre de LOC beaucoup plus précis que certaines options précédentes, et j'ai pensé que je partagerais. Les patrons adorent LOC counts, donc je suis coincé avec elle pendant un certain temps. J'espère que quelqu'un d'autre peut trouver cela utile, laissez-moi savoir si vous avez des questions ou besoin d'aide à la faire fonctionner.

67
répondu Howard Renollet 2016-09-08 12:38:56

cloc est une excellente ligne de commande, basée sur Perl, Windows-executable qui va décomposer les lignes vierges, les lignes commentées, et les lignes source du code, groupées par les formats de fichier.

maintenant, il ne sera pas lancé spécifiquement sur un fichier VS solution, mais il peut revenir à travers les répertoires, et vous pouvez configurer des filtres de nom de fichier comme vous le souhaitez.

Voici la sortie d'échantillon de leur page web:


prompt> cloc perl-5.10.0.tar.gz
    4076 text files.
    3883 unique files.                                          
    1521 files ignored.

http://cloc.sourceforge.net v 1.07  T=10.0 s (251.0 files/s, 84566.5 lines/s)
-------------------------------------------------------------------------------
Language          files     blank   comment      code    scale   3rd gen. equiv
-------------------------------------------------------------------------------
Perl               2052    110356    112521    309778 x   4.00 =     1239112.00
C                   135     18718     22862    140483 x   0.77 =      108171.91
C/C++ Header        147      7650     12093     44042 x   1.00 =       44042.00
Bourne Shell        116      3402      5789     36882 x   3.81 =      140520.42
Lisp                  1       684      2242      7515 x   1.25 =        9393.75
make                  7       498       473      2044 x   2.50 =        5110.00
C++                  10       312       277      2000 x   1.51 =        3020.00
XML                  26       231         0      1972 x   1.90 =        3746.80
yacc                  2       128        97      1549 x   1.51 =        2338.99
YAML                  2         2         0       489 x   0.90 =         440.10
DOS Batch            11        85        50       322 x   0.63 =         202.86
HTML                  1        19         2        98 x   1.90 =         186.20
-------------------------------------------------------------------------------
SUM:               2510    142085    156406    547174 x   2.84 =     1556285.03
-------------------------------------------------------------------------------

L'échelle équivalente de troisième génération est une estimation approximative de la quantité de code qu'elle prendrait dans un langage de troisième génération . Pas très utile, mais intéressant quand même.

55
répondu Mark Rushakoff 2016-07-29 12:52:26

les réponses ici sont un peu périmées, peut-être à l'heure vs 2008. Parce que dans les nouvelles versions Visual Studio 2010/2012, cette fonctionnalité est déjà intégrée. Il n'y a donc aucune raison d'utiliser une extension ou des outils pour cela.

fonction pour compter les lignes de code-Calculer les mesures. Avec elle, vous pouvez calculer vos paramètres (LOC, Maintaince index, Cyclomatic index, Depth of inheritence) pour chaque projet ou solution.

cliquez sur le bouton droit de la souris solution ou un projet dans l'Explorateur de solutions,

enter image description here

et sélectionnez "Calculer les paramètres"

enter image description here

plus tard les données pour l'analyse et l'agrégation pourraient être importées à Excel. Aussi dans Excel vous pouvez filtrer les classes générées, ou d'autres bruits de vos mesures. Ces mesures, y compris les lignes de code LOC, pourraient être recueillies aussi pendant le processus de construction, et incluses dans la construction. rapport

42
répondu Regfor 2012-11-14 18:02:07

expressions Régulières ont changé entre VS2010 et 2012, de sorte que la plupart de l'expression régulière solutions ne fonctionnent plus

(^(?!(\s*//.+)))+(^(?!(#.+)))+(^(?!(\s*\{.+)))+(^(?!(\s*\}.+)))+(^(?!(\s*\r?$)))+

trouvera toutes les lignes qui ne sont pas vides, qui ne sont pas seulement un simple bracket ( '{' ou '}' ) et pas seulement un #include ou un autre préprocesseur.

utiliser Ctrl - shift - f et s'assurer que les expressions régulières sont activées.

l'expression régulière correspondante pour VS 2010 et plus est

^~(:Wh@//.+)~(:Wh@\{:Wh@)~(:Wh@\}:Wh@)~(:Wh@/#).+
28
répondu user2711915 2015-06-17 10:24:07

dans Visual Studio Team System 2008, vous pouvez faire à partir du menu Analyser -- > 'calculer des paramètres de Code pour la Solution' et il vous donnera un compte de ligne de votre solution entière (entre autres choses g )

19
répondu Christopher Klein 2009-08-07 13:51:25

pour les futurs lecteurs, je vous conseille L'extension DPack pour Visual Studio 2010 .

il a une charge des utilités construites en incluant un compteur de ligne qui dit combien de lignes sont vides, code, et etc.

17
répondu Ashley Davies 2015-06-17 10:07:31

une solution simple est de rechercher dans tous les fichiers. Tapez " * " en utilisant les caractères génériques. Qui correspondent à toutes les lignes. À la fin de la fenêtre résultats de la recherche vous devriez voir une ligne du genre:

Matching lines: 563 Matching files: 17 Total files searched: 17

bien sûr, ce n'est pas très bon pour les grands projets, puisque toutes les lignes sont mises en mémoire et chargées en mémoire pour être dissipées dans la fenêtre de résultats de recherche.

référence:

11
répondu Sogartar 2011-06-20 01:40:58

vous pouvez utiliser:

7
répondu Edward Wilde 2009-08-07 13:39:44

je préfère OxyProject Mesures VS Addin.

5
répondu Heka 2010-05-13 14:00:33

évidemment les outils sont plus faciles, mais je me sens cool de le faire en powershell:)

ce script trouve tous les .références csproj dans le .sln file, puis dans chaque fichier csproj il localise les fichiers inclus pour la compilation. Pour chaque fichier qui est inclus pour la compilation il crée un objet avec des propriétés: Solution, Projet, fichier, lignes. Il stocke tous ces objets dans une liste, puis groupe et projette les données selon les besoins.

#path to the solution file e.g. "D:\Code\Test.sln"
$slnFile = "D:\Code\Test.sln"


#results
$results = @()

#iterate through .csproj references in solution file
foreach($projLines in get-item $slnFile | Get-Content | Select-String '".*csproj')
{
    $projFile = [System.IO.Path]::Combine([System.IO.Path]::GetDirectoryName($slnFile), [regex]::Match($projLines,'[^"]*csproj').Value)
    $projFolder = [System.IO.Path]::GetDirectoryName($projFile)

    #from csproj file: get lines for files to compile <Compile Include="..."/>
    $includeLines = get-item $projFile | Get-Content | Select-String '<Compile Include'


    #count of all files lines in project
    $linesInProject = 0;
    foreach($fileLine in $includeLines)
    {
        $includedFilePath = [System.IO.Path]::Combine($projFolder, [Regex]::Match($fileLine, '"(?<file>.*)"').Groups["file"].Value)
        $lineCountInFile = (Get-Content $includedFilePath).Count      
        $results+=New-Object PSObject -Property @{ Solution=$slnFile ;Project=$projFile; File=$includedFilePath; Lines=$lineCountInFile }
    }
}

#filter out any files we dont need
$results = $results | ?{!($_.File -match "Designer")}


#print out:

"---------------lines per solution--------------"
$results | group Solution | %{$_.Name + ": " + ($_.Group | Measure-Object Lines -Sum).Sum}
"---------------lines per peoject--------------"
$results | group Project | %{$_.Name + ": " + ($_.Group | Measure-Object Lines -Sum).Sum}
4
répondu anakic 2013-05-22 09:05:24

autre outil simple pour VS2008 (open source): http://www.accendo.sk/Download/SourceStat.zip

3
répondu LiborBes 2010-01-17 14:34:29

Utiliser le Menu-> Analyse - > Calculer les Métriques de Code option dans Visual Studio 2010 Ultimate.

3
répondu sunil 2011-07-11 22:14:33

vous pouvez utiliser le Visual Studio Code Metrics PowerTool 10.0 . C'est un utilitaire de ligne de commande qui calcule quelques paramètres sur le code géré pour vous (y compris les lignes de code). Vous pouvez obtenir un VS 2010 plugin que apporte l'outil dans Visual Studio , et le rend aussi rapide que la sélection de l'élément de menu et en cliquant sur " Analyser Solution."

3
répondu Travis 2014-04-15 18:55:43

d'Accord avec Ali Parr. Le Wndtab Line Counter addin est un tel outil. http://www.codeproject.com/KB/macros/linecount.aspx

il est également une bonne idée de rechercher à partir du site de téléchargement pour trouver un outil lié. http://www.cnet.com/1770-5_1-0.html?query=code + counter & tag=srch

2
répondu fastyond 2012-03-11 01:21:27
2
répondu Anish Karunakaran 2013-05-22 09:49:07

vous pouvez utiliser l'outil gratuit SourceMonitor

donne beaucoup de mesures: lignes de Code, nombre D'énoncés, complexité, profondeur de bloc

A sorties graphiques via des graphiques

2
répondu Hovhannes Hakobyan 2014-04-08 07:16:01

vous pouvez utiliser le Project Line Counter add-in Dans Visual Studio 2010. Normalement, il ne fonctionne pas avec Visual Studio 2010, mais il le fait avec un serviable .fichier reg d'ici: http://www.onemanmmo.com/index.php?cmd=newsitem&comment=news.1.41.0

1
répondu Robert Basler 2011-06-04 07:44:21

j'ai créé un script powershell rapide et sale pour compter les lignes dans une structure de dossiers. Il n'est pas aussi complet que d'autres outils référencé dans d'autres réponses, mais je pense que c'est assez bon pour fournir une comparaison approximative de la taille des fichiers de code par rapport à l'autre dans un projet ou d'une solution.

le script peut être trouvé ici:

https://gist.github.com/1674457

1
répondu Jesse Taber 2012-01-25 03:18:08

essayez neptuner. Il vous donne aussi des choses comme des espaces, des onglets, des lignes de commentaires en plus de LoC. http://neptuner.googlecode.com/files/neptuner_0_30_windows.zip

0
répondu sonofdelphi 2010-05-13 14:07:42

dans Visual Studio 2015, allez dans le Menu Analyser et sélectionnez "Calculer les paramètres du Code".

0
répondu Atters 2017-01-28 22:45:56