¿Existe algún buen programa para actionscript/flex que cuente líneas de código, cantidad de funciones, archivos, paquetes, etc.?
-
09-06-2019 - |
Pregunta
Doug McCune había creado algo que era exactamente lo que necesitaba (http://dougmccune.com/blog/2007/05/10/analyze-your-actionscript-code-with-this-apollo-app/) pero, por desgracia, era para AIR beta 2.Sólo me gustaría alguna herramienta que pueda ejecutar y que proporcione algunas métricas decentes... ¿alguna idea?
Solución
Hay un Explorador de métricas de código en el complemento Enterprise Flex a continuación:
Otros consejos
herramienta sencilla llamada LocMetrics También puede funcionar para archivos .as...
O
find . -name '*.as' -or -name '*.mxml' | xargs wc -l
O si usas zsh
wc -l **/*.{as,mxml}
No le dará qué fracción de esas líneas son comentarios o líneas en blanco, pero si solo está interesado en en qué se diferencia un proyecto de otro y ha escrito ambos, es una métrica útil.
Aquí hay un pequeño script que escribí para encontrar el número total de apariciones de diferentes elementos del código fuente en código ActionScript 3 (esto está escrito en Python simplemente porque estoy familiarizado con él, mientras que Perl probablemente sería más adecuado para un script con muchas expresiones regulares). como esto):
#!/usr/bin/python
import sys, os, re
# might want to improve on the regexes used here
codeElements = {
'package':{
'regex':re.compile('^\s*[(private|public|static)\s]*package\s+([A-Za-z0-9_.]+)\s*', re.MULTILINE),
'numFound':0
},
'class':{
'regex':re.compile('^\s*[(private|public|static|dynamic|final|internal|(\[Bindable\]))\s]*class\s', re.MULTILINE),
'numFound':0
},
'interface':{
'regex':re.compile('^\s*[(private|public|static|dynamic|final|internal)\s]*interface\s', re.MULTILINE),
'numFound':0
},
'function':{
'regex':re.compile('^\s*[(private|public|static|protected|internal|final|override)\s]*function\s', re.MULTILINE),
'numFound':0
},
'member variable':{
'regex':re.compile('^\s*[(private|public|static|protected|internal|(\[Bindable\]))\s]*var\s+([A-Za-z0-9_]+)(\s*\\:\s*([A-Za-z0-9_]+))*\s*', re.MULTILINE),
'numFound':0
},
'todo note':{
'regex':re.compile('[*\s/][Tt][Oo]\s?[Dd][Oo][\s\-:_/]', re.MULTILINE),
'numFound':0
}
}
totalLinesOfCode = 0
filePaths = []
for i in range(1,len(sys.argv)):
if os.path.exists(sys.argv[i]):
filePaths.append(sys.argv[i])
for filePath in filePaths:
thisFile = open(filePath,'r')
thisFileContents = thisFile.read()
thisFile.close()
totalLinesOfCode = totalLinesOfCode + len(thisFileContents.splitlines())
for codeElementName in codeElements:
matchSubStrList = codeElements[codeElementName]['regex'].findall(thisFileContents)
codeElements[codeElementName]['numFound'] = codeElements[codeElementName]['numFound'] + len(matchSubStrList)
for codeElementName in codeElements:
print str(codeElements[codeElementName]['numFound']) + ' instances of element "'+codeElementName+'" found'
print '---'
print str(totalLinesOfCode) + ' total lines of code'
print ''
Pase rutas a todos los archivos de código fuente de su proyecto como argumentos para que este script los procese todos e informe los totales.
Un comando como este:
find /path/to/project/root/ -name "*.as" -or -name "*.mxml" | xargs /path/to/script
Generará algo como esto:
1589 instances of element "function" found
147 instances of element "package" found
58 instances of element "todo note" found
13 instances of element "interface" found
2033 instances of element "member variable" found
156 instances of element "class" found
---
40822 total lines of code
CLOC - http://cloc.sourceforge.net/.Aunque está basado en la línea de comandos de Windows, funciona con AS3.0, tiene todas las características que desea y está bien documentado.Aquí está la configuración del archivo BAT que estoy usando:
REM =====================
echo off
cls
REM set variables
set ASDir=C:\root\directory\of\your\AS3\code\
REM run the program
REM See docs for different output formats.
cloc-1.09.exe --by-file-by-lang --force-lang="ActionScript",as --exclude_dir=.svn --ignored=ignoredFiles.txt --report-file=totalLOC.txt %ASDir%
REM show the output
totalLOC.txt
REM end
pause
REM =====================
Para obtener una estimación aproximada, siempre puedes ejecutar find . -type f -exec cat {} \; | wc -l
en el directorio del proyecto si estás usando Mac OS X.