Есть ли какие-нибудь хорошие программы для actionscript / flex, которые будут подсчитывать строки кода, количество функций, файлов, пакетов и т. Д
-
09-06-2019 - |
Вопрос
Дуг Маккьюни создал нечто такое, что было именно тем, что мне было нужно (http://dougmccune.com/blog/2007/05/10/analyze-your-actionscript-code-with-this-apollo-app/) но увы - это было для AIR beta 2.Мне просто нужен какой-нибудь инструмент, который я мог бы запустить и который обеспечивал бы приличные показатели...есть идеи?
Решение
В подключаемом модуле Enterprise Flex ниже представлен проводник по метрикам кода:
http://www.deitte.com/archives/2008/09 /flex_builder_pl.htm р>
Другие советы
Простой инструмент под названием LocMetrics может работать и для файлов .as ...
Или
find . -name '*.as' -or -name '*.mxml' | xargs wc -l
Или если вы используете zsh
wc -l **/*.{as,mxml}
Это не даст вам информации о том, какая доля этих строк является комментариями или пустыми строками, но если вас интересует только то, чем один проект отличается от другого, и вы написали их оба, это полезный показатель.
Вот небольшой скрипт, который я написал для нахождения общего числа вхождений для различных элементов исходного кода в коде ActionScript 3 (это написано на Python просто потому, что я с ним знаком, в то время как Perl, вероятно, лучше подходит для регулярных выражений -тяжелый сценарий, как это):
#!/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 ''
Передайте пути ко всем файлам исходного кода в вашем проекте в качестве аргументов для этого сценария, чтобы он мог обработать все из них и сообщить итоги.
Такая команда:
find /path/to/project/root/ -name "*.as" -or -name "*.mxml" | xargs /path/to/script
Будет выводить что-то вроде этого:
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/ . Несмотря на то, что он основан на командной строке Windows, он работает с AS3.0, обладает всеми необходимыми функциями и хорошо документирован. Вот настройка файла BAT, которую я использую:
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 =====================
Чтобы получить приблизительную оценку, вы всегда можете запустить find. -type f -exec cat {} \; | wc -l
в каталоге проекта, если вы используете Mac OS X.