Gibt es gute Programme für Actionscript/Flex, die Codezeilen, die Anzahl der Funktionen, Dateien, Pakete usw. zählen?

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

Frage

Doug McCune hatte etwas geschaffen, das genau das war, was ich brauchte (http://dougmccune.com/blog/2007/05/10/analyze-your-actionscript-code-with-this-apollo-app/), aber leider - es war für AIR Beta 2.Ich hätte einfach gerne ein Tool, das ich ausführen kann und das ein paar anständige Messwerte liefert ... haben Sie eine Idee?

War es hilfreich?

Lösung

Im folgenden Enterprise Flex Plug-in gibt es einen Code Metrics Explorer:

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

Andere Tipps

Einfaches Tool namens LocMetrics kann auch für .as-Dateien funktionieren ...

Oder

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

Oder wenn Sie zsh verwenden

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

Es wird Ihnen nicht angezeigt, welcher Anteil dieser Zeilen Kommentare oder Leerzeilen sind, aber wenn Sie nur daran interessiert sind, wie sich ein Projekt von einem anderen unterscheidet, und Sie beide geschrieben haben, ist dies eine nützliche Metrik.

Hier ist ein kleines Skript, das ich geschrieben habe, um die Gesamtzahl des Vorkommens verschiedener Quellcodeelemente im ActionScript 3-Code zu ermitteln (dies ist einfach in Python geschrieben, weil ich damit vertraut bin, während Perl wahrscheinlich besser für ein Regex-lastiges Skript geeignet wäre so was):

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

Übergeben Sie Pfade zu allen Quellcodedateien in Ihrem Projekt als Argumente für dieses Skript, damit es alle verarbeitet und die Gesamtwerte meldet.

Ein Befehl wie dieser:

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

Wird etwa Folgendes ausgeben:

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/.Obwohl es auf der Windows-Befehlszeile basiert, funktioniert es mit AS3.0, verfügt über alle gewünschten Funktionen und ist gut dokumentiert.Hier ist das BAT-Datei-Setup, das ich verwende:

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

Um eine grobe Schätzung zu erhalten, können Sie jederzeit laufen find . -type f -exec cat {} \; | wc -l im Projektverzeichnis, wenn Sie Mac OS X verwenden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top