Esistono buoni programmi per actionscript/flex che contano righe di codice, numero di funzioni, file, pacchetti, ecc

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

Domanda

Doug McCune aveva creato qualcosa che era esattamente ciò di cui avevo bisogno (http://dougmccune.com/blog/2007/05/10/analyze-your-actionscript-code-with-this-apollo-app/) ma ahimè, era per AIR beta 2.Vorrei solo uno strumento da poter eseguire che fornisca alcune metriche decenti... qualche idea?

È stato utile?

Soluzione

Di seguito è disponibile un Code Metrics Explorer nel plug-in Enterprise Flex:

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

Altri suggerimenti

Strumento semplice chiamato LocMetrics può funzionare anche per file .as...

O

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

O se usi zsh

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

Non ti dirà quale frazione di quelle righe sono commenti o righe vuote, ma se sei interessato solo a come un progetto differisce da un altro e li hai scritti entrambi, è una metrica utile.

Ecco un piccolo script che ho scritto per trovare il numero totale di occorrenze per diversi elementi del codice sorgente nel codice ActionScript 3 (è scritto in Python semplicemente perché lo conosco, mentre Perl sarebbe probabilmente più adatto per uno script con molte regex come questo):

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

Passa i percorsi a tutti i file di codice sorgente nel tuo progetto come argomenti per questo script per far sì che li elabori tutti e riporti i totali.

Un comando come questo:

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

Verrà prodotto qualcosa del genere:

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/.Anche se è basato sulla riga di comando di Windows, funziona con AS3.0, ha tutte le funzionalità che desideri ed è ben documentato.Ecco la configurazione del file BAT che sto utilizzando:

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 =====================

Per avere una stima approssimativa, potresti sempre scappare find . -type f -exec cat {} \; | wc -l nella directory del progetto se utilizzi Mac OS X.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top