Gibt es gute Programme für Actionscript/Flex, die Codezeilen, die Anzahl der Funktionen, Dateien, Pakete usw. zählen?
-
09-06-2019 - |
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?
Lösung
Im folgenden Enterprise Flex Plug-in gibt es einen Code Metrics Explorer:
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.