¿Conoces alguna herramienta que pueda contar todas las líneas de código de un proyecto PHP?recuento de líneas en un proyecto PHP
Respuesta
En un sistema operativo POSIX (por ejemplo, Linux o OS X) se puede escribir lo siguiente en su intérprete de comandos:
wc -l `find . -iname "*.php"`
Esto cuenta las líneas en todos los archivos PHP en el directorio actual y también los subdirectorios . (Tenga en cuenta que esas "comillas" simples son marcadores, no comillas simples)
SLOCCount es una herramienta increíble que produce un informe de recuento de líneas para una gran cantidad de idiomas. También va más allá al producir otras estadísticas relacionadas, como el costo esperado del desarrollador.
He aquí un ejemplo:
$ sloccount .
Creating filelist for experimental
Creating filelist for prototype
Categorizing files.
Finding a working MD5 command....
Found a working MD5 command.
Computing results.
SLOC Directory SLOC-by-Language (Sorted)
10965 experimental cpp=5116,ansic=4976,python=873
832 prototype cpp=518,tcl=314
Totals grouped by language (dominant language first):
cpp: 5634 (47.76%)
ansic: 4976 (42.18%)
python: 873 (7.40%)
tcl: 314 (2.66%)
Total Physical Source Lines of Code (SLOC) = 11,797
Development Effort Estimate, Person-Years (Person-Months) = 2.67 (32.03)
(Basic COCOMO model, Person-Months = 2.4 * (KSLOC**1.05))
Schedule Estimate, Years (Months) = 0.78 (9.33)
(Basic COCOMO model, Months = 2.5 * (person-months**0.38))
Estimated Average Number of Developers (Effort/Schedule) = 3.43
Total Estimated Cost to Develop = $ 360,580
(average salary = $56,286/year, overhead = 2.40).
SLOCCount, Copyright (C) 2001-2004 David A. Wheeler
SLOCCount is Open Source Software/Free Software, licensed under the GNU GPL.
SLOCCount comes with ABSOLUTELY NO WARRANTY, and you are welcome to
redistribute it under certain conditions as specified by the GNU GPL license;
see the documentation for details.
Please credit this data as "generated using David A. Wheeler's 'SLOCCount'."
Desafortunadamente, SLOCCount es un poco largo en el diente y un dolor en el cuello para proyectos de PHP, en particular los que tienen un vendor
directorio anidado que no desea contado. Además, emite una advertencia para cada archivo PHP que no tiene una etiqueta de cierre (que debería ser todos si no está mezclando HTML y PHP).
CLOC es una alternativa más moderna que hace de todo (editar: casi todo) SLOCCount sí, pero también admite una opción --exclude-dir
y no sufre el problema de etiqueta de cierre antes mencionado. También emite una base de datos SQLite de la que puedes extraer algunas métricas bastante avanzadas.
No hace todo lo que hace SLOCCount, aún +1. –
Interesante. ¿Qué no hace? – Shabbyrobe
Estaba buscando las estimaciones de tiempo/costo/persona y no pude encontrar ninguna opción en la página de manual que las devuelve. –
Me hice un pequeño script para hacer eso en uno de mis proyectos. Simplemente use el siguiente código en una página php en la raíz de su proyecto. El script hará un control recursivo en las subcarpetas.
<?php
/**
* A very simple stats counter for all kind of stats about a development folder
*
* @author Joel Lord
* @copyright Engrenage (www.engrenage.biz)
*
* For more information: [email protected]
*/
$fileCounter = array();
$totalLines = countLines('.', $fileCounter);
echo $totalLines." lines in the current folder<br>";
echo $totalLines - $fileCounter['gen']['commentedLines'] - $fileCounter['gen']['blankLines'] ." actual lines of code (not a comment or blank line)<br><br>";
foreach($fileCounter['gen'] as $key=>$val) {
echo ucfirst($key).":".$val."<br>";
}
echo "<br>";
foreach($fileCounter as $key=>$val) {
if(!is_array($val)) echo strtoupper($key).":".$val." file(s)<br>";
}
function countLines($dir, &$fileCounter) {
$_allowedFileTypes = "(html|htm|phtml|php|js|css|ini)";
$lineCounter = 0;
$dirHandle = opendir($dir);
$path = realpath($dir);
$nextLineIsComment = false;
if($dirHandle) {
while(false !== ($file = readdir($dirHandle))) {
if(is_dir($path."/".$file) && ($file !== '.' && $file !== '..')) {
$lineCounter += countLines($path."/".$file, $fileCounter);
} elseif($file !== '.' && $file !== '..') {
//Check if we have a valid file
$ext = _findExtension($file);
if(preg_match("/".$_allowedFileTypes."$/i", $ext)) {
$realFile = realpath($path)."/".$file;
$fileHandle = fopen($realFile, 'r');
$fileArray = file($realFile);
//Check content of file:
for($i=0; $i<count($fileArray); $i++) {
if($nextLineIsComment) {
$fileCounter['gen']['commentedLines']++;
//Look for the end of the comment block
if(strpos($fileArray[$i], '*/')) {
$nextLineIsComment = false;
}
} else {
//Look for a function
if(strpos($fileArray[$i], 'function')) {
$fileCounter['gen']['functions']++;
}
//Look for a commented line
if(strpos($fileArray[$i], '//')) {
$fileCounter['gen']['commentedLines']++;
}
//Look for a class
if(substr(trim($fileArray[$i]), 0, 5) == 'class') {
$fileCounter['gen']['classes']++;
}
//Look for a comment block
if(strpos($fileArray[$i], '/*')) {
$nextLineIsComment = true;
$fileCounter['gen']['commentedLines']++;
$fileCounter['gen']['commentBlocks']++;
}
//Look for a blank line
if(trim($fileArray[$i]) == '') {
$fileCounter['gen']['blankLines']++;
}
}
}
$lineCounter += count($fileArray);
}
//Add to the files counter
$fileCounter['gen']['totalFiles']++;
$fileCounter[strtolower($ext)]++;
}
}
} else echo 'Could not enter folder';
return $lineCounter;
}
function _findExtension($filename) {
$filename = strtolower($filename) ;
$exts = split("[/\\.]", $filename) ;
$n = count($exts)-1;
$exts = $exts[$n];
return $exts;
}
Wow, qué código perfecto para cualquier programador. ¿Calcula sus propias líneas? – quantme
Produce mucho ruido ... Las matrices y otros valores no se inicializan cuando se usan. – Nux
Me encanta. Gracias. – EngineerCoder
El SLOCs de un proyecto PHP puede contar con sloccount usar algo como esto:
find . -not -wholename '*/libraries/*' -not -wholename '*/lib/*' -not -wholename '*/vendor/*' -type f xargs sloccount
Salida de ejemplo para un proyecto SizeY Drupal:
[...]
SLOC Directory SLOC-by-Language (Sorted)
44892 top_dir pascal=33176,php=10293,sh=1423
Totals grouped by language (dominant language first):
pascal: 33176 (73.90%)
php: 10293 (22.93%)
sh: 1423 (3.17%)
Total Physical Source Lines of Code (SLOC) = 44,892
Development Effort Estimate, Person-Years (Person-Months) = 10.86 (130.31)
(Basic COCOMO model, Person-Months = 2.4 * (KSLOC**1.05))
Schedule Estimate, Years (Months) = 1.33 (15.91)
(Basic COCOMO model, Months = 2.5 * (person-months**0.38))
Estimated Average Number of Developers (Effort/Schedule) = 8.19
Total Estimated Cost to Develop = $ 1,466,963
(average salary = $56,286/year, overhead = 2.40).
SLOCCount, Copyright (C) 2001-2004 David A. Wheeler
SLOCCount is Open Source Software/Free Software, licensed under the GNU GPL.
SLOCCount comes with ABSOLUTELY NO WARRANTY, and you are welcome to
redistribute it under certain conditions as specified by the GNU GPL license;
see the documentation for details.
Please credit this data as "generated using David A. Wheeler's 'SLOCCount'."
<?php
passthru('wc -l `find . -iname "*.php"`');
?>
Sólo tiene que ejecutar esto en su directorio actual donde se colocan todos los archivos php, mostrará las líneas de recuento en el navegador.
En las ventanas de una línea de comandos:
findstr /R /N "^" *.php | find /C ":"
Gracias a this article.
Incluir subdirectorios, utilice \s
:
findstr /s /R /N "^" *.php | find /C ":"
Método rápido que funciona bien para Windows, pero no incluye subcarpetas. –
@Frogga Simple, solo agrega '\ s', mira editar – weston
- 1. Número de líneas de código de recuento en Visual Studio
- 2. Contar líneas de código en Netbeans Proyecto PHP
- 3. recuento (no en blanco) líneas de código en bash
- 4. Obtener el recuento de líneas de todos los archivos del proyecto en orden ordenado. (Terminal Bash)
- 5. ¿Cómo recuperar un recuento de líneas de StringBuilder?
- 6. Un recuento en un bucle
- 7. Obtener el recuento de referencia de un objeto en PHP?
- 8. Encontrar el número de líneas en un proyecto con powershell
- 9. ¿Cómo medir # de líneas de código en el proyecto?
- 10. Visual Studio - Determinación de líneas No de líneas de código en un proyecto
- 11. Cómo crear dos líneas principales en un eclipse Proyecto C++
- 12. PHP múltiples líneas nuevas
- 13. PHP ~ El recuento de columnas no coincide con el recuento de valores en la fila 1
- 14. Franja de nuevas líneas en PHP
- 15. PHP Líneas Múltiples comentario dentro de Líneas Múltiples comentario
- 16. ¿Por qué el recuento de líneas cambia tanto de D2007 a D2010?
- 17. Cómo obtener el recuento de líneas de un archivo grande, al menos 5G
- 18. colisiones recuento en un diccionario de Python
- 19. php explotar nuevas líneas de contenido de un archivo txt
- 20. PHP - Crear una matriz multidimensional a través de un bucle basado en un recuento
- 21. ¿Cuál es una buena manera de contar las líneas fuente de código (SLOC) en un proyecto CoffeeScript?
- 22. Eliminar las primeras líneas X de un archivo PHP
- 23. ¿Cuántas líneas de código PHP son demasiadas para un archivo?
- 24. ¿Cómo puedo comentar líneas PHP dentro de un archivo HTML?
- 25. PHP: instalación de doctrina en el proyecto
- 26. cómo manejar un proyecto de php con un equipo?
- 27. División de una cadena sin saltos de línea en una lista de líneas con un recuento máximo de columnas
- 28. el número de líneas de código hacer mi proyecto tiene
- 29. Filtrando por recuento de relaciones en SQLAlchemy
- 30. ¿Cómo manejar nuevas líneas en Javascript? (A partir de PHP)
Y si usted está en Windows, puede descargar e instalar Cygwin, y hacer lo mismo. Dado que Mac se ejecuta ahora también sobre un sistema operativo BSD, considero que esta es la respuesta definitiva. –
Tenga en cuenta que si tiene muchos archivos de plantillas PHP y/u otros archivos PHP con código PHP/HTML mixto, esto no excluirá las líneas solo HTML. –
Hay un límite para la longitud del comando en el shell; las grandes bases de código excederán esto. – eukras