Существуют ли хорошие программы для actioncript / flex, которые будут подсчитывать строки кода, количество функций, файлов, пакетов и т. Д. - PullRequest
2 голосов
/ 30 августа 2008

Даг Маккьюн создал нечто, что было именно то, что мне было нужно (http://dougmccune.com/blog/2007/05/10/analyze-your-actionscript-code-with-this-apollo-app/), но, увы, это было для AIR beta 2. Мне просто нужен какой-нибудь инструмент, который я мог бы запустить, который обеспечивал бы приличные показатели ... есть идеи?

Ответы [ 6 ]

3 голосов
/ 28 сентября 2008

В подключаемом модуле Enterprise Flex ниже представлен проводник метрик кода:

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

2 голосов
/ 28 сентября 2008

Простой инструмент под названием LocMetrics может работать и для файлов .as ...

1 голос
/ 27 апреля 2010

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 =====================
1 голос
/ 02 сентября 2008

Вот небольшой скрипт, который я написал для нахождения общего числа вхождений для различных элементов исходного кода в коде 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
1 голос
/ 30 августа 2008

Или

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

или если вы используете zsh

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

Это не даст вам информацию о том, какая часть этих строк является комментариями или пустыми строками, но если вас интересует только то, как один проект отличается от другого, и вы написали их оба, это полезный показатель.

0 голосов
/ 30 августа 2008

Чтобы получить приблизительную оценку, вы всегда можете запустить find . -type f -exec cat {} \; | wc -l в каталоге проекта, если вы используете Mac OS X.

...