Инструмент для вычисления # строк кода в коде позади и aspx файлах?

Предисловие:

  • Свойства объекта могут быть own (свойство принадлежит самому объекту) или унаследовано (а не на объекте (один из его прототипов).
  • Свойства объекта могут быть перечислены или неперечислимыми . Неперечислимые свойства исключаются из множества перечислений свойств / массивов.
  • Имена свойств могут быть строками или символами. Свойства, имена которых являются символами, не учитываются в множестве перечислений свойств / массивов.

Здесь, в 2018 году, ваши возможности для прокрутки свойств объекта:

  1. for-in [ MDN , spec ] & mdash; Структура цикла, которая пересекает имена объектов перечисляемых свойств, включая унаследованные, имена которых являются строками
  2. Object.keys [ MDN , spec ] & mdash; Функция, предоставляющая массив имен свойств собственного , перечисляемых , имена которых являются строками.
  3. Object.values [ MDN , spec ] & mdash; Функция, предоставляющая массив значений свойств объекта , перечисляемых .
  4. Object.entries [ ] MDN , spec ] & mdash; Функция, предоставляющая массив значений имен и для свойств объекта , перечисляемых .
  5. Object.getOwnPropertyNames [ MDN , spec ] & mdash; Функция, предоставляющая массив имен свойств собственного объекта (даже неперечислимых), имена которых являются строками.
  6. Object.getOwnPropertySymbols [ MDN , spec ] & mdash; Функция, предоставляющая массив имен свойств собственного объекта объекта (даже неперечислимых), имена которых являются символами.
  7. Reflect.ownKeys [ MDN , spec ] & mdash; Функция, предоставляющая массив имен свойств собственного объекта объекта (даже неперечислимых), являются ли эти имена строками или символами.
  8. Если вы хотите, чтобы все объекты свойства, включая неперечислимые унаследованные, вам нужно использовать цикл и Object.getPrototypeOf [ MDN , spec ] и использовать Object.getOwnPropertyNames, Object.getOwnPropertySymbols или Reflect.ownKeys для каждого объекта в цепочке прототипов (пример внизу этого ответа).

Со всеми из них, кроме for-in, вы использовали бы какую-то петлевую конструкцию на (for, for-of, forEach и т. д.).

Примеры:

for-in:

// A prototype object to inherit from, with a string-named property
const p = {answer: 42};
// The object we'll look at, which inherits from `p`
const o = Object.create(p);
// A string-named property
o.question = "Life, the Universe, and Everything";
// A symbol-named property
o[Symbol("author")] = "Douglas Adams";
for (const name in o) {
    const value = o[name];
    console.log(`${name} = ${value}`);
}

Object.keys (с контуром for-of, но вы можете использовать любую петлевую конструкцию) :

// A prototype object to inherit from, with a string-named property
const p = {answer: 42};
// The object we'll look at, which inherits from `p`
const o = Object.create(p);
// A string-named property
o.question = "Life, the Universe, and Everything";
// A symbol-named property
o[Symbol("author")] = "Douglas Adams";
for (const name of Object.keys(o)) {
    const value = o[name];
    console.log(`${name} = ${value}`);
}

Object.values:

// A prototype object to inherit from, with a string-named property
const p = {answer: 42};
// The object we'll look at, which inherits from `p`
const o = Object.create(p);
// A string-named property
o.question = "Life, the Universe, and Everything";
// A symbol-named property
o[Symbol("author")] = "Douglas Adams";
for (const value of Object.values(o)) {
    console.log(`${value}`);
}

Object.entries:

// A prototype object to inherit from, with a string-named property
const p = {answer: 42};
// The object we'll look at, which inherits from `p`
const o = Object.create(p);
// A string-named property
o.question = "Life, the Universe, and Everything";
// A symbol-named property
o[Symbol("author")] = "Douglas Adams";
for (const [name, value] of Object.entries(o)) {
    console.log(`${name} = ${value}`);
}

Object.getOwnPropertyNames:

// A prototype object to inherit from, with a string-named property
const p = {answer: 42};
// The object we'll look at, which inherits from `p`
const o = Object.create(p);
// A string-named property
o.question = "Life, the Universe, and Everything";
// A symbol-named property
o[Symbol("author")] = "Douglas Adams";
for (const name of Object.getOwnPropertyNames(o)) {
    const value = o[name];
    console.log(`${name} = ${value}`);
}

Object.getOwnPropertySymbols :

// A prototype object to inherit from, with a string-named property
const p = {answer: 42};
// The object we'll look at, which inherits from `p`
const o = Object.create(p);
// A string-named property
o.question = "Life, the Universe, and Everything";
// A symbol-named property
o[Symbol("author")] = "Douglas Adams";
for (const name of Object.getOwnPropertySymbols(o)) {
    const value = o[name];
    console.log(`${String(name)} = ${value}`);
}

Reflect.ownKeys:

// A prototype object to inherit from, with a string-named property
const p = {answer: 42};
// The object we'll look at, which inherits from `p`
const o = Object.create(p);
// A string-named property
o.question = "Life, the Universe, and Everything";
// A symbol-named property
o[Symbol("author")] = "Douglas Adams";
for (const name of Reflect.ownKeys(o)) {
    const value = o[name];
    console.log(`${String(name)} = ${value}`);
}

Все свойства, включая унаследованные неперечислимые:

// A prototype object to inherit from, with a string-named property
const p = {answer: 42};
// The object we'll look at, which inherits from `p`
const o = Object.create(p);
// A string-named property
o.question = "Life, the Universe, and Everything";
// A symbol-named property
o[Symbol("author")] = "Douglas Adams";
for (let depth = 0, current = o; current; ++depth, current = Object.getPrototypeOf(current)) {
    for (const name of Reflect.ownKeys(current)) {
        const value = o[name];
        console.log(`[${depth}] ${String(name)} = ${String(value)}`);
    }
}
.as-console-wrapper {
  max-height: 100% !important;
}

6
задан Andrei 4 May 2012 в 07:49
поделиться

4 ответа

Из предыдущего сообщения Исходный Монитор, кажется, ответ и NDepend для.NET.

2
ответ дан 8 December 2019 в 18:44
поделиться

SlickEdit имеет некоторую функцию этого. Я не уверен, считает ли это встроенный код. Стоящий предоставления ему попытку. Если это не работает, сообщите мне так, чтобы я мог обновить свое сообщение.

Инструмент SLOC Report The SLOC Report обеспечивает простой способ считать строки кода. Количество строки разделено на три категории: код, комментарии и пробел. После того как строки кода считались, результаты оттянуты как круговая диаграмма. Отчеты SLOC могут быть сгенерированы для решений, проектов или отдельных файлов.

7
ответ дан 8 December 2019 в 18:44
поделиться

Я не попробовал его сам, но LineCounterAddin является плагином Visual Studio, который включает пошаговое руководство в, он - создание. Это поддерживает форматы, которые Вы спрашиваете о (VB и ASPX), а также "куча" больше (например, XML, XSD, TXT, JS, SQL...).

2
ответ дан 8 December 2019 в 18:44
поделиться

У меня был большой опыт с CLOC. Это имеет большое разнообразие параметров командной строки. Одна counter-intutive вещь с ним, тем не менее, первый параметр командной строки является каталогом, чтобы начать включать, обычно можно просто поместить cloc в родительский каталог источника и использования "." (это проходит подкаталоги указанного каталога).

2
ответ дан 8 December 2019 в 18:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: