Pregunta ¿Cómo se cuentan las líneas de código en una solución de Visual Studio?


¿Es posible encontrar la cantidad de líneas de código en una solución completa? He oído hablar de MZ-Tools, pero ¿hay un equivalente de código abierto?


663
2017-08-07 13:35


origen


Respuestas:


Visual Studio 2010 Ultimate tiene esto incorporado.

Analizar -> Calcular métricas de código


394
2018-03-01 02:25



He encontrado potencia Shell útil para esto Considero que LoC es una métrica bastante falsa de todos modos, así que no creo que se requiera nada más formal.

Desde el directorio de una solución pequeña:

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

Eso contará las líneas no en blanco en todos los archivos .cs y .xaml de la solución. Para un proyecto más grande, acabo de utilizar una lista de extensiones diferente:

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

¿Por qué usar una aplicación completa cuando una sola línea de comando lo hará? :)


737
2017-08-07 14:02



solía Ctrl+Cambio+F. Luego, pon un \n en el cuadro de búsqueda y habilitar el cuadro de expresiones regulares. Luego, en los resultados de búsqueda, al final de la pantalla se encuentra la cantidad de archivos buscados y las líneas de código encontradas.


330
2018-02-21 20:46



Un contador de línea de código abierto para VS2005, 2003 y 2002 está disponible aquí:

http://www.wndtabs.com/

También se debate la creación de un conteo de líneas VS addin, completo con código en Codeproject, aquí

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

También Slick Edit Gadgets tiene un buen contador de línea, aquí:

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

y Microsoft Visual Studio Team System 2008 incluye un buen contador de líneas.

Solo recuerda:

Medir el progreso de la programación por líneas de código es como medir el progreso de la construcción del avión en peso.   Bill Gates


218
2017-08-07 13:43



Encontrado este consejo: LOC con VS Encuentra y reemplaza

No es un plugin sin embargo, si eso es lo que estás buscando.


80
2018-02-28 14:27



Aquí hay una actualización para Visual Studio 2012/2013/2015 para aquellos que quieren hacer la opción "Buscar" (que me parece que es la más fácil): este RegEx encontrará todas las líneas no en blanco con varias exclusiones para obtener los resultados más precisos .

Ingrese el siguiente RegEx en el cuadro "Buscar". Por favor, asegúrese de seleccionar la opción "Usar expresiones regulares". Cambie la opción de búsqueda a "Proyecto actual" o "Solución completa" según sus necesidades. Ahora selecciona "Buscar todo". En la parte inferior de la Encontrar resultados ventana, verá "Líneas coincidentes", que son las líneas de recuento de códigos.


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

Este RegEx excluye los siguientes elementos:


Comentarios

// This is a comment

Comentarios de varias líneas (suponiendo que las líneas se comentan correctamente con un * delante de cada línea)

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

XML para Intellisense

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

Comentarios HTML:

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

Usando declaraciones:

using System;
using System.Web;

Apertura de llaves:

{

Cierre de llaves:

}

Nota: cualquier cosa entre llaves se incluiría en la búsqueda, pero en este ejemplo solo contarían 4 líneas de código, en lugar de 18 líneas reales no en blanco:

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

Creé esto para darme un recuento LOC mucho más preciso que algunas opciones anteriores, y pensé que lo compartiría. A los patrones les encantan los recuentos de LOC, así que estoy atrapado con esto por un tiempo. Espero que alguien más pueda encontrarlo útil, hágamelo saber si tiene alguna pregunta o si necesita ayuda para que funcione.


67
2017-11-04 18:18



cloc es una excelente línea de comandos, basada en Perl, ejecutable en Windows que desglosará las líneas en blanco, las líneas comentadas y las líneas fuente de código, agrupadas por formatos de archivo.

Ahora no se ejecutará específicamente en un archivo de solución VS, pero puede recurrir a través de directorios, y puede configurar filtros de nombre de archivo como mejor le parezca.

Aquí está el resultado de muestra de su página web:


prompt> cloc perl-5.10.0.tar.gz
    4076 archivos de texto.
    3883 archivos únicos.
    1521 archivos ignorados

http://cloc.sourceforge.net v 1.07 T = 10.0 s (251.0 archivos / s, 84566.5 líneas / s)
-------------------------------------------------- -----------------------------
Archivos de idioma escala de código de comentario en blanco 3rd gen. equiv
-------------------------------------------------- -----------------------------
Perl 2052 110356 112521 309778 x 4.00 = 1239112.00
C 135 18718 22862 140483 x 0.77 = 108171.91
Encabezado C / C ++ 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
hacer 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 Lote 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
-------------------------------------------------- -----------------------------

La escala equivalente de tercera generación es una estimación aproximada de la cantidad de código que tomaría en un lenguaje de tercera generación. No es terriblemente útil, pero interesante de todos modos.


54
2017-08-07 16:31



Las respuestas aquí están un poco desactualizadas, pueden ser desde el año 2008. Porque en las versiones más nuevas de Visual Studio 2010/2012, esta característica ya está incorporada. Por lo tanto, no hay ninguna razón para usar extensiones o herramientas para ello.

Característica para contar las líneas de código - Calcular métricas. Con él puede calcular sus métricas (LOC, índice de mantenimiento, índice de Cyclomatic, profundidad de herencia) para cada proyecto o solución.

Simplemente haga clic derecho en la solución o proyecto en Solution Explorer,

enter image description here

y selecciona "Calcular métricas"

enter image description here

Los datos posteriores para el análisis y la agregación podrían importarse a Excel. También en Excel puede filtrar las clases generadas u otros ruidos de sus métricas. Estas métricas, incluidas las líneas de código LOC, también podrían reunirse durante el proceso de compilación e incluirse en el informe de compilación.


41
2017-11-14 10:45



Las expresiones regulares han cambiado entre VS2010 y 2012, por lo que la mayoría de las soluciones de expresiones regulares aquí ya no funcionan

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

Encontrará que todas las líneas que no están en blanco, no son solo un corchete ('{' o '}') y no solo un #include u otro preprocesador.

Utilizar Ctrl-cambio-F y asegúrese de que las expresiones regulares estén habilitadas.

La expresión regular correspondiente para VS 2010 y anterior es

^~(:Wh@//.+)~(:Wh@\{:Wh@)~(:Wh@\}:Wh@)~(:Wh@/#).+

28
2017-10-01 12:20



En Visual Studio Team System 2008 puede hacerlo desde el menú Analizar -> 'Calcular Métricas de Código para Solución' y le dará un conteo de líneas de toda su solución (entre otras cosas gramo)


19
2017-08-07 13:51