Официальная альтернатива API Java для com.sun.jna. *

Наша программа использует собственные библиотеки через JNA, некоторые из этих вызовов проходят через com.sun.jna.Pointer и com.sun.jna.ptr.PointerByReference.

При анализе такого кода с помощью сонара он дает "основной запах кода" squid:S1191 - Classes from "sun.*" packages should not be used.
В документации Sonar конкретно упоминается import com.sun.jna.Native; как несовместимый код, но не предлагаются альтернативы. Судя по поиску в Google squid:1191, многие пользователи считают это правило слишком строгим (не говоря уже о том, что вы не можете аннотировать импорт, чтобы подавить предупреждение).

Насколько я понимаю, это правило зародилось в Java часто задаваемые вопросы, который также не предоставляет никаких альтернативных API для JNA.

Должен ли я просто игнорировать проблему (или найти обходной путь для ее подавления), или мы действительно здесь что-то делаем не так?

Я считаю, что этот вопрос и ответ соответствует тому, что вы ищете: Классы правил SonarQube из пакетов "com.sun. *" И "sun. *" Не должны использоваться, даже если пакет другой.

cbr 15.10.2018 22:52

Так что на самом деле в FAQ по Java говорится: «Не полагайтесь на внутренние компоненты». Вы не обращаетесь к внутренним компонентам Java, а просто взаимодействуете с зависимостью, пакет которой начинается с «com.sun.». Я бы подавил предупреждение.

cbr 15.10.2018 22:54

Спасибо, я постараюсь найти способ подавить это

Elist 16.10.2018 13:25

Вы можете поставить комментарий после первого импорта com.sun.jna.*: // NOSONAR (при желании вы можете добавить сквид: S1191)

Daniel Widdis 18.10.2018 07:37
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
4
750
0

Другие вопросы по теме