Как игнорировать предупреждения С помощью GCJ
-
20-09-2019 - |
Вопрос
У меня есть несколько классов, которые реализуют интерфейсы, некоторые из которых имеют методы, параметры которых по определению не используются в конкретной реализации класса.например ,Интерфейс "Shape" может определять метод "contains (point)", но мой конкретный класс определяет строку, которая ничего не может содержать, поскольку она одномерная, поэтому она всегда возвращает false и никогда не использует point .
Однако, когда я компилирую с помощью GCJ, на меня обрушиваются сотни "предупреждений:параметр x не используется" сообщения.
Я попытался использовать флаг -Wno-all для отключения предупреждений, а также других, задокументированных на странице руководства gcj, но они не имеют никакого эффекта.Как мне проинструктировать GCJ, чтобы он не беспокоил меня этими тривиальными предупреждениями?
Решение 2
Хотя я не нашел возможности сделать это напрямую с помощью gcj, одним из обходных путей является передача выходных данных в grep и поиск шаблона "ошибка:", а затем отображение только этой строки и нескольких окружающих строк.
например ,javac *.java 2>&1 | grep -B 3 -A 2 "ошибка:"
Другие советы
Мне удалось отключить все предупреждения, влияющие на мой исходный код, используя:
gcj -Wno-all -Wno-unchecked -Wno-raw *.java
Возможно, вы захотите добавить еще -Wno-...
флаги для отключения дополнительных предупреждений.Чтобы выяснить возможные флаги, я изучил тело методов org.eclipse.jdt.internal.compiler.batch.Main.handleWarningToken и org.eclipse.jdt.internal.compiler.batch.Main.handleErrorOrWarningToken в пакетном компиляторе Eclipse ecjsrc-3.5.2.zip
и ecjsrc-3.8.zip
.
Укажите все эти флаги, чтобы отключить все предупреждения:
-Wno-all
-Wno-allDeadCode
-Wno-allDeprecation
-Wno-allJavadoc
-Wno-allOver-ann
-Wno-all-static-method
-Wno-assertIdentifier
-Wno-boxing
-Wno-charConcat
-Wno-compareIdentical
-Wno-conditionAssign
-Wno-constructorName
-Wno-deadCode
-Wno-dep-ann
-Wno-deprecation
-Wno-discouraged
-Wno-emptyBlock
-Wno-enumIdentifier
-Wno-enumSwitch
-Wno-enumSwitchPedantic
-Wno-fallthrough
-Wno-fieldHiding
-Wno-finalBound
-Wno-finally
-Wno-forbidden
-Wno-hashCode
-Wno-hiding
-Wno-includeAssertNull
-Wno-incomplete-switch
-Wno-indirectStatic
-Wno-interfaceNonInherited
-Wno-intfAnnotation
-Wno-intfNonInherited
-Wno-intfRedundant
-Wno-javadoc
-Wno-localHiding
-Wno-maskedCatchBlock
-Wno-maskedCatchBlocks
-Wno-nls
-Wno-noEffectAssign
-Wno-noImplicitStringConversion
-Wno-null
-Wno-nullDereference
-Wno-over-ann
-Wno-over-sync
-Wno-packageDefaultMethod
-Wno-paramAssign
-Wno-pkgDefaultMethod
-Wno-raw
-Wno-redundantSuperinterface
-Wno-resource
-Wno-semicolon
-Wno-serial
-Wno-specialParamHiding
-Wno-static-access
-Wno-static-method
-Wno-staticReceiver
-Wno-super
-Wno-suppress
-Wno-switchDefault
-Wno-syncOverride
-Wno-synthetic-access
-Wno-syntheticAccess
-Wno-typeHiding
-Wno-unavoidableGenericProblems
-Wno-unchecked
-Wno-unnecessaryElse
-Wno-unqualifiedField
-Wno-unqualified-field-access
-Wno-unsafe
-Wno-unused
-Wno-unusedAllocation
-Wno-unusedArgument
-Wno-unusedArguments
-Wno-unusedImport
-Wno-unusedImports
-Wno-unusedLabel
-Wno-unusedLocal
-Wno-unusedLocals
-Wno-unusedPrivate
-Wno-unusedThrown
-Wno-unusedTypeArgs
-Wno-uselessTypeCheck
-Wno-varargsCast
-Wno-warningToken