Comments (6)
I say go for it!
from fb-contrib.
I would suspect the reason they are doing this is because the List
returned from Arrays.asList is immutable, and they want to be able to
add or remove items or such. (unless you are saying you can determine
that the code will do no such thing, then that's another story.
On 2015-03-24 16:00, Trevor Pounds wrote:
I noticed the following anti-pattern in some service code the other day. Arrays.asList(...) already creates a copy of the original array so nesting it inside an additional ArrayList is unnecessary.
final List<...> valueList = new ArrayList<...>(Arrays.<...>asList(valueArray));
I'll take a crack at adding new detector for this bug but wanted to report it in case anyone wanted to get to it beforehand.
Reply to this email directly or view it on GitHub [1].
Links:
[1] #37
from fb-contrib.
@mebigfatguy Looks like you are correct. I noticed after posting the issue that we were removing elements from the newly constructed list elsewhere. I think this idea still has some merit in the scenario where it is being constructed as above but never being mutated. However, the detector would require some additional escape and usage analysis on the object. Thoughts?
from fb-contrib.
@tpounds One easy thing would be to see if Guava, (or perhaps some other collections library) was on the class path, and if so, recommend using
List<?> valueList = Lists.newArrayList(valueArray);
instead.
I'd think determining if an ArrayList is used mutably would be kind of rough to do. As it's highly likely that that collection is going to be passed as a parameter somewhere. I suppose you could look for local-only use of the collection and report against that.
from fb-contrib.
ArrayList really should have a constructor that accepts an array. But that's for Oracle to fix...
from fb-contrib.
Guava is useful here.
from fb-contrib.
Related Issues (20)
- false-positive in EXS_EXCEPTION_SOFTENING_NO_CONSTRAINTS when rethrowing exception HOT 2
- 7.6.0.sb is missing from maven central HOT 2
- NullPointerException HOT 1
- Regressoin of BAS_BLOATED_ASSIGNMENT_SCOPE after update from 7.6.0 to 7.6.1 HOT 1
- WOC_WRITE_ONLY_COLLECTION_LOCAL false positive if collection is read in lambda HOT 1
- Why not just rename repo to 'sb-contrib' and stop deploying 'fb-contrib' HOT 5
- WOC_WRITE_ONLY_COLLECTION_FIELD for constant collections HOT 1
- Couldn't find "findbugs.xml" in plugin PluginLoader
- Show the GitHub repository clearly on the official website, so that more people can learn about fb.
- `IncorrectInternalClassUse` throws a `ClassFormatException` after upgrading to Spotbugs 6.0.3 HOT 5
- Thoughts on donating this project to spotbugs as its so frequently used with spotbugs HOT 4
- False positives due to ignoring field accesses from inner classes
- False positive FCBL_FIELD_COULD_BE_LOCAL for private field of nested class
- False-positive MC_OVERRIDABLE_METHOD_CALL_IN_CONSTRUCTOR for method reference HOT 2
- False positives for try-with-resources (NP_LOAD_OF_KNOWN_NULL_VALUE, RCN_REDUNDANT_NULLCHECK_OF_NULL_VALUE) HOT 2
- Code compiled with target 11 (and not 1.8) does not find all bug warnings
- False-positive in OPM_OVERLY_PERMISSIVE_METHOD for equals HOT 1
- `FII_USE_FUNCTION_IDENTITY` false-positive
- BCEL errors with fb-contrib 7.6.4 HOT 1
- FII_USE_FUNCTION_IDENTITY false positive HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from fb-contrib.