Suppress “variable is never assigned” warning in IntelliJ IDEA

青春壹個敷衍的年華 提交于 2019-11-30 12:25:05

问题


We use reflection extensively to set class field values in our code. The fields are accessed in code but they are never assigned except via reflection. So IDEA displays "is never assigned" warning. If I ask IDEA to suppress the inspection, it inserts

@SuppressWarnings({"UnusedDeclaration"})

but this also disables the check of whether the field is used or not, which we do not want.

Is it anyhow possible to disable only "not assigned" check and leave "not used" check for specific fields only?

IDEA version is 10.5


回答1:


You could use an annotation to mark it as an injected field. (similar to how it would treat @EJB). The IntelliJ inspections (at least with version 10.5) allow you to configure your own annotations to mark fields as being injected.

Select Analyze, Inspect Code from the menu and then go to the unused declaration inspection and you can configure an annotation.




回答2:


  1. run analysis: Analyze > Inpect Code...
  2. Right click on Unused Declaration (below the Declaration redundancy tree node)
  3. Click on the "Configure Annotations..."
  4. Add com.google.google.inject.Inject and javax.inject.Inject



回答3:


To configure annotations in Android Studio 1.1.0 after inspecting your code right click Unused declaration -> Edit Settings -> Configure annotations.




回答4:


If you popup the actions hint window (alt + Enter on Mac), it should suggest you to suppress warning for Inject annotation




回答5:


Nope, it seems that IDEA's inspection is not that fine grained. Even with annotation based dependency injected fields the same warning can be suppressed for fields annotated with @Inject. Automatically the warning "not used" is suppressed.

I've just tried running FindBugs-IDEA against the class and no warnings or errors were raised.




回答6:


Settings -> Editor -> Inspections -> Declaration Redundancy -> Unused declaration -> Entry points -> Annotations

A new popup opens, split into 2 different areas: "Mark as entry point if annotated by" and "Mark field as implicitly written if annotated by". Only in the latter you click the "+" icon (Add Annotation Class) and select Autowired annotation (or whatever annotation you're using for dependency injection).

This will disable the warning "private field is never assigned" but will not disable the warning "private field is never used" in case you never use the field in the class code, which is the desirable behaviour.

This worked on IntelliJ IDEA Community Edition 2018.3.3



来源:https://stackoverflow.com/questions/6762012/suppress-variable-is-never-assigned-warning-in-intellij-idea

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!