¿Existe algún buen programa para actionscript/flex que cuente líneas de código, cantidad de funciones, archivos, paquetes, etc.?

StackOverflow https://stackoverflow.com/questions/35541

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?

¿Fue útil?

Solución

Hay un Explorador de métricas de código en el complemento Enterprise Flex a continuación:

http://www.deitte.com/archives/2008/09/flex_builder_pl.htm

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top