Existem bons programas para actionscript/flex que contem linhas de código, número de funções, arquivos, pacotes, etc.

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

Pergunta

Doug McCune criou algo que era exatamente o que eu precisava (http://dougmccune.com/blog/2007/05/10/analyze-your-actionscript-code-with-this-apollo-app/) mas, infelizmente - foi para o AIR beta 2.Eu só gostaria de alguma ferramenta que eu pudesse executar e que fornecesse algumas métricas decentes... alguma ideia?

Foi útil?

Solução

Há um Code Metrics Explorer no plug-in Enterprise Flex abaixo:

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

Outras dicas

Ferramenta simples chamada LocMetrics também pode funcionar para arquivos .as ...

Ou

find . -name '*.as' -or -name '*.mxml' | xargs wc -l

Ou se você usar zsh

wc -l **/*.{as,mxml}

Não lhe dará qual fração dessas linhas são comentários ou linhas em branco, mas se você estiver interessado apenas em como um projeto difere do outro e tiver escrito os dois, é uma métrica útil.

Aqui está um pequeno script que escrevi para encontrar o número total de ocorrências para diferentes elementos de código-fonte no código ActionScript 3 (escrito em Python simplesmente porque estou familiarizado com ele, enquanto Perl provavelmente seria mais adequado para um script pesado em regex assim):

#!/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 ''

Passe caminhos para todos os arquivos de código-fonte em seu projeto como argumentos para este script para que ele processe todos eles e relate os totais.

Um comando como este:

find /path/to/project/root/ -name "*.as" -or -name "*.mxml" | xargs /path/to/script

Produzirá algo assim:

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/.Embora seja baseado na linha de comando do Windows, ele funciona com AS3.0, possui todos os recursos que você deseja e está bem documentado.Aqui está a configuração do arquivo BAT que estou 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 obter uma estimativa aproximada, você sempre pode executar find . -type f -exec cat {} \; | wc -l no diretório do projeto se você estiver usando o Mac OS X.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top