Есть ли какие-нибудь хорошие программы для actionscript / flex, которые будут подсчитывать строки кода, количество функций, файлов, пакетов и т. Д

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

Вопрос

Дуг Маккьюни создал нечто такое, что было именно тем, что мне было нужно (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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top