Skip to content

Zonher/Vs-Plugin

Repository files navigation

Васенин Никита Сергеевич М3109 README

This is the README for your extension "Google style checker".

Features

Расширение умеет анализировать код и считать стиль кода, а также выводить соответствующую картинку.

Extension Settings

Для этого расширения подходит версия VS Code v1.95.3

Known Issues

Можно вставлять картинки, которые находятся в папке с расширением

Release Notes

1.0.0

Добавлен счетчик стиля

1.0.1

Добавлена возможность добавлять картинки

Алгоритм вычисления стиля

Алгоритм оценки стиля кода, используемый в предоставленном коде, основан на анализе текста активного документа с помощью регулярных выражений. Вот подробный алгоритм:

1. Инициализация

Сбор текста: Получить содержимое активного редактора (открытого файла) в VS Code. javascript Копировать код const editor = vscode.window.activeTextEditor; const text = editor.document.getText();

2. Определение правил оценки

Для анализа используются три регулярных выражения, каждое из которых проверяет соответствие определённым стилям кода:

2.1. Переменные с использованием camelCase

Регулярное выражение: \b[a-z][a-zA-Z0-9]\s=\s*[^;]+; Описание: Начинается с одной маленькой буквы ([a-z]). Может содержать буквы и цифры ([a-zA-Z0-9]*). После имени переменной идёт оператор присваивания =. Завершается строка точкой с запятой ;. Пример совпадений: myVariable = 10;, someValue = "text";.

2.2. Константы с использованием UPPER_SNAKE_CASE

Регулярное выражение: \bconst\s+[A-Z_]+\s*=\s*[^;]+; Описание: Использует ключевое слово const. Имя константы записано в верхнем регистре с символами подчёркивания ([A-Z_]+). После имени — оператор присваивания =. Завершается точкой с запятой ;. Пример совпадений: const MAX_COUNT = 100;, const API_KEY = "key";.

2.3. Функции с использованием camelCase

Регулярное выражение: \b[a-z][a-zA-Z0-9]\s(.)\s{ Описание: Имя функции начинается с маленькой буквы ([a-z]). Может содержать буквы и цифры ([a-zA-Z0-9]*). Следует открывающая скобка (, указывающая на начало параметров. Завершается открывающей фигурной скобкой {. Пример совпадений: calculateSum(a, b) {, getData() {.

3. Подсчёт совпадений

Для каждой категории используются методы String.prototype.match и Array.prototype.length, чтобы определить количество совпадений:

const variableMatches = (text.match(variablePattern) || []).length;
const constMatches = (text.match(constPattern) || []).length;
const functionMatches = (text.match(functionPattern) || []).length;
text.match(pattern) возвращает массив совпадений.

Если совпадений нет, возвращается null. Поэтому используется || [].

4. Агрегация результатов

Суммируется общее количество совпадений для всех категорий: javascript Копировать код const totalMatches = variableMatches + constMatches + functionMatches;

5. Классификация стиля

На основании общего количества совпадений определяется качество стиля:

5.1. 0 совпадений

Если общее количество совпадений равно 0, выводится сообщение о полном несоответствии стилю. Картинка: imageSettings.noMatches.

5.2. Менее 5 совпадений

Если совпадений меньше 5, считается, что стиль кода можно улучшить. Картинка: imageSettings.lessThanFive.

5.3. 5 или более совпадений

Если совпадений 5 или больше, стиль кода считается хорошим. Картинка: imageSettings.fiveOrMore.

6. Вывод результатов

Результаты анализа передаются в WebView. Отображается HTML-контент с итогами:

  • Количество совпадений.
  • Выбранная картинка.
panel.webview.html = `
    <!DOCTYPE html>
    <html lang="en">
    <body>
        <h1>Code Style Results</h1>
        <p>Total Matches: ${totalMatches}</p>
        <img src="${imgSrc}" alt="Result Image" style="max-width: 100%; height: auto;" />
    </body>
    </html>
`;

7. Диагностика и отладка

Логируется содержимое текста и количество совпадений для каждой категории. Убедитесь, что результаты анализа правильные:

Копировать код
console.log('Matches found:', {
    variableMatches,
    constMatches,
    functionMatches,
    totalMatches
});

Полный алгоритм:

  • Получить текст активного редактора.
  • Проверить текст регулярными выражениями:
    • Переменные в camelCase.
    • Константы в UPPER_SNAKE_CASE.
    • Функции в camelCase.
  • Подсчитать совпадения для каждой категории.
  • Суммировать общее количество совпадений.
  • Классифицировать стиль:
    1. 0 совпадений: плохой стиль.
    1. <5 совпадений: средний стиль.
    1. ≥5 совпадений: хороший стиль.
  • Отобразить результаты анализа и подходящую картинку в WebView.

Enjoy!

About

aaa

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors