Почему JetBrains IDE продолжает говорить, что Class и Constructor не используются?

Моя среда разработки PhpStorm/WebStorm продолжает сообщать, что class и constructor не используются для некоторых классов (не для всех). Я уже установил версию языка JavaScript на ECMAScript6 и включил поддержку Node.js в настройках. Код в целом тоже работает нормально. Например ...

Файл TestClass.js:

module.exports = class Test {
    constructor() {
        console.log("Test.constructor");
    }

    test() {
        console.log("Test.test");
    }
}

Файл Test.js:

let Test = require("./TestClass");
let inst = new Test();
inst.test();

При этом проверки кода продолжают говорить мне:

Неиспользуемый класс TestClass
Неиспользуемый конструктор метода

Что-то не так или есть способ подавить предупреждение? В среде IDE обычно не отображается возможность подавить это.

Кажется, еще одна проблема заключается в том, что анонимные классы также вызывают проблемы с проверкой. Если я перепишу module.exports = class Test { в module.exports = class {, даже метод test() внутри класса будет помечен как unused. Я тоже не нашел способа предотвратить это...


person eisbehr    schedule 27.02.2017    source источник
comment
Я думаю, вы можете отключить проверку неиспользуемых классов и методов в Файле - Настройки - Проверка кода - JS. Я не уверен с путем, потому что я работал с PhpStorm 6 месяцев назад, но это было что-то вроде этого.   -  person Jirka Picek    schedule 27.02.2017
comment
@JirkaPicek Но это отключит проверку для всего проекта. Это сработает, но будет иметь больший эффект. Я хотел бы иметь осмотр, но работать правильно. ;)   -  person eisbehr    schedule 27.02.2017
comment
@Gimby Конечно, это должно быть включено. Но это уже включено в моем проекте. Я расширил вопрос до этого.   -  person eisbehr    schedule 27.02.2017
comment
Я знаю, что вы уже нашли решение, но если вы хотите в будущем отключить только некоторые определенные проверки, в ReSharper в меню Alt+Enter Проверка... -› Отключить один раз с комментарием -› Отключить ‹Ваш выбор›. Я думаю, что-то подобное есть в PhpStorm.   -  person Jirka Picek    schedule 27.02.2017
comment
@JirkaPicek Да, это была одна вещь, которую я искал сначала. Но похоже, что нет возможности подавить такие предупреждения. Я знаю функцию Alt+Enter, но в этих строках ничего не происходит. В контекстном меню предупреждения даже нет записи о подавлении.   -  person eisbehr    schedule 27.02.2017


Ответы (1)


Кажется, мне просто нужно было спросить здесь, чтобы найти ответ самому. ;)

Проблема, похоже, связана со встроенным экспортом файла class. При создании сначала class, а затем export это решает проблему class name.

Поэтому мне просто пришлось переписать файлы классов следующим образом:

class Test { // instead of module.exports = class Test {
    constructor() {
        console.log("Test.constructor");
    }
}

module.exports = Test; // put the export to an extra line
person eisbehr    schedule 27.02.2017
comment
Больше патч, чем решение, но я думаю, что это работает. Спасибо. - person Dakusan; 04.06.2017
comment
Благодарю вас! Пока это единственная помощь во всей сети. Экспорт класса напрямую больше не вызывает проблем с неиспользуемыми методами. НО требование модуля и вызов конструктора не намекают на параметры. Он распознает только конструктор с MyClass.prototype.constructor(). Экспорт класса в конец файла привел к правильному распознаванию конструктора. - person musicin3d; 14.08.2019