Не использовать атрибуты сервлета WebLogic для синтаксического анализа XML

Это правило находит все случаи использования атрибутов setAttribute и getAttribute WebLogic для синтаксического анализа XML. Правило выполняет поиск в коде Java. Для поиска WebLogic weblogic.servlet.XMLParsingHelper, поддерживающего эту функцию, используется отдельное правило.

Правило находит следующее:
  1. Все вызовы методов setAttribute , где первый аргумент-это строковый литерал с любым из следующих значений:
    • org.xml.sax.helpers.DefaultHandler
    • org.xml.sax.HandlerBase
    • org.w3c.dom.Document

    Пример:
    request.setAttribute("org.xml.sax.helpers.DefaultHandler", someObject)

  2. Все вызовы методов setAttribute , где первый аргумент-это ссылка на строковую переменную или строковое поле, и эта переменная или поле инициализируются любым из следующих значений:
    • org.xml.sax.helpers.DefaultHandler
    • org.xml.sax.HandlerBase
    • org.w3c.dom.Document

    Пример:
       String handler = "org.xml.sax.helpers.DefaultHandler";
       request.setAttribute(handler, someObject);

  3. Все вызовы методов getAttribute , где аргумент-это строковый литерал с любым из следующих значений:
    • org.xml.sax.helpers.DefaultHandler
    • org.xml.sax.HandlerBase
    • org.w3c.dom.Document

    Пример: Document myDocument = request.getAttribute("org.w3c.dom.Document")

  4. Все вызовы методов getAttribute , где аргумент-это ссылка на строковую переменную или строковое поле, и эта переменная или поле инициализируются любым из следующих значений:
    • org.xml.sax.helpers.DefaultHandler
    • org.xml.sax.HandlerBase
    • org.w3c.dom.Document

    Пример:
       String handler = "org.w3c.dom.Document";
       Document myDoc = request.getAttribute(handler);


. В зависимости от как структурирован код, автоматическое исправление предложит один из следующих вариантов:
  1. Удалить вызов метода.

    Примеры:
       request.setAttribute("org.xml.sax.helpers.DefaultHandler", myHandler);
       request.getAttribute("org.w3c.dom.Document");
    Когда автоматическое исправление применяется к предыдущим строкам, эти строки удаляются.
    Примечание: Убедитесь, что объект, myHandler , инициализируется другими способами, если он используется в коде позже.

  2. Удалить раздел инициализации переменной.

    Примеры:
       Document myDocument = request.getAttribute("org.w3c.dom.Document");
    Когда применяется автоматическое исправление, предыдущий код меняется на:
       Document myDocument;
    Примечание: Убедитесь, что объект, myDocument , инициализируется другими способами, если он используется в коде позже.