Existe-t-il de bons programmes pour ActionScript/flex qui compteront les lignes de code, le nombre de fonctions, les fichiers, les packages, etc.

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

Question

Doug McCune avait créé quelque chose qui correspondait exactement à ce dont j'avais besoin (http://dougmccune.com/blog/2007/05/10/analyze-your-actionscript-code-with-this-apollo-app/) mais hélas, c'était pour AIR beta 2.Je voudrais juste un outil que je puisse exécuter et qui fournirait des mesures décentes... une idée ?

Était-ce utile?

La solution

Il existe un explorateur de métriques de code dans le plug-in Enterprise Flex ci-dessous :

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

Autres conseils

Outil simple appelé LocMetrics peut également fonctionner pour les fichiers .as...

Ou

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

Ou si vous utilisez zsh

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

Cela ne vous indiquera pas quelle fraction de ces lignes sont des commentaires ou des lignes vides, mais si vous êtes uniquement intéressé par la façon dont un projet diffère d'un autre et que vous les avez écrits tous les deux, c'est une mesure utile.

Voici un petit script que j'ai écrit pour trouver le nombre total d'occurrences de différents éléments du code source dans le code ActionScript 3 (il est écrit en Python simplement parce que je le connais, alors que Perl serait probablement mieux adapté à un script lourd en regex). comme ça):

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

Transmettez les chemins d'accès à tous les fichiers de code source de votre projet comme arguments pour ce script pour qu'il les traite tous et rapporte les totaux.

Une commande comme celle-ci :

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

Affichera quelque chose comme ceci :

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/.Même s'il est basé sur la ligne de commande Windows, il fonctionne avec AS3.0, possède toutes les fonctionnalités souhaitées et est bien documenté.Voici la configuration du fichier BAT que j'utilise :

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

Pour obtenir une estimation approximative, vous pouvez toujours exécuter find . -type f -exec cat {} \; | wc -l dans le répertoire du projet si vous utilisez Mac OS X.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top