It is recommended to use the JArchitect interactive UI capabilities
to make the most of JArchitect by mastering all aspects of your code.
Diagrams
Application Metrics
Note: Further Application Statistics are available.
|
Quality Gates summary
911can be stopped upon quality gate
failure. Online documentation.
be run on the baseline. Hence they
have blank trend and baseline status.
Name | Trend | Baseline Value | Value | Group | |||
---|---|---|---|---|---|---|---|
| N/A because no coverage data | Project Rules \ Quality Gates | |||||
| N/A because no coverage data | Project Rules \ Quality Gates | |||||
| N/A because no coverage data | Project Rules \ Quality Gates | |||||
| 0 issues | 0 issues | Project Rules \ Quality Gates | ||||
| 1 issues | 1 issues | Project Rules \ Quality Gates | ||||
| 0 issues | Project Rules \ Quality Gates | |||||
| 3 rules | 3 rules | Project Rules \ Quality Gates | ||||
| 7.26 % | 7.26 % | Project Rules \ Quality Gates | ||||
| 0 man-days | Project Rules \ Quality Gates | |||||
| 0 packages | 0 packages | Project Rules \ Quality Gates | ||||
| 0 man-days | Project Rules \ Quality Gates |
Rules summary
212223- Number of Rules or Queries with Error (syntax error, exception thrown, time-out): 0
- Number of Rules violated: 25
development-time, from within Visual
JArchitect. Online documentation.
run on the baseline. Hence they
have blank # Issues Fixed or Added.
Name | # Issues | Added | Fixed | Elements | Group | |||
---|---|---|---|---|---|---|---|---|
| 7 | 0 | 0 | types | Project Rules \ Code Smell | |||
| 280 | 0 | 0 | types | Project Rules \ Code Smell | |||
| 4 | 0 | 0 | types | Project Rules \ Code Smell | |||
| 6 | 0 | 0 | methods | Project Rules \ Code Smell | |||
| 61 | 0 | 0 | methods | Project Rules \ Code Smell | |||
| 22 | 0 | 0 | methods | Project Rules \ Code Smell | |||
| 384 | 0 | 0 | methods | Project Rules \ Code Smell | |||
| 59 | 0 | 0 | methods | Project Rules \ Code Smell | |||
| 11 | 0 | 0 | types | Project Rules \ Code Smell | |||
| 67 | 0 | 0 | types | Project Rules \ Design | |||
| 462 | 0 | 0 | types | Project Rules \ Design | |||
| 5 | 0 | 0 | fields | Project Rules \ Design | |||
| 66 | 0 | 0 | types | Project Rules \ Design | |||
| 493 | 0 | 0 | types | Project Rules \ Design | |||
| 158 | 0 | 0 | methods | Project Rules \ Design | |||
| 1 | 0 | 0 | project | Project Rules \ Architecture | |||
| 13 | 0 | 0 | namespaces | Project Rules \ Architecture | |||
| 1 | 0 | 0 | project | Project Rules \ Architecture | |||
| 17 | 0 | 0 | types | Project Rules \ Naming Conventions | |||
| 26 | 0 | 0 | types | Project Rules \ Naming Conventions | |||
| 17 | 0 | 0 | types | Project Rules \ Naming Conventions | |||
| 1165 | 0 | 0 | types | Project Rules \ Naming Conventions | |||
| 2832 | 0 | 0 | methods | Project Rules \ Naming Conventions | |||
| 55 | 0 | 0 | fields | Project Rules \ Naming Conventions | |||
| 30 | 0 | 0 | types | Project Rules \ Naming Conventions |
Application Statistics
Stat | # Occurences | Avg | StdDev | Max |
---|---|---|---|---|
Properties on interfaces | 215 interfaces | 0 | 0 | 0 properties on com.google.common.base.FinalizableReference |
Methods on interfaces | 215 interfaces | 3.61 | 5.45 | 26 methods on com.google.common.collect.Multiset |
Arguments on methods on interfaces | 776 methods | 0.71 | 1.27 | 21 arguments on com.google.common.testing.anotherpackage.ForwardingWrapperTesterTest$ParameterTypesDifferent.foo(String,Runnable,Number,Iterable,boolean,Equivalence,Exception,InputStream,Comparable,Ordering,Charset,TimeUnit,Class,Joiner,Pattern,UnsignedInteger,UnsignedLong,StringBuilder,Predicate,Function,Object) |
Public properties on classes | 5,466 Classes | 0 | 0 | 0 public properties on com.google.common.annotations.Beta |
Public methods on classes | 5,466 classes | 5.53 | 10.19 | 186 public methods on com.google.common.reflect.TypeTokenTest |
Arguments on public methods on classes | 30,206 methods | 0.63 | 1 | 21 arguments on com.google.common.testing.anotherpackage.ForwardingWrapperTesterTest$ParameterTypesDifferentForwarder.foo(String,Runnable,Number,Iterable,boolean,Equivalence,Exception,InputStream,Comparable,Ordering,Charset,TimeUnit,Class,Joiner,Pattern,UnsignedInteger,UnsignedLong,StringBuilder,Predicate,Function,Object) |
IL instructions in non-abstract methods | 37,109 methods | 19.14 | 246.6 | 25003 IL instructions in com.google.common.base.EnumsBenchmark$LargeEnum.EnumsBenchmark$LargeEnum() |
Cyclomatic complexity on non abstract Methods | 37,109 Methods | 1.44 | 1.29 | CC = 34 for com.google.common.cache.Striped64.retryUpdate(long,int[],boolean) |
Projects Metrics
Clicking column header arrows sorts values.
Clicking column header title text redirect to the online Code Metric definition.
Types Metrics
If the code base analyzed has too many types, JArchitect doesn't list Types Metrics to avoid a too big report. The section Types Metrics can be activated by unchecking the option: JArchitect Project Properties > Report > Avoid too big report for large code base > Hide section Types Metrics if... It is recommended to use the JArchitect interactive UI capabilities to browse large applications. |
Packages Metrics
Clicking column header arrows sorts values.
Clicking column header title text redirect to the online Code Metric definition.
Project Rules | 911 |
Quality Gates | 911 |
|
Quality Gate Pass: Percentage Code Coverage |
Scalar Result: N/A %
Quality Gate Pass: Percentage Coverage on New Code |
Scalar Result: N/A %
Quality Gate Pass: Percentage Coverage on Refactored Code |
Scalar Result: N/A %
Quality Gate Pass: Blocker Issues |
No issue matched
Quality Gate Warn: Critical Issues |
1 issue matched
1 issue | Severity | Debt | Annual Interest | Full Name |
---|---|---|---|---|
Critical issue on: com.google.common.reflect.TypeTokenTest | Critical | 1d 2h | 2h 0min | Rule violated: Avoid types with too many methods |
Statistics
Stat | Severity | Debt | Annual Interest |
---|---|---|---|
Sum: | - | 1d 2h | 2h 0min |
Average: | - | 1d 2h | 2h 0min |
Minimum: | - | 1d 2h | 2h 0min |
Maximum: | - | 1d 2h | 2h 0min |
Standard deviation: | - | 0min 0s | 0min 0s |
Variance: | - | 0min 0s | 0min 0s |
Quality Gate Pass: New Blocker / Critical / Major Issues |
No issue matched
Quality Gate Fail: Critical Rules Violated |
3 rules matched
3 rules | issues | Full Name |
---|---|---|
Avoid types too big | 7 issues | Rule |
Avoid methods too big, too complex | 6 issues | Rule |
Avoid methods with too many parameters | 61 issues | Rule |
Statistics
Stat | issues |
---|---|
Sum: | 74 |
Average: | 24.67 |
Minimum: | 6 |
Maximum: | 61 |
Standard deviation: | 25.69 |
Variance: | 660.22 |
Quality Gate Pass: Percentage Debt |
Scalar Result: 7.26 %
Quality Gate Pass: New Debt since Baseline |
Scalar Result: 0 man-days
Quality Gate Pass: Debt Rating per Package |
No package matched
Quality Gate Pass: New Annual Interest since Baseline |
Scalar Result: 0 man-days
Rules extracted from Source Code | 000 |
Project Rules | 212223 |
Code Smell | 063 |
|
Critical Rule Violated: Avoid types too big |
• How to Fix Issues: Types with many lines of code should be split in a group of smaller types. To refactor a big Class you'll need patience, and you might even need to recreate everything from scratch. Here are a few refactoring advices: • The logic in the Big Class must be splitted in smaller classes. These smaller classes can eventually become private classes nested in the original Big Class, whose instances objects become composed of instances of smaller nested classes. • Smaller classes partitioning should be driven by the multiple responsibilities handled by the Big Class. To identify these responsibilities it often helps to look for subsets of methods strongly coupled with subsets of fields. • If the Big Class contains way more logic than states, a good option can be to define one or several static classes that contains no static field but only pure static methods. A pure static method is a function that computes a result only from inputs parameters, it doesn't read nor assign any static or instance field. The main advantage of pure static methods is that they are easily testable. • Try to maintain the interface of the Big Class at first and delegate calls to the new extracted classes. In the end the Big Class should be a pure facade without its own logic. Then you can keep it for convenience or throw it away and start to use the new classes only. • Unit Tests can help: write tests for each method before extracting it to ensure you don't break functionality. The estimated Debt, which means the effort to fix such issue, varies linearly from 1 hour for a 200 lines of code type, up to 10 hours for a type with 2.000 or more lines of code. In Debt and Interest computation, this rule takes account of the fact that static types with no mutable fields are just a collection of static methods that can be easily splitted and moved from one type to another.
7 types matched
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
7 types | locJustMyCode | # ByteCode instructions | Methods | Fields | Debt | Annual Interest | Full Name |
---|---|---|---|---|---|---|---|
LongMath | 325 | 2 363 | 27 methods | 11 fields | 1h 37min | 10min | com.google.common.math.LongMath |
Monitor | 272 | 1 085 | 41 methods | 3 fields | 1h 21min | 6min | com.google.common.util.concurrent .Monitor |
InetAddresses | 254 | 1 162 | 37 methods | 5 fields | 1h 16min | 5min | com.google.common.net.InetAddresses |
Iterators | 252 | 826 | 58 methods | no field | 1h 15min | 5min | com.google.common.collect.Iterators |
IntMath | 246 | 1 232 | 25 methods | 8 fields | 1h 13min | 5min | com.google.common.math.IntMath |
FreshValueGenerator | 227 | 919 | 120 methods | 5 fields | 1h 8min | 3min 46s | com.google.common.testing .FreshValueGenerator |
Preconditions | 217 | 1 642 | 84 methods | no field | 1h 5min | 3min 6s | com.google.common.base.Preconditions |
Rule Violated: Avoid types with too many methods |
• How to Fix Issues: To refactor properly a Big Class please read HowToFix advices from the default rule Types to Big. // The estimated Debt, which means the effort to fix such issue, varies linearly from 1 hour for a type with 20 methods, up to 10 hours for a type with 200 or more methods. In Debt and Interest computation, this rule takes account of the fact that static types with no mutable fields are just a collection of static methods that can be easily splitted and moved from one type to another.
280 types matched
- The following list of types is truncated and contains only the first 100 types of the 280 types matched.
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
280 types | nbMethods | instanceMethods | staticMethods | # lines of code (LOC) | Debt | Annual Interest | Full Name |
---|---|---|---|---|---|---|---|
TypeTokenTest | 206 | 184 methods | 22 methods | 0 | 1d 2h | 2h 0min | com.google.common.reflect.TypeTokenTest |
FuturesTest | 179 | 162 methods | 17 methods | 0 | 1d 0h | 1h 46min | com.google.common.util.concurrent .FuturesTest |
IteratorsTest | 158 | 154 methods | 4 methods | 0 | 7h 54min | 1h 32min | com.google.common.collect.IteratorsTest |
IterablesTest | 147 | 143 methods | 4 methods | 0 | 7h 21min | 1h 25min | com.google.common.collect.IterablesTest |
FreshValueGenerator | 118 | 64 methods | 54 methods | 227 | 5h 54min | 1h 6min | com.google.common.testing .FreshValueGenerator |
FluentIterableTest | 118 | 115 methods | 3 methods | 0 | 5h 54min | 1h 6min | com.google.common.collect .FluentIterableTest |
MapsTest | 108 | 105 methods | 3 methods | 0 | 5h 24min | 59min | com.google.common.collect.MapsTest |
ImmutableSortedSetTest | 107 | 103 methods | 4 methods | 0 | 5h 21min | 59min | com.google.common.collect .ImmutableSortedSetTest |
SplitterTest | 106 | 105 methods | 1 method | 0 | 5h 18min | 58min | com.google.common.base.SplitterTest |
LocalCacheTest | 106 | 87 methods | 19 methods | 0 | 5h 18min | 58min | com.google.common.cache.LocalCacheTest |
SetsTest | 105 | 86 methods | 19 methods | 0 | 5h 15min | 57min | com.google.common.collect.SetsTest |
PredicatesTest | 102 | 95 methods | 7 methods | 0 | 5h 6min | 55min | com.google.common.base.PredicatesTest |
Maps | 92 | no method | 92 methods | 0 | 4h 36min | 49min | com.google.common.collect.Maps |
Preconditions | 84 | no method | 84 methods | 217 | 4h 12min | 43min | com.google.common.base.Preconditions |
OrderingTest | 83 | 77 methods | 6 methods | 0 | 4h 9min | 43min | com.google.common.collect.OrderingTest |
LongMathTest | 83 | 77 methods | 6 methods | 0 | 4h 9min | 43min | com.google.common.math.LongMathTest |
NullPointerTesterTest | 82 | 75 methods | 7 methods | 0 | 4h 6min | 42min | com.google.common.testing .NullPointerTesterTest |
DoubleMathTest | 79 | 78 methods | 1 method | 0 | 3h 57min | 40min | com.google.common.math.DoubleMathTest |
ClassSanityTesterTest | 78 | 78 methods | no method | 0 | 3h 54min | 40min | com.google.common.testing .ClassSanityTesterTest |
MapInterfaceTest<K,V> | 74 | 73 methods | 1 method | 0 | 3h 42min | 37min | com.google.common.collect.testing .MapInterfaceTest |
MultisetNavigationTester<E> | 74 | 72 methods | 2 methods | 0 | 3h 42min | 37min | com.google.common.collect.testing.google .MultisetNavigationTester |
FreshValueGeneratorTest | 74 | 66 methods | 8 methods | 0 | 3h 42min | 37min | com.google.common.testing .FreshValueGeneratorTest |
ListsTest | 73 | 65 methods | 8 methods | 0 | 3h 39min | 36min | com.google.common.collect.ListsTest |
MultimapsTest | 72 | 67 methods | 5 methods | 0 | 3h 36min | 36min | com.google.common.collect.MultimapsTest |
IntMathTest | 72 | 66 methods | 6 methods | 0 | 3h 36min | 36min | com.google.common.math.IntMathTest |
CacheLoadingTest | 71 | 64 methods | 7 methods | 0 | 3h 33min | 35min | com.google.common.cache.CacheLoadingTest |
LocalCache<K,V> | 70 | 61 methods | 9 methods | 0 | 3h 30min | 34min | com.google.common.cache.LocalCache |
MinMaxPriorityQueueTest | 68 | 60 methods | 8 methods | 0 | 3h 24min | 33min | com.google.common.collect .MinMaxPriorityQueueTest |
AbstractImmutableSetTest | 66 | 66 methods | no method | 0 | 3h 18min | 32min | com.google.common.collect .AbstractImmutableSetTest |
ByteStreamsTest | 66 | 62 methods | 4 methods | 0 | 3h 18min | 32min | com.google.common.io.ByteStreamsTest |
ImmutableMultisetTest | 62 | 61 methods | 1 method | 0 | 3h 6min | 29min | com.google.common.collect .ImmutableMultisetTest |
ImmutableSortedMultisetTest | 62 | 61 methods | 1 method | 0 | 3h 6min | 29min | com.google.common.collect .ImmutableSortedMultisetTest |
FilesTest | 61 | 57 methods | 4 methods | 0 | 3h 3min | 28min | com.google.common.io.FilesTest |
IntsTest | 61 | 58 methods | 3 methods | 0 | 3h 3min | 28min | com.google.common.primitives.IntsTest |
LongsTest | 61 | 58 methods | 3 methods | 0 | 3h 3min | 28min | com.google.common.primitives.LongsTest |
LocalCache$Segment<K,V> | 59 | 59 methods | no method | 0 | 2h 57min | 27min | com.google.common.cache .LocalCache$Segment |
QuantilesTest | 59 | 57 methods | 2 methods | 0 | 2h 57min | 27min | com.google.common.math.QuantilesTest |
DoublesTest | 59 | 56 methods | 3 methods | 0 | 2h 57min | 27min | com.google.common.primitives.DoublesTest |
InvokableTest | 59 | 58 methods | 1 method | 0 | 2h 57min | 27min | com.google.common.reflect.InvokableTest |
Iterators | 58 | no method | 58 methods | 252 | 2h 54min | 26min | com.google.common.collect.Iterators |
CharMatcherTest | 58 | 52 methods | 6 methods | 0 | 2h 54min | 26min | com.google.common.base.CharMatcherTest |
FloatsTest | 58 | 55 methods | 3 methods | 0 | 2h 54min | 26min | com.google.common.primitives.FloatsTest |
JSR166TestCase | 58 | 55 methods | 3 methods | 0 | 2h 54min | 26min | com.google.common.util.concurrent .JSR166TestCase |
CacheBuilderSpecTest | 57 | 56 methods | 1 method | 0 | 2h 51min | 26min | com.google.common.cache .CacheBuilderSpecTest |
TreeRangeSetTest | 57 | 56 methods | 1 method | 0 | 2h 51min | 26min | com.google.common.collect .TreeRangeSetTest |
OptionalTest | 55 | 53 methods | 2 methods | 0 | 2h 45min | 24min | com.google.common.base.OptionalTest |
ThrowablesTest | 55 | 49 methods | 6 methods | 0 | 2h 45min | 24min | com.google.common.base.ThrowablesTest |
ImmutableListTest$CreationTests | 55 | 55 methods | no method | 0 | 2h 45min | 24min | com.google.common.collect .ImmutableListTest$CreationTests |
HashingTest | 54 | 52 methods | 2 methods | 0 | 2h 42min | 24min | com.google.common.hash.HashingTest |
ClassPathTest | 54 | 44 methods | 10 methods | 0 | 2h 42min | 24min | com.google.common.reflect.ClassPathTest |
PreconditionsTest | 53 | 50 methods | 3 methods | 0 | 2h 39min | 23min | com.google.common.base.PreconditionsTest |
ShortsTest | 53 | 52 methods | 1 method | 0 | 2h 39min | 23min | com.google.common.primitives.ShortsTest |
AbstractNetworkTest | 52 | 49 methods | 3 methods | 0 | 2h 36min | 22min | com.google.common.graph .AbstractNetworkTest |
BigIntegerMathTest | 52 | 50 methods | 2 methods | 0 | 2h 36min | 22min | com.google.common.math .BigIntegerMathTest |
TypeToken<T> | 50 | 44 methods | 6 methods | 0 | 2h 30min | 21min | com.google.common.reflect.TypeToken |
ArrayTableTest | 50 | 50 methods | no method | 0 | 2h 30min | 21min | com.google.common.collect.ArrayTableTest |
BaseEncodingTest | 50 | 37 methods | 13 methods | 0 | 2h 30min | 21min | com.google.common.io.BaseEncodingTest |
CharMatcher | 49 | 25 methods | 24 methods | 188 | 2h 27min | 21min | com.google.common.base.CharMatcher |
Iterables | 48 | no method | 48 methods | 0 | 2h 24min | 20min | com.google.common.collect.Iterables |
MapMakerInternalMap$Segment<K,V,E> | 48 | 47 methods | 1 method | 0 | 2h 24min | 20min | com.google.common.collect .MapMakerInternalMap$Segment |
MoreExecutorsTest | 48 | 46 methods | 2 methods | 0 | 2h 24min | 20min | com.google.common.util.concurrent .MoreExecutorsTest |
CacheBuilderTest | 47 | 47 methods | no method | 0 | 2h 21min | 19min | com.google.common.cache.CacheBuilderTest |
CharsTest | 47 | 47 methods | no method | 0 | 2h 21min | 19min | com.google.common.primitives.CharsTest |
AbstractAbstractFutureTest | 47 | 39 methods | 8 methods | 0 | 2h 21min | 19min | com.google.common.util.concurrent .AbstractAbstractFutureTest |
UninterruptiblesTest | 47 | 42 methods | 5 methods | 0 | 2h 21min | 19min | com.google.common.util.concurrent .UninterruptiblesTest |
ImmutableMap<K,V> | 46 | 32 methods | 14 methods | 0 | 2h 18min | 19min | com.google.common.collect.ImmutableMap |
ImmutableSortedMap<K,V> | 46 | 24 methods | 22 methods | 0 | 2h 18min | 19min | com.google.common.collect .ImmutableSortedMap |
MoreFilesTest | 46 | 42 methods | 4 methods | 0 | 2h 18min | 19min | com.google.common.io.MoreFilesTest |
AbstractServiceTest | 46 | 45 methods | 1 method | 0 | 2h 18min | 19min | com.google.common.util.concurrent .AbstractServiceTest |
FluentIterable<E> | 45 | 33 methods | 12 methods | 0 | 2h 15min | 18min | com.google.common.collect.FluentIterable |
ImmutableList<E> | 45 | 21 methods | 24 methods | 0 | 2h 15min | 18min | com.google.common.collect.ImmutableList |
AbstractMultisetSetCountTester<E> | 45 | 43 methods | 2 methods | 0 | 2h 15min | 18min | com.google.common.collect.testing.google .AbstractMultisetSetCountTester |
ImmutableTableTest | 45 | 42 methods | 3 methods | 0 | 2h 15min | 18min | com.google.common.collect .ImmutableTableTest |
MathPreconditionsTest | 45 | 45 methods | no method | 0 | 2h 15min | 18min | com.google.common.math .MathPreconditionsTest |
TestsForMapsInJavaUtil | 44 | 40 methods | 4 methods | 112 | 2h 12min | 17min | com.google.common.collect.testing .TestsForMapsInJavaUtil |
ImmutableSetMultimapTest | 44 | 42 methods | 2 methods | 0 | 2h 12min | 17min | com.google.common.collect .ImmutableSetMultimapTest |
MapMakerInternalMapTest | 44 | 35 methods | 9 methods | 0 | 2h 12min | 17min | com.google.common.collect .MapMakerInternalMapTest |
TypeTokenResolutionTest | 44 | 40 methods | 4 methods | 0 | 2h 12min | 17min | com.google.common.reflect .TypeTokenResolutionTest |
RateLimiterTest | 44 | 42 methods | 2 methods | 0 | 2h 12min | 17min | com.google.common.util.concurrent .RateLimiterTest |
TestsForSetsInJavaUtil | 43 | 40 methods | 3 methods | 126 | 2h 9min | 17min | com.google.common.collect.testing .TestsForSetsInJavaUtil |
ToStringHelperTest | 43 | 43 methods | no method | 0 | 2h 9min | 17min | com.google.common.base .ToStringHelperTest |
ImmutableListMultimapTest | 43 | 41 methods | 2 methods | 0 | 2h 9min | 17min | com.google.common.collect .ImmutableListMultimapTest |
RangeTest | 43 | 40 methods | 3 methods | 0 | 2h 9min | 17min | com.google.common.collect.RangeTest |
BloomFilterTest | 43 | 39 methods | 4 methods | 0 | 2h 9min | 17min | com.google.common.hash.BloomFilterTest |
HashCodeTest | 43 | 38 methods | 5 methods | 0 | 2h 9min | 17min | com.google.common.hash.HashCodeTest |
CacheBuilder<K,V> | 42 | 39 methods | 3 methods | 0 | 2h 6min | 16min | com.google.common.cache.CacheBuilder |
Sets | 42 | no method | 42 methods | 0 | 2h 6min | 16min | com.google.common.collect.Sets |
MediaTypeTest | 42 | 40 methods | 2 methods | 0 | 2h 6min | 16min | com.google.common.net.MediaTypeTest |
ImmutableDoubleArrayTest | 42 | 36 methods | 6 methods | 0 | 2h 6min | 16min | com.google.common.primitives .ImmutableDoubleArrayTest |
Multimaps | 41 | no method | 41 methods | 0 | 2h 3min | 15min | com.google.common.collect.Multimaps |
FunctionsTest | 41 | 39 methods | 2 methods | 0 | 2h 3min | 15min | com.google.common.base.FunctionsTest |
InetAddressesTest | 41 | 41 methods | no method | 0 | 2h 3min | 15min | com.google.common.net.InetAddressesTest |
ImmutableIntArrayTest | 41 | 35 methods | 6 methods | 0 | 2h 3min | 15min | com.google.common.primitives .ImmutableIntArrayTest |
ImmutableLongArrayTest | 41 | 35 methods | 6 methods | 0 | 2h 3min | 15min | com.google.common.primitives .ImmutableLongArrayTest |
ImmutableSortedSet<E> | 40 | 18 methods | 22 methods | 0 | 2h 0min | 15min | com.google.common.collect .ImmutableSortedSet |
Range<C> | 40 | 19 methods | 21 methods | 0 | 2h 0min | 15min | com.google.common.collect.Range |
Monitor | 40 | 37 methods | 3 methods | 272 | 2h 0min | 15min | com.google.common.util.concurrent .Monitor |
TreeBasedTableTest | 40 | 39 methods | 1 method | 0 | 2h 0min | 15min | com.google.common.collect .TreeBasedTableTest |
GraphsTest | 40 | 33 methods | 7 methods | 0 | 2h 0min | 15min | com.google.common.graph.GraphsTest |
AbstractMapTester<K,V> | 39 | 38 methods | 1 method | 0 | 1h 57min | 14min | com.google.common.collect.testing .AbstractMapTester |
Rule Violated: Avoid types with too many fields |
• How to Fix Issues: To refactor such type and increase code quality and maintainability, certainly you'll have to group subsets of fields into smaller types and dispatch the logic implemented into the methods into these smaller types. More refactoring advices can be found in the default rule Types to Big, HowToFix section. The estimated Debt, which means the effort to fix such issue, varies linearly from 1 hour for a type with 15 fields, to up to 10 hours for a type with 200 or more fields.
4 types matched
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
4 types | instanceFields | staticFields | methodsAssigningFields | Size of instance | Debt | Annual Interest | Full Name |
---|---|---|---|---|---|---|---|
LocalCache<K,V> | 22 fields | no field | 3 methods | 88 | 1h 20min | 6min | com.google.common.cache.LocalCache |
CacheBuilder<K,V> | 16 fields | no field | 17 methods | 64 | 1h 2min | 2min 38s | com.google.common.cache.CacheBuilder |
StatsAccumulatorTest | 16 fields | no field | 16 methods | 64 | 1h 2min | 2min 38s | com.google.common.math .StatsAccumulatorTest |
FuturesTest$TestFutureBatch | 16 fields | no field | no method | 64 | 1h 2min | 2min 38s | com.google.common.util.concurrent .FuturesTest$TestFutureBatch |
Critical Rule Violated: Avoid methods too big, too complex |
• How to Fix Issues: A large and complex method should be split in smaller methods, or even one or several classes can be created for that. During this process it is important to question the scope of each variable local to the method. This can be an indication if such local variable will become an instance field of the newly created class(es). Large switch…case structures might be refactored through the help of a set of types that implement a common interface, the interface polymorphism playing the role of the switch cases tests. Unit Tests can help: write tests for each method before extracting it to ensure you don't break functionality. The estimated Debt, which means the effort to fix such issue, varies from 40 minutes to 8 hours, linearly from a weighted complexity score.
6 methods matched
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
6 methods | # lines of code (LOC) | Cyclomatic Complexity (CC) | ByteCode Cyclomatic Complexity (BCCC) | ByteCode Nesting Depth | complexityScore | Debt | Annual Interest | Full Name |
---|---|---|---|---|---|---|---|---|
retryUpdate(long,int[],boolean) | 72 | 29 | 34 | 13 | 115 | 2h 21min | 21min | com.google.common.cache.Striped64 .retryUpdate(long,int[],boolean) |
retryUpdate(long,int[],boolean) | 72 | 29 | 34 | 13 | 115 | 2h 21min | 21min | com.google.common.hash.Striped64 .retryUpdate(long,int[],boolean) |
isWellFormedSlowPath(byte[],int,int) | 24 | 27 | 20 | 13 | 84 | 1h 44min | 14min | com.google.common.base.Utf8 .isWellFormedSlowPath(byte[],int,int) |
textToNumericFormatV6(String) | 34 | 23 | 18 | 6 | 64 | 1h 20min | 9min | com.google.common.net.InetAddresses .textToNumericFormatV6(String) |
isPrime(long) | 18 | 25 | 17 | 7 | 60 | 1h 15min | 8min | com.google.common.math.LongMath.isPrime (long) |
tryParse(String,int) | 28 | 23 | 16 | 5 | 57 | 1h 12min | 8min | com.google.common.primitives.Longs .tryParse(String,int) |
Critical Rule Violated: Avoid methods with too many parameters |
• How to Fix Issues: More properties/fields can be added to the declaring type to handle numerous states. An alternative is to provide a class or a structure dedicated to handle arguments passing. For example see the class System.Diagnostics.ProcessStartInfo and the method System.Diagnostics.Process.Start(ProcessStartInfo). The estimated Debt, which means the effort to fix such issue, varies linearly from 1 hour for a method with 7 parameters, up to 6 hours for a methods with 40 or more parameters.
61 methods matched
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
61 methods | # Parameters | Debt | Annual Interest | Full Name |
---|---|---|---|---|
foo(String,Runnable,Number,Iterable ,boolean,Equivalence,Exception ,InputStream,Comparable,Ordering,Charset ,TimeUnit,Class,Joiner,Pattern ,UnsignedInteger,UnsignedLong ,StringBuilder,Predicate,Function,Object ) | 21 | 3h 7min | 52min | com.google.common.testing.anotherpackage .ForwardingWrapperTesterTest$ParameterTy pesDifferent.foo(String,Runnable,Number ,Iterable,boolean,Equivalence,Exception ,InputStream,Comparable,Ordering,Charset ,TimeUnit,Class,Joiner,Pattern ,UnsignedInteger,UnsignedLong ,StringBuilder,Predicate,Function,Object ) |
foo(String,Runnable,Number,Iterable ,boolean,Equivalence,Exception ,InputStream,Comparable,Ordering,Charset ,TimeUnit,Class,Joiner,Pattern ,UnsignedInteger,UnsignedLong ,StringBuilder,Predicate,Function,Object ) | 21 | 3h 7min | 52min | com.google.common.testing.anotherpackage .ForwardingWrapperTesterTest$ParameterTy pesDifferentForwarder.foo(String ,Runnable,Number,Iterable,boolean ,Equivalence,Exception,InputStream ,Comparable,Ordering,Charset,TimeUnit ,Class,Joiner,Pattern,UnsignedInteger ,UnsignedLong,StringBuilder,Predicate ,Function,Object) |
checkDefaultValuesForTheseTypes (NullPointerTesterTest$Gender,Integer ,int,String,CharSequence,List ,ImmutableList,Map,ImmutableMap,Set ,ImmutableSet,SortedSet ,ImmutableSortedSet,Multiset ,ImmutableMultiset,Multimap ,ImmutableMultimap,Table,ImmutableTable) | 19 | 2h 49min | 44min | com.google.common.testing .NullPointerTesterTest$AllDefaultValuesC hecker.checkDefaultValuesForTheseTypes (NullPointerTesterTest$Gender,Integer ,int,String,CharSequence,List ,ImmutableList,Map,ImmutableMap,Set ,ImmutableSet,SortedSet ,ImmutableSortedSet,Multiset ,ImmutableMultiset,Multimap ,ImmutableMultimap,Table,ImmutableTable) |
of(Comparable,Comparable,Comparable ,Comparable,Comparable,Comparable ,Comparable[])<E> | 14 | 2h 3min | 27min | com.google.common.collect .ImmutableSortedSetTest.of(Comparable ,Comparable,Comparable,Comparable ,Comparable,Comparable,Comparable[])<E> |
of(Object,Object,Object,Object,Object ,Object,Object,Object,Object,Object ,Object,Object,Object[])<E> | 13 | 1h 54min | 23min | com.google.common.collect.ImmutableList .of(Object,Object,Object,Object,Object ,Object,Object,Object,Object,Object ,Object,Object,Object[])<E> |
LocalCache$ManualSerializationProxy<K,V> (LocalCache$Strength,LocalCache$Strength ,Equivalence,Equivalence,long,long,long ,Weigher,int,RemovalListener,Ticker ,CacheLoader) | 12 | 1h 45min | 19min | com.google.common.cache .LocalCache$ManualSerializationProxy .LocalCache$ManualSerializationProxy<K,V >(LocalCache$Strength ,LocalCache$Strength,Equivalence ,Equivalence,long,long,long,Weigher,int ,RemovalListener,Ticker,CacheLoader) |
of(Object,Object,Object,Object,Object ,Object,Object,Object,Object,Object ,Object)<E> | 11 | 1h 36min | 16min | com.google.common.collect.ImmutableList .of(Object,Object,Object,Object,Object ,Object,Object,Object,Object,Object ,Object)<E> |
of(Object,Object,Object,Object,Object ,Object,Object,Object,Object,Object)<K,V > | 10 | 1h 27min | 12min | com.google.common.collect.ImmutableBiMap .of(Object,Object,Object,Object,Object ,Object,Object,Object,Object,Object)<K,V > |
of(Object,Object,Object,Object,Object ,Object,Object,Object,Object,Object)<E> | 10 | 1h 27min | 12min | com.google.common.collect.ImmutableList .of(Object,Object,Object,Object,Object ,Object,Object,Object,Object,Object)<E> |
of(Object,Object,Object,Object,Object ,Object,Object,Object,Object,Object)<K,V > | 10 | 1h 27min | 12min | com.google.common.collect .ImmutableListMultimap.of(Object,Object ,Object,Object,Object,Object,Object ,Object,Object,Object)<K,V> |
of(Object,Object,Object,Object,Object ,Object,Object,Object,Object,Object)<K,V > | 10 | 1h 27min | 12min | com.google.common.collect.ImmutableMap .of(Object,Object,Object,Object,Object ,Object,Object,Object,Object,Object)<K,V > |
of(Object,Object,Object,Object,Object ,Object,Object,Object,Object,Object)<K,V > | 10 | 1h 27min | 12min | com.google.common.collect .ImmutableMultimap.of(Object,Object ,Object,Object,Object,Object,Object ,Object,Object,Object)<K,V> |
of(Object,Object,Object,Object,Object ,Object,Object,Object,Object,Object)<K,V > | 10 | 1h 27min | 12min | com.google.common.collect .ImmutableSetMultimap.of(Object,Object ,Object,Object,Object,Object,Object ,Object,Object,Object)<K,V> |
of(Comparable,Object,Comparable,Object ,Comparable,Object,Comparable,Object ,Comparable,Object)<K> | 10 | 1h 27min | 12min | com.google.common.collect .ImmutableSortedMap.of(Comparable,Object ,Comparable,Object,Comparable,Object ,Comparable,Object,Comparable,Object)<K> |
of(Object,Object,Object,Object,Object ,Object,Object,Object,Object,Object)<K,V > | 10 | 1h 27min | 12min | com.google.common.collect .ImmutableSortedMapFauxverideShim.of (Object,Object,Object,Object,Object ,Object,Object,Object,Object,Object)<K,V > |
of(Comparable,Comparable,Comparable ,Comparable,Comparable)<E> | 10 | 1h 27min | 12min | com.google.common.collect .ImmutableSortedSetTest.of(Comparable ,Comparable,Comparable,Comparable ,Comparable)<E> |
of(Object,Object,Object,Object,Object ,Object,Object,Object,Object)<E> | 9 | 1h 18min | 9min | com.google.common.collect.ImmutableList .of(Object,Object,Object,Object,Object ,Object,Object,Object,Object)<E> |
access$000(CacheBuilderFactory,Integer ,Integer,Integer ,CacheBuilderFactory$DurationSpec ,CacheBuilderFactory$DurationSpec ,CacheBuilderFactory$DurationSpec ,LocalCache$Strength,LocalCache$Strength ) | 9 | 1h 18min | 9min | com.google.common.cache .CacheBuilderFactory.access$000 (CacheBuilderFactory,Integer,Integer ,Integer ,CacheBuilderFactory$DurationSpec ,CacheBuilderFactory$DurationSpec ,CacheBuilderFactory$DurationSpec ,LocalCache$Strength,LocalCache$Strength ) |
subSet(Object,boolean,Object,boolean) | 8 | 1h 9min | 5min | com.google.common.collect.ContiguousSet .subSet(Object,boolean,Object,boolean) |
of(Object,Object,Object,Object,Object ,Object,Object,Object)<K,V> | 8 | 1h 9min | 5min | com.google.common.collect.ImmutableBiMap .of(Object,Object,Object,Object,Object ,Object,Object,Object)<K,V> |
of(Object,Object,Object,Object,Object ,Object,Object,Object)<E> | 8 | 1h 9min | 5min | com.google.common.collect.ImmutableList .of(Object,Object,Object,Object,Object ,Object,Object,Object)<E> |
of(Object,Object,Object,Object,Object ,Object,Object,Object)<K,V> | 8 | 1h 9min | 5min | com.google.common.collect .ImmutableListMultimap.of(Object,Object ,Object,Object,Object,Object,Object ,Object)<K,V> |
replaceValues(Object,Iterable) | 8 | 1h 9min | 5min | com.google.common.collect .ImmutableListMultimap.replaceValues (Object,Iterable) |
of(Object,Object,Object,Object,Object ,Object,Object,Object)<K,V> | 8 | 1h 9min | 5min | com.google.common.collect.ImmutableMap .of(Object,Object,Object,Object,Object ,Object,Object,Object)<K,V> |
of(Object,Object,Object,Object,Object ,Object,Object,Object)<K,V> | 8 | 1h 9min | 5min | com.google.common.collect .ImmutableMultimap.of(Object,Object ,Object,Object,Object,Object,Object ,Object)<K,V> |
of(Object,Object,Object,Object,Object ,Object,Object,Object)<K,V> | 8 | 1h 9min | 5min | com.google.common.collect .ImmutableSetMultimap.of(Object,Object ,Object,Object,Object,Object,Object ,Object)<K,V> |
replaceValues(Object,Iterable) | 8 | 1h 9min | 5min | com.google.common.collect .ImmutableSetMultimap.replaceValues (Object,Iterable) |
of(Comparable,Object,Comparable,Object ,Comparable,Object,Comparable,Object)<K> | 8 | 1h 9min | 5min | com.google.common.collect .ImmutableSortedMap.of(Comparable,Object ,Comparable,Object,Comparable,Object ,Comparable,Object)<K> |
subMap(Object,boolean,Object,boolean) | 8 | 1h 9min | 5min | com.google.common.collect .ImmutableSortedMap.subMap(Object ,boolean,Object,boolean) |
of(Object,Object,Object,Object,Object ,Object,Object,Object)<K,V> | 8 | 1h 9min | 5min | com.google.common.collect .ImmutableSortedMapFauxverideShim.of (Object,Object,Object,Object,Object ,Object,Object,Object)<K,V> |
subMultiset(Object,BoundType,Object ,BoundType) | 8 | 1h 9min | 5min | com.google.common.collect .ImmutableSortedMultiset.subMultiset (Object,BoundType,Object,BoundType) |
subSet(Object,boolean,Object,boolean) | 8 | 1h 9min | 5min | com.google.common.collect .ImmutableSortedSet.subSet(Object ,boolean,Object,boolean) |
fromBytes(byte,byte,byte,byte,byte,byte ,byte,byte) | 8 | 1h 9min | 5min | com.google.common.primitives.Longs .fromBytes(byte,byte,byte,byte,byte,byte ,byte,byte) |
scheduleAtFixedRate(Runnable,long,long ,TimeUnit) | 8 | 1h 9min | 5min | com.google.common.util.concurrent .ListeningScheduledExecutorService .scheduleAtFixedRate(Runnable,long,long ,TimeUnit) |
scheduleWithFixedDelay(Runnable,long ,long,TimeUnit) | 8 | 1h 9min | 5min | com.google.common.util.concurrent .ListeningScheduledExecutorService .scheduleWithFixedDelay(Runnable,long ,long,TimeUnit) |
scheduleAtFixedRate(Runnable,long,long ,TimeUnit) | 8 | 1h 9min | 5min | com.google.common.util.concurrent .MoreExecutors$ScheduledListeningDecorat or.scheduleAtFixedRate(Runnable,long ,long,TimeUnit) |
scheduleWithFixedDelay(Runnable,long ,long,TimeUnit) | 8 | 1h 9min | 5min | com.google.common.util.concurrent .MoreExecutors$ScheduledListeningDecorat or.scheduleWithFixedDelay(Runnable,long ,long,TimeUnit) |
SortedMultisetTestSuiteBuilder$1 (SortedMultisetTestSuiteBuilder ,TestMultisetGenerator,Comparator ,SortedMultisetTestSuiteBuilder$Bound ,SortedMultisetTestSuiteBuilder$Bound ,TestMultisetGenerator,Object,Object) | 8 | 1h 9min | 5min | com.google.common.collect.testing.google .SortedMultisetTestSuiteBuilder$1 .SortedMultisetTestSuiteBuilder$1 (SortedMultisetTestSuiteBuilder ,TestMultisetGenerator,Comparator ,SortedMultisetTestSuiteBuilder$Bound ,SortedMultisetTestSuiteBuilder$Bound ,TestMultisetGenerator,Object,Object) |
scheduleAtFixedRate(Runnable,long,long ,TimeUnit) | 8 | 1h 9min | 5min | com.google.common.util.concurrent .testing .SameThreadScheduledExecutorService .scheduleAtFixedRate(Runnable,long,long ,TimeUnit) |
scheduleWithFixedDelay(Runnable,long ,long,TimeUnit) | 8 | 1h 9min | 5min | com.google.common.util.concurrent .testing .SameThreadScheduledExecutorService .scheduleWithFixedDelay(Runnable,long ,long,TimeUnit) |
scheduleAtFixedRate(Runnable,long,long ,TimeUnit) | 8 | 1h 9min | 5min | com.google.common.util.concurrent .testing .TestingExecutors$NoOpScheduledExecutorS ervice.scheduleAtFixedRate(Runnable,long ,long,TimeUnit) |
scheduleWithFixedDelay(Runnable,long ,long,TimeUnit) | 8 | 1h 9min | 5min | com.google.common.util.concurrent .testing .TestingExecutors$NoOpScheduledExecutorS ervice.scheduleWithFixedDelay(Runnable ,long,long,TimeUnit) |
createCacheBuilder(Integer,Integer ,Integer ,CacheBuilderFactory$DurationSpec ,CacheBuilderFactory$DurationSpec ,CacheBuilderFactory$DurationSpec ,LocalCache$Strength,LocalCache$Strength ) | 8 | 1h 9min | 5min | com.google.common.cache .CacheBuilderFactory.createCacheBuilder (Integer,Integer,Integer ,CacheBuilderFactory$DurationSpec ,CacheBuilderFactory$DurationSpec ,CacheBuilderFactory$DurationSpec ,LocalCache$Strength,LocalCache$Strength ) |
of(Comparable,Comparable,Comparable ,Comparable)<E> | 8 | 1h 9min | 5min | com.google.common.collect .ImmutableSortedSetTest.of(Comparable ,Comparable,Comparable,Comparable)<E> |
JdkFutureAdaptersTest$1 (JdkFutureAdaptersTest,int,int,long ,TimeUnit,BlockingQueue,ThreadFactory ,CountDownLatch) | 8 | 1h 9min | 5min | com.google.common.util.concurrent .JdkFutureAdaptersTest$1 .JdkFutureAdaptersTest$1 (JdkFutureAdaptersTest,int,int,long ,TimeUnit,BlockingQueue,ThreadFactory ,CountDownLatch) |
removeValueFromChain (LocalCache$ReferenceEntry ,LocalCache$ReferenceEntry,Object,int ,Object,LocalCache$ValueReference ,RemovalCause) | 7 | 1h 0min | 2min 0s | com.google.common.cache .LocalCache$Segment.removeValueFromChain (LocalCache$ReferenceEntry ,LocalCache$ReferenceEntry,Object,int ,Object,LocalCache$ValueReference ,RemovalCause) |
GeneralRange<T>(Comparator,boolean ,Object,BoundType,boolean,Object ,BoundType) | 7 | 1h 0min | 2min 0s | com.google.common.collect.GeneralRange .GeneralRange<T>(Comparator,boolean ,Object,BoundType,boolean,Object ,BoundType) |
of(Object,Object,Object,Object,Object ,Object,Object)<E> | 7 | 1h 0min | 2min 0s | com.google.common.collect.ImmutableList .of(Object,Object,Object,Object,Object ,Object,Object)<E> |
of(Object,Object,Object,Object,Object ,Object,Object[])<E> | 7 | 1h 0min | 2min 0s | com.google.common.collect .ImmutableMultiset.of(Object,Object ,Object,Object,Object,Object,Object[])<E > |
of(Object,Object,Object,Object,Object ,Object,Object[])<E> | 7 | 1h 0min | 2min 0s | com.google.common.collect.ImmutableSet .of(Object,Object,Object,Object,Object ,Object,Object[])<E> |
of(Comparable,Comparable,Comparable ,Comparable,Comparable,Comparable ,Comparable[])<E> | 7 | 1h 0min | 2min 0s | com.google.common.collect .ImmutableSortedMultiset.of(Comparable ,Comparable,Comparable,Comparable ,Comparable,Comparable,Comparable[])<E> |
of(Object,Object,Object,Object,Object ,Object,Object[])<E> | 7 | 1h 0min | 2min 0s | com.google.common.collect .ImmutableSortedMultisetFauxverideShim .of(Object,Object,Object,Object,Object ,Object,Object[])<E> |
of(Comparable,Comparable,Comparable ,Comparable,Comparable,Comparable ,Comparable[])<E> | 7 | 1h 0min | 2min 0s | com.google.common.collect .ImmutableSortedSet.of(Comparable ,Comparable,Comparable,Comparable ,Comparable,Comparable,Comparable[])<E> |
of(Object,Object,Object,Object,Object ,Object,Object[])<E> | 7 | 1h 0min | 2min 0s | com.google.common.collect .ImmutableSortedSetFauxverideShim.of (Object,Object,Object,Object,Object ,Object,Object[])<E> |
doDifference(Map,Map,Equivalence,Map,Map ,Map,Map)<K,V> | 7 | 1h 0min | 2min 0s | com.google.common.collect.Maps .doDifference(Map,Map,Equivalence,Map ,Map,Map,Map)<K,V> |
of(Comparable,Comparable,Comparable ,Comparable,Comparable,Comparable ,Comparable[])<E> | 7 | 1h 0min | 2min 0s | com.google.common.collect .AbstractImmutableSetTest.of(Comparable ,Comparable,Comparable,Comparable ,Comparable,Comparable,Comparable[])<E> |
of(Comparable,Comparable,Comparable ,Comparable,Comparable,Comparable ,Comparable[])<E> | 7 | 1h 0min | 2min 0s | com.google.common.collect .ImmutableSetTest.of(Comparable ,Comparable,Comparable,Comparable ,Comparable,Comparable,Comparable[])<E> |
IteratorsTest$3(IteratorsTest,int ,Iterable,Iterable ,AbstractIteratorTester$KnownOrder,List ,Predicate) | 7 | 1h 0min | 2min 0s | com.google.common.collect .IteratorsTest$3.IteratorsTest$3 (IteratorsTest,int,Iterable,Iterable ,AbstractIteratorTester$KnownOrder,List ,Predicate) |
LinkedListMultimapTest$2 (LinkedListMultimapTest,int,Iterable ,Iterable,Iterable,int,int) | 7 | 1h 0min | 2min 0s | com.google.common.collect .LinkedListMultimapTest$2 .LinkedListMultimapTest$2 (LinkedListMultimapTest,int,Iterable ,Iterable,Iterable,int,int) |
LinkedListMultimapTest$4 (LinkedListMultimapTest,int,Iterable ,Iterable,Iterable,int,int) | 7 | 1h 0min | 2min 0s | com.google.common.collect .LinkedListMultimapTest$4 .LinkedListMultimapTest$4 (LinkedListMultimapTest,int,Iterable ,Iterable,Iterable,int,int) |
FuturesGetCheckedInputs$ExceptionWithMan yConstructors(Throwable,Throwable ,Throwable,Throwable,Throwable,String ,Integer) | 7 | 1h 0min | 2min 0s | com.google.common.util.concurrent .FuturesGetCheckedInputs$ExceptionWithMa nyConstructors .FuturesGetCheckedInputs$ExceptionWithMa nyConstructors(Throwable,Throwable ,Throwable,Throwable,Throwable,String ,Integer) |
Rule Violated: Avoid methods with too many local variables |
• How to Fix Issues: To refactor such method and increase code quality and maintainability, certainly you'll have to split the method into several smaller methods or even create one or several classes to implement the logic. During this process it is important to question the scope of each variable local to the method. This can be an indication if such local variable will become an instance field of the newly created class(es). The estimated Debt, which means the effort to fix such issue, varies linearly from 10 minutes for a method with 15 variables, up to 2 hours for a methods with 80 or more variables.
22 methods matched
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
22 methods | # Variables | Debt | Annual Interest | Full Name |
---|---|---|---|---|
validateNetwork(Network)<N,E> | 25 | 1h 46min | 20min | com.google.common.graph .AbstractNetworkTest.validateNetwork (Network)<N,E> |
MathTesting() | 23 | 1h 36min | 16min | com.google.common.math.MathTesting .MathTesting() |
testSetFutureCancelBash() | 21 | 1h 27min | 12min | com.google.common.util.concurrent .AbstractFutureTest .testSetFutureCancelBash() |
fromEntryArray(int,Map$Entry[])<K,V> | 20 | 1h 23min | 11min | com.google.common.collect .RegularImmutableBiMap.fromEntryArray (int,Map$Entry[])<K,V> |
testFutureBash() | 20 | 1h 23min | 11min | com.google.common.util.concurrent .AbstractFutureTest.testFutureBash() |
testRemovalNotification_clear_basher() | 19 | 1h 18min | 9min | com.google.common.cache.CacheBuilderTest .testRemovalNotification_clear_basher() |
runExtensiveMergerTest (FuturesTest$Merger) | 19 | 1h 18min | 9min | com.google.common.util.concurrent .FuturesTest.runExtensiveMergerTest (FuturesTest$Merger) |
retryUpdate(long,int[],boolean) | 18 | 1h 13min | 7min | com.google.common.cache.Striped64 .retryUpdate(long,int[],boolean) |
SparseImmutableTable<R,C,V> (ImmutableList,ImmutableSet,ImmutableSet ) | 18 | 1h 13min | 7min | com.google.common.collect .SparseImmutableTable .SparseImmutableTable<R,C,V> (ImmutableList,ImmutableSet,ImmutableSet ) |
retryUpdate(long,int[],boolean) | 18 | 1h 13min | 7min | com.google.common.hash.Striped64 .retryUpdate(long,int[],boolean) |
testCopyEntry_computing() | 18 | 1h 13min | 7min | com.google.common.cache.LocalCacheTest .testCopyEntry_computing() |
expand() | 17 | 1h 9min | 5min | com.google.common.cache .LocalCache$Segment.expand() |
expand() | 17 | 1h 9min | 5min | com.google.common.collect .MapMakerInternalMap$Segment.expand() |
RegularImmutableMultiset<E>(Collection) | 17 | 1h 9min | 5min | com.google.common.collect .RegularImmutableMultiset .RegularImmutableMultiset<E>(Collection) |
assertInvariants(Map) | 17 | 1h 9min | 5min | com.google.common.collect.testing .MapInterfaceTest.assertInvariants(Map) |
testSubRangeSet() | 17 | 1h 9min | 5min | com.google.common.collect .ImmutableRangeSetTest.testSubRangeSet() |
doTestUnloadableInStaticFieldIfClosed() | 16 | 1h 4min | 3min 48s | com.google.common.base .FinalizableReferenceQueueClassLoaderUnl oadingTest .doTestUnloadableInStaticFieldIfClosed() |
testSegmentGetAndContains() | 16 | 1h 4min | 3min 48s | com.google.common.cache.LocalCacheTest .testSegmentGetAndContains() |
testReclaimKey() | 16 | 1h 4min | 3min 48s | com.google.common.cache.LocalCacheTest .testReclaimKey() |
testEvictEntries() | 16 | 1h 4min | 3min 48s | com.google.common.cache.LocalCacheTest .testEvictEntries() |
call() | 16 | 1h 4min | 3min 48s | com.google.common.collect .ConcurrentHashMultisetBasherTest$Mutate Task.call() |
check2BitAvalanche(HashFunction,int ,double) | 16 | 1h 4min | 3min 48s | com.google.common.hash.HashTestUtils .check2BitAvalanche(HashFunction,int ,double) |
Rule Violated: Avoid methods with too many overloads |
• How to Fix Issues: Typically the too many overloads phenomenon appears when an algorithm takes a various set of in-parameters. Each overload is presented as a facility to provide a various set of in-parameters. In such situation, the C# and VBJava language feature named Named and Optional arguments should be used. The too many overloads phenomenon can also be a consequence of the usage of the visitor design pattern http://en.wikipedia.org/wiki/Visitor_pattern since a method named Visit() must be provided for each sub type. In such situation there is no need for fix. Sometime too many overloads phenomenon is not the symptom of a problem, for example when a numeric to something conversion method applies to all numeric and nullable numeric types. The estimated Debt, which means the effort to fix such issue, is of 2 minutes per method overload.
384 methods matched
- The following list of methods is truncated and contains only the first 100 methods of the 384 methods matched.
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
384 methods | overloads | Debt | Severity | Full Name |
---|---|---|---|---|
checkArgument(boolean) | 25 methods | 2min 0s | Medium | com.google.common.base.Preconditions .checkArgument(boolean) |
checkArgument(boolean,Object) | 25 methods | 2min 0s | Medium | com.google.common.base.Preconditions .checkArgument(boolean,Object) |
checkArgument(boolean,String,Object[]) | 25 methods | 2min 0s | Medium | com.google.common.base.Preconditions .checkArgument(boolean,String,Object[]) |
checkArgument(boolean,String,char) | 25 methods | 2min 0s | Medium | com.google.common.base.Preconditions .checkArgument(boolean,String,char) |
checkArgument(boolean,String,int) | 25 methods | 2min 0s | Medium | com.google.common.base.Preconditions .checkArgument(boolean,String,int) |
checkArgument(boolean,String,long) | 25 methods | 2min 0s | Medium | com.google.common.base.Preconditions .checkArgument(boolean,String,long) |
checkArgument(boolean,String,Object) | 25 methods | 2min 0s | Medium | com.google.common.base.Preconditions .checkArgument(boolean,String,Object) |
checkArgument(boolean,String,char,char) | 25 methods | 2min 0s | Medium | com.google.common.base.Preconditions .checkArgument(boolean,String,char,char) |
checkArgument(boolean,String,char,int) | 25 methods | 2min 0s | Medium | com.google.common.base.Preconditions .checkArgument(boolean,String,char,int) |
checkArgument(boolean,String,char,long) | 25 methods | 2min 0s | Medium | com.google.common.base.Preconditions .checkArgument(boolean,String,char,long) |
checkArgument(boolean,String,char,Object ) | 25 methods | 2min 0s | Medium | com.google.common.base.Preconditions .checkArgument(boolean,String,char ,Object) |
checkArgument(boolean,String,int,char) | 25 methods | 2min 0s | Medium | com.google.common.base.Preconditions .checkArgument(boolean,String,int,char) |
checkArgument(boolean,String,int,int) | 25 methods | 2min 0s | Medium | com.google.common.base.Preconditions .checkArgument(boolean,String,int,int) |
checkArgument(boolean,String,int,long) | 25 methods | 2min 0s | Medium | com.google.common.base.Preconditions .checkArgument(boolean,String,int,long) |
checkArgument(boolean,String,int,Object) | 25 methods | 2min 0s | Medium | com.google.common.base.Preconditions .checkArgument(boolean,String,int,Object ) |
checkArgument(boolean,String,long,char) | 25 methods | 2min 0s | Medium | com.google.common.base.Preconditions .checkArgument(boolean,String,long,char) |
checkArgument(boolean,String,long,int) | 25 methods | 2min 0s | Medium | com.google.common.base.Preconditions .checkArgument(boolean,String,long,int) |
checkArgument(boolean,String,long,long) | 25 methods | 2min 0s | Medium | com.google.common.base.Preconditions .checkArgument(boolean,String,long,long) |
checkArgument(boolean,String,long,Object ) | 25 methods | 2min 0s | Medium | com.google.common.base.Preconditions .checkArgument(boolean,String,long ,Object) |
checkArgument(boolean,String,Object,char ) | 25 methods | 2min 0s | Medium | com.google.common.base.Preconditions .checkArgument(boolean,String,Object ,char) |
checkArgument(boolean,String,Object,int) | 25 methods | 2min 0s | Medium | com.google.common.base.Preconditions .checkArgument(boolean,String,Object,int ) |
checkArgument(boolean,String,Object,long ) | 25 methods | 2min 0s | Medium | com.google.common.base.Preconditions .checkArgument(boolean,String,Object ,long) |
checkArgument(boolean,String,Object ,Object) | 25 methods | 2min 0s | Medium | com.google.common.base.Preconditions .checkArgument(boolean,String,Object ,Object) |
checkArgument(boolean,String,Object ,Object,Object) | 25 methods | 2min 0s | Medium | com.google.common.base.Preconditions .checkArgument(boolean,String,Object ,Object,Object) |
checkArgument(boolean,String,Object ,Object,Object,Object) | 25 methods | 2min 0s | Medium | com.google.common.base.Preconditions .checkArgument(boolean,String,Object ,Object,Object,Object) |
checkState(boolean) | 25 methods | 2min 0s | Medium | com.google.common.base.Preconditions .checkState(boolean) |
checkState(boolean,Object) | 25 methods | 2min 0s | Medium | com.google.common.base.Preconditions .checkState(boolean,Object) |
checkState(boolean,String,Object[]) | 25 methods | 2min 0s | Medium | com.google.common.base.Preconditions .checkState(boolean,String,Object[]) |
checkState(boolean,String,char) | 25 methods | 2min 0s | Medium | com.google.common.base.Preconditions .checkState(boolean,String,char) |
checkState(boolean,String,int) | 25 methods | 2min 0s | Medium | com.google.common.base.Preconditions .checkState(boolean,String,int) |
checkState(boolean,String,long) | 25 methods | 2min 0s | Medium | com.google.common.base.Preconditions .checkState(boolean,String,long) |
checkState(boolean,String,Object) | 25 methods | 2min 0s | Medium | com.google.common.base.Preconditions .checkState(boolean,String,Object) |
checkState(boolean,String,char,char) | 25 methods | 2min 0s | Medium | com.google.common.base.Preconditions .checkState(boolean,String,char,char) |
checkState(boolean,String,char,int) | 25 methods | 2min 0s | Medium | com.google.common.base.Preconditions .checkState(boolean,String,char,int) |
checkState(boolean,String,char,long) | 25 methods | 2min 0s | Medium | com.google.common.base.Preconditions .checkState(boolean,String,char,long) |
checkState(boolean,String,char,Object) | 25 methods | 2min 0s | Medium | com.google.common.base.Preconditions .checkState(boolean,String,char,Object) |
checkState(boolean,String,int,char) | 25 methods | 2min 0s | Medium | com.google.common.base.Preconditions .checkState(boolean,String,int,char) |
checkState(boolean,String,int,int) | 25 methods | 2min 0s | Medium | com.google.common.base.Preconditions .checkState(boolean,String,int,int) |
checkState(boolean,String,int,long) | 25 methods | 2min 0s | Medium | com.google.common.base.Preconditions .checkState(boolean,String,int,long) |
checkState(boolean,String,int,Object) | 25 methods | 2min 0s | Medium | com.google.common.base.Preconditions .checkState(boolean,String,int,Object) |
checkState(boolean,String,long,char) | 25 methods | 2min 0s | Medium | com.google.common.base.Preconditions .checkState(boolean,String,long,char) |
checkState(boolean,String,long,int) | 25 methods | 2min 0s | Medium | com.google.common.base.Preconditions .checkState(boolean,String,long,int) |
checkState(boolean,String,long,long) | 25 methods | 2min 0s | Medium | com.google.common.base.Preconditions .checkState(boolean,String,long,long) |
checkState(boolean,String,long,Object) | 25 methods | 2min 0s | Medium | com.google.common.base.Preconditions .checkState(boolean,String,long,Object) |
checkState(boolean,String,Object,char) | 25 methods | 2min 0s | Medium | com.google.common.base.Preconditions .checkState(boolean,String,Object,char) |
checkState(boolean,String,Object,int) | 25 methods | 2min 0s | Medium | com.google.common.base.Preconditions .checkState(boolean,String,Object,int) |
checkState(boolean,String,Object,long) | 25 methods | 2min 0s | Medium | com.google.common.base.Preconditions .checkState(boolean,String,Object,long) |
checkState(boolean,String,Object,Object) | 25 methods | 2min 0s | Medium | com.google.common.base.Preconditions .checkState(boolean,String,Object,Object ) |
checkState(boolean,String,Object,Object ,Object) | 25 methods | 2min 0s | Medium | com.google.common.base.Preconditions .checkState(boolean,String,Object,Object ,Object) |
checkState(boolean,String,Object,Object ,Object,Object) | 25 methods | 2min 0s | Medium | com.google.common.base.Preconditions .checkState(boolean,String,Object,Object ,Object,Object) |
checkNotNull(Object)<T> | 25 methods | 2min 0s | Medium | com.google.common.base.Preconditions .checkNotNull(Object)<T> |
checkNotNull(Object,Object)<T> | 25 methods | 2min 0s | Medium | com.google.common.base.Preconditions .checkNotNull(Object,Object)<T> |
checkNotNull(Object,String,Object[])<T> | 25 methods | 2min 0s | Medium | com.google.common.base.Preconditions .checkNotNull(Object,String,Object[])<T> |
checkNotNull(Object,String,char)<T> | 25 methods | 2min 0s | Medium | com.google.common.base.Preconditions .checkNotNull(Object,String,char)<T> |
checkNotNull(Object,String,int)<T> | 25 methods | 2min 0s | Medium | com.google.common.base.Preconditions .checkNotNull(Object,String,int)<T> |
checkNotNull(Object,String,long)<T> | 25 methods | 2min 0s | Medium | com.google.common.base.Preconditions .checkNotNull(Object,String,long)<T> |
checkNotNull(Object,String,Object)<T> | 25 methods | 2min 0s | Medium | com.google.common.base.Preconditions .checkNotNull(Object,String,Object)<T> |
checkNotNull(Object,String,char,char)<T> | 25 methods | 2min 0s | Medium | com.google.common.base.Preconditions .checkNotNull(Object,String,char,char)<T > |
checkNotNull(Object,String,char,int)<T> | 25 methods | 2min 0s | Medium | com.google.common.base.Preconditions .checkNotNull(Object,String,char,int)<T> |
checkNotNull(Object,String,char,long)<T> | 25 methods | 2min 0s | Medium | com.google.common.base.Preconditions .checkNotNull(Object,String,char,long)<T > |
checkNotNull(Object,String,char,Object) <T> | 25 methods | 2min 0s | Medium | com.google.common.base.Preconditions .checkNotNull(Object,String,char,Object) <T> |
checkNotNull(Object,String,int,char)<T> | 25 methods | 2min 0s | Medium | com.google.common.base.Preconditions .checkNotNull(Object,String,int,char)<T> |
checkNotNull(Object,String,int,int)<T> | 25 methods | 2min 0s | Medium | com.google.common.base.Preconditions .checkNotNull(Object,String,int,int)<T> |
checkNotNull(Object,String,int,long)<T> | 25 methods | 2min 0s | Medium | com.google.common.base.Preconditions .checkNotNull(Object,String,int,long)<T> |
checkNotNull(Object,String,int,Object)<T > | 25 methods | 2min 0s | Medium | com.google.common.base.Preconditions .checkNotNull(Object,String,int,Object) <T> |
checkNotNull(Object,String,long,char)<T> | 25 methods | 2min 0s | Medium | com.google.common.base.Preconditions .checkNotNull(Object,String,long,char)<T > |
checkNotNull(Object,String,long,int)<T> | 25 methods | 2min 0s | Medium | com.google.common.base.Preconditions .checkNotNull(Object,String,long,int)<T> |
checkNotNull(Object,String,long,long)<T> | 25 methods | 2min 0s | Medium | com.google.common.base.Preconditions .checkNotNull(Object,String,long,long)<T > |
checkNotNull(Object,String,long,Object) <T> | 25 methods | 2min 0s | Medium | com.google.common.base.Preconditions .checkNotNull(Object,String,long,Object) <T> |
checkNotNull(Object,String,Object,char) <T> | 25 methods | 2min 0s | Medium | com.google.common.base.Preconditions .checkNotNull(Object,String,Object,char) <T> |
checkNotNull(Object,String,Object,int)<T > | 25 methods | 2min 0s | Medium | com.google.common.base.Preconditions .checkNotNull(Object,String,Object,int) <T> |
checkNotNull(Object,String,Object,long) <T> | 25 methods | 2min 0s | Medium | com.google.common.base.Preconditions .checkNotNull(Object,String,Object,long) <T> |
checkNotNull(Object,String,Object,Object )<T> | 25 methods | 2min 0s | Medium | com.google.common.base.Preconditions .checkNotNull(Object,String,Object ,Object)<T> |
checkNotNull(Object,String,Object,Object ,Object)<T> | 25 methods | 2min 0s | Medium | com.google.common.base.Preconditions .checkNotNull(Object,String,Object ,Object,Object)<T> |
checkNotNull(Object,String,Object,Object ,Object,Object)<T> | 25 methods | 2min 0s | Medium | com.google.common.base.Preconditions .checkNotNull(Object,String,Object ,Object,Object,Object)<T> |
of()<E> | 13 methods | 2min 0s | Medium | com.google.common.collect.ImmutableList .of()<E> |
of(Object)<E> | 13 methods | 2min 0s | Medium | com.google.common.collect.ImmutableList .of(Object)<E> |
of(Object,Object)<E> | 13 methods | 2min 0s | Medium | com.google.common.collect.ImmutableList .of(Object,Object)<E> |
of(Object,Object,Object)<E> | 13 methods | 2min 0s | Medium | com.google.common.collect.ImmutableList .of(Object,Object,Object)<E> |
of(Object,Object,Object,Object)<E> | 13 methods | 2min 0s | Medium | com.google.common.collect.ImmutableList .of(Object,Object,Object,Object)<E> |
of(Object,Object,Object,Object,Object)<E > | 13 methods | 2min 0s | Medium | com.google.common.collect.ImmutableList .of(Object,Object,Object,Object,Object) <E> |
of(Object,Object,Object,Object,Object ,Object)<E> | 13 methods | 2min 0s | Medium | com.google.common.collect.ImmutableList .of(Object,Object,Object,Object,Object ,Object)<E> |
of(Object,Object,Object,Object,Object ,Object,Object)<E> | 13 methods | 2min 0s | Medium | com.google.common.collect.ImmutableList .of(Object,Object,Object,Object,Object ,Object,Object)<E> |
of(Object,Object,Object,Object,Object ,Object,Object,Object)<E> | 13 methods | 2min 0s | Medium | com.google.common.collect.ImmutableList .of(Object,Object,Object,Object,Object ,Object,Object,Object)<E> |
of(Object,Object,Object,Object,Object ,Object,Object,Object,Object)<E> | 13 methods | 2min 0s | Medium | com.google.common.collect.ImmutableList .of(Object,Object,Object,Object,Object ,Object,Object,Object,Object)<E> |
of(Object,Object,Object,Object,Object ,Object,Object,Object,Object,Object)<E> | 13 methods | 2min 0s | Medium | com.google.common.collect.ImmutableList .of(Object,Object,Object,Object,Object ,Object,Object,Object,Object,Object)<E> |
of(Object,Object,Object,Object,Object ,Object,Object,Object,Object,Object ,Object)<E> | 13 methods | 2min 0s | Medium | com.google.common.collect.ImmutableList .of(Object,Object,Object,Object,Object ,Object,Object,Object,Object,Object ,Object)<E> |
of(Object,Object,Object,Object,Object ,Object,Object,Object,Object,Object ,Object,Object,Object[])<E> | 13 methods | 2min 0s | Medium | com.google.common.collect.ImmutableList .of(Object,Object,Object,Object,Object ,Object,Object,Object,Object,Object ,Object,Object,Object[])<E> |
FuturesGetCheckedInputs$ExceptionWithMan yConstructors() | 9 methods | 2min 0s | Medium | com.google.common.util.concurrent .FuturesGetCheckedInputs$ExceptionWithMa nyConstructors .FuturesGetCheckedInputs$ExceptionWithMa nyConstructors() |
FuturesGetCheckedInputs$ExceptionWithMan yConstructors(Integer) | 9 methods | 2min 0s | Medium | com.google.common.util.concurrent .FuturesGetCheckedInputs$ExceptionWithMa nyConstructors .FuturesGetCheckedInputs$ExceptionWithMa nyConstructors(Integer) |
FuturesGetCheckedInputs$ExceptionWithMan yConstructors(Throwable) | 9 methods | 2min 0s | Medium | com.google.common.util.concurrent .FuturesGetCheckedInputs$ExceptionWithMa nyConstructors .FuturesGetCheckedInputs$ExceptionWithMa nyConstructors(Throwable) |
FuturesGetCheckedInputs$ExceptionWithMan yConstructors(Throwable,Throwable) | 9 methods | 2min 0s | Medium | com.google.common.util.concurrent .FuturesGetCheckedInputs$ExceptionWithMa nyConstructors .FuturesGetCheckedInputs$ExceptionWithMa nyConstructors(Throwable,Throwable) |
FuturesGetCheckedInputs$ExceptionWithMan yConstructors(String,Throwable) | 9 methods | 2min 0s | Medium | com.google.common.util.concurrent .FuturesGetCheckedInputs$ExceptionWithMa nyConstructors .FuturesGetCheckedInputs$ExceptionWithMa nyConstructors(String,Throwable) |
FuturesGetCheckedInputs$ExceptionWithMan yConstructors(Throwable,Throwable ,Throwable) | 9 methods | 2min 0s | Medium | com.google.common.util.concurrent .FuturesGetCheckedInputs$ExceptionWithMa nyConstructors .FuturesGetCheckedInputs$ExceptionWithMa nyConstructors(Throwable,Throwable ,Throwable) |
FuturesGetCheckedInputs$ExceptionWithMan yConstructors(Throwable,Throwable ,Throwable,Throwable) | 9 methods | 2min 0s | Medium | com.google.common.util.concurrent .FuturesGetCheckedInputs$ExceptionWithMa nyConstructors .FuturesGetCheckedInputs$ExceptionWithMa nyConstructors(Throwable,Throwable ,Throwable,Throwable) |
FuturesGetCheckedInputs$ExceptionWithMan yConstructors(Throwable,Throwable ,Throwable,Throwable,Throwable) | 9 methods | 2min 0s | Medium | com.google.common.util.concurrent .FuturesGetCheckedInputs$ExceptionWithMa nyConstructors .FuturesGetCheckedInputs$ExceptionWithMa nyConstructors(Throwable,Throwable ,Throwable,Throwable,Throwable) |
FuturesGetCheckedInputs$ExceptionWithMan yConstructors(Throwable,Throwable ,Throwable,Throwable,Throwable,String ,Integer) | 9 methods | 2min 0s | Medium | com.google.common.util.concurrent .FuturesGetCheckedInputs$ExceptionWithMa nyConstructors .FuturesGetCheckedInputs$ExceptionWithMa nyConstructors(Throwable,Throwable ,Throwable,Throwable,Throwable,String ,Integer) |
stream(Iterable)<T> | 8 methods | 2min 0s | Medium | com.google.common.collect.Streams.stream (Iterable)<T> |
stream(Collection)<T> | 8 methods | 2min 0s | Medium | com.google.common.collect.Streams.stream (Collection)<T> |
stream(Iterator)<T> | 8 methods | 2min 0s | Medium | com.google.common.collect.Streams.stream (Iterator)<T> |
Rule Violated: Avoid methods potentially poorly commented |
• How to Fix Issues: Typically add more comment. But code commenting is subject to controversy. While poorly written and designed code would needs a lot of comment to be understood, clean code doesn't need that much comment, especially if variables and methods are properly named and convey enough information. Unit-Test code can also play the role of code commenting. However, even when writing clean and well-tested code, one will have to write hacks at a point, usually to circumvent some API limitations or bugs. A hack is a non-trivial piece of code, that doesn't make sense at first glance, and that took time and web research to be found. In such situation comments must absolutely be used to express the intention, the need for the hacks and the source where the solution has been found. The estimated Debt, which means the effort to comment such method, varies linearly from 2 minutes for 10 lines of code not commented, up to 20 minutes for 200 or more, lines of code not commented.
59 methods matched
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
59 methods | Percentage Comment | # lines of code (LOC) | # lines of comment | nbLinesOfCodeNotCommented | Debt | Annual Interest | Full Name |
---|---|---|---|---|---|---|---|
retryUpdate(long,int[],boolean) | 0 | 72 | 0 | 72 | 7min | 16min | com.google.common.cache.Striped64 .retryUpdate(long,int[],boolean) |
retryUpdate(long,int[],boolean) | 0 | 72 | 0 | 72 | 7min | 16min | com.google.common.hash.Striped64 .retryUpdate(long,int[],boolean) |
assertMultimapIsUnmodifiable(Multimap ,Object,Object)<K,V> | 0 | 69 | 0 | 69 | 6min | 16min | com.google.common.collect.testing.google .UnmodifiableCollectionTests .assertMultimapIsUnmodifiable(Multimap ,Object,Object)<K,V> |
escape(int) | 0 | 66 | 0 | 66 | 6min | 16min | com.google.common.net.PercentEscaper .escape(int) |
newHasher() | 0 | 58 | 0 | 58 | 5min | 16min | com.google.common.hash .AbstractCompositeHashFunction.newHasher () |
invokeAnyImpl(ListeningExecutorService ,Collection,boolean,long,TimeUnit)<T> | 0 | 46 | 0 | 46 | 4min 36s | 16min | com.google.common.util.concurrent .MoreExecutors.invokeAnyImpl (ListeningExecutorService,Collection ,boolean,long,TimeUnit)<T> |
processRemaining(ByteBuffer) | 0 | 40 | 0 | 40 | 4min 0s | 16min | com.google.common.hash .Murmur3_128HashFunction$Murmur3_128Hash er.processRemaining(ByteBuffer) |
read(byte[],int,int) | 0 | 40 | 0 | 40 | 4min 0s | 16min | com.google.common.io.ReaderInputStream .read(byte[],int,int) |
log10(BigInteger,RoundingMode) | 0 | 40 | 0 | 40 | 4min 0s | 16min | com.google.common.math.BigIntegerMath .log10(BigInteger,RoundingMode) |
binomial(int,int) | 0 | 40 | 0 | 40 | 4min 0s | 16min | com.google.common.math.LongMath.binomial (int,int) |
populateTypeMappings(Map,Type,Type) | 0 | 40 | 0 | 40 | 4min 0s | 16min | com.google.common.reflect.TypeResolver .populateTypeMappings(Map,Type,Type) |
enterWhenUninterruptibly(Monitor$Guard ,long,TimeUnit) | 0 | 39 | 0 | 39 | 3min 54s | 16min | com.google.common.util.concurrent .Monitor.enterWhenUninterruptibly (Monitor$Guard,long,TimeUnit) |
divide(int,int,RoundingMode) | 0 | 37 | 0 | 37 | 3min 42s | 16min | com.google.common.math.IntMath.divide (int,int,RoundingMode) |
toCacheBuilder() | 0 | 35 | 0 | 35 | 3min 30s | 16min | com.google.common.cache.CacheBuilderSpec .toCacheBuilder() |
divide(long,long,RoundingMode) | 0 | 35 | 0 | 35 | 3min 30s | 16min | com.google.common.math.LongMath.divide (long,long,RoundingMode) |
saturatedPow(long,int) | 0 | 35 | 0 | 35 | 3min 30s | 16min | com.google.common.math.LongMath .saturatedPow(long,int) |
generate(TypeToken) | 0 | 35 | 0 | 35 | 3min 30s | 16min | com.google.common.testing .FreshValueGenerator.generate(TypeToken) |
textToNumericFormatV6(String) | 0 | 34 | 0 | 34 | 3min 24s | 16min | com.google.common.net.InetAddresses .textToNumericFormatV6(String) |
hashLength65Plus(byte[],int,int) | 0 | 33 | 0 | 33 | 3min 18s | 16min | com.google.common.hash .FarmHashFingerprint64.hashLength65Plus (byte[],int,int) |
saturatedPow(int,int) | 0 | 33 | 0 | 33 | 3min 18s | 16min | com.google.common.math.IntMath .saturatedPow(int,int) |
escapeSlow(String,int) | 0 | 32 | 0 | 32 | 3min 12s | 16min | com.google.common.escape.UnicodeEscaper .escapeSlow(String,int) |
computeInPlace(double[]) | 0 | 32 | 0 | 32 | 3min 12s | 16min | com.google.common.math .Quantiles$ScaleAndIndexes .computeInPlace(double[]) |
computeNext() | 0 | 32 | 0 | 32 | 3min 12s | 16min | com.google.common.base .Splitter$SplittingIterator.computeNext( ) |
checkedPow(long,int) | 0 | 31 | 0 | 31 | 3min 6s | 16min | com.google.common.math.LongMath .checkedPow(long,int) |
get(Class)<T> | 0 | 31 | 0 | 31 | 3min 6s | 16min | com.google.common.testing .ArbitraryInstances.get(Class)<T> |
escapeSlow(String,int) | 0 | 30 | 0 | 30 | 3min 0s | 16min | com.google.common.escape.CharEscaper .escapeSlow(String,int) |
parse(String) | 0 | 30 | 0 | 30 | 3min 0s | 16min | com.google.common.net.MediaType.parse (String) |
assertCollectionIsUnmodifiable (Collection,Object)<E> | 0 | 30 | 0 | 30 | 3min 0s | 16min | com.google.common.collect.testing.google .UnmodifiableCollectionTests .assertCollectionIsUnmodifiable (Collection,Object)<E> |
factorial(int) | 0 | 29 | 0 | 29 | 2min 54s | 16min | com.google.common.math.BigIntegerMath .factorial(int) |
checkedPow(int,int) | 0 | 29 | 0 | 29 | 2min 54s | 16min | com.google.common.math.IntMath .checkedPow(int,int) |
tryParse(String,int) | 0 | 28 | 0 | 28 | 2min 48s | 16min | com.google.common.primitives.Longs .tryParse(String,int) |
toString(long,int) | 0 | 28 | 0 | 28 | 2min 48s | 16min | com.google.common.primitives .UnsignedLongs.toString(long,int) |
stopAsync() | 0 | 28 | 0 | 28 | 2min 48s | 16min | com.google.common.util.concurrent .AbstractService.stopAsync() |
simplifyPath(String) | 0 | 27 | 0 | 27 | 2min 42s | 16min | com.google.common.io.Files.simplifyPath (String) |
pow(long,int) | 0 | 27 | 0 | 27 | 2min 42s | 16min | com.google.common.math.LongMath.pow(long ,int) |
sqrt(long,RoundingMode) | 0 | 27 | 0 | 27 | 2min 42s | 16min | com.google.common.math.LongMath.sqrt (long,RoundingMode) |
testEqualsUsing(Invokable) | 0 | 27 | 0 | 27 | 2min 42s | 16min | com.google.common.testing .ClassSanityTester.testEqualsUsing (Invokable) |
enterWhen(Monitor$Guard,long,TimeUnit) | 0 | 26 | 0 | 26 | 2min 36s | 16min | com.google.common.util.concurrent .Monitor.enterWhen(Monitor$Guard,long ,TimeUnit) |
transitionService(Service,Service$State ,Service$State) | 0 | 26 | 0 | 26 | 2min 36s | 16min | com.google.common.util.concurrent .ServiceManager$ServiceManagerState .transitionService(Service,Service$State ,Service$State) |
doTestEquals(Class) | 0 | 26 | 0 | 26 | 2min 36s | 16min | com.google.common.testing .ClassSanityTester.doTestEquals(Class) |
log2(BigInteger,RoundingMode) | 0 | 25 | 0 | 25 | 2min 30s | 16min | com.google.common.math.BigIntegerMath .log2(BigInteger,RoundingMode) |
binomial(int,int) | 0 | 25 | 0 | 25 | 2min 30s | 16min | com.google.common.math.BigIntegerMath .binomial(int,int) |
pow(int,int) | 0 | 25 | 0 | 25 | 2min 30s | 16min | com.google.common.math.IntMath.pow(int ,int) |
wrap(CharEscaper) | 0 | 24 | 0 | 24 | 2min 24s | 16min | com.google.common.escape.Escapers.wrap (CharEscaper) |
fromString(String) | 0 | 24 | 0 | 24 | 2min 24s | 16min | com.google.common.net.HostAndPort .fromString(String) |
ipStringToBytes(String) | 0 | 24 | 0 | 24 | 2min 24s | 16min | com.google.common.net.InetAddresses .ipStringToBytes(String) |
getCoercedIPv4Address(InetAddress) | 0 | 24 | 0 | 24 | 2min 24s | 16min | com.google.common.net.InetAddresses .getCoercedIPv4Address(InetAddress) |
capture(Type) | 0 | 24 | 0 | 24 | 2min 24s | 16min | com.google.common.reflect .TypeResolver$WildcardCapturer.capture (Type) |
visit(Type[]) | 0 | 24 | 0 | 24 | 2min 24s | 16min | com.google.common.reflect.TypeVisitor .visit(Type[]) |
isWellFormedSlowPath(byte[],int,int) | 0 | 24 | 0 | 24 | 2min 24s | 16min | com.google.common.base.Utf8 .isWellFormedSlowPath(byte[],int,int) |
parse(CacheBuilderSpec,String,String) | 0 | 22 | 0 | 22 | 2min 12s | 16min | com.google.common.cache .CacheBuilderSpec$DurationParser.parse (CacheBuilderSpec,String,String) |
add(char[],int,int) | 0 | 22 | 0 | 22 | 2min 12s | 16min | com.google.common.io.LineBuffer.add (char[],int,int) |
sqrt(BigInteger,RoundingMode) | 0 | 22 | 0 | 22 | 2min 12s | 16min | com.google.common.math.BigIntegerMath .sqrt(BigInteger,RoundingMode) |
allTests() | 0 | 22 | 0 | 22 | 2min 12s | 16min | com.google.common.collect.testing .TestsForMapsInJavaUtil.allTests() |
allTests() | 0 | 22 | 0 | 22 | 2min 12s | 16min | com.google.common.collect.testing .TestsForSetsInJavaUtil.allTests() |
drainUninterruptibly(BlockingQueue ,Collection,int,long,TimeUnit)<E> | 0 | 21 | 0 | 21 | 2min 6s | 16min | com.google.common.collect.Queues .drainUninterruptibly(BlockingQueue ,Collection,int,long,TimeUnit)<E> |
doParseTrieToBuilder(List,CharSequence ,ImmutableMap$Builder) | 0 | 21 | 0 | 21 | 2min 6s | 16min | com.google.thirdparty.publicsuffix .TrieParser.doParseTrieToBuilder(List ,CharSequence,ImmutableMap$Builder) |
assertMultisetIsUnmodifiable(Multiset ,Object)<E> | 0 | 21 | 0 | 21 | 2min 6s | 16min | com.google.common.collect.testing.google .UnmodifiableCollectionTests .assertMultisetIsUnmodifiable(Multiset ,Object)<E> |
findClassesToTest(Iterable,Iterable) | 0 | 21 | 0 | 21 | 2min 6s | 16min | com.google.common.testing .AbstractPackageSanityTests .findClassesToTest(Iterable,Iterable) |
Rule Violated: Avoid types with poor cohesion |
• How to Fix Issues: To refactor a poorly cohesive type and increase code quality and maintainability, certainly you'll have to split the type into several smaller and more cohesive types that together, implement the same logic. The estimated Debt, which means the effort to fix such issue, varies linearly from 5 minutes for a type with a low poorCohesionScore, up to 4 hours for a type with high poorCohesionScore.
11 types matched
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
11 types | Lack of Cohesion Of Methods (LCOM) | # Methods | # Fields | poorCohesionScore | Debt | Annual Interest | Full Name |
---|---|---|---|---|---|---|---|
LocalCache<K,V> | 0.97 | 76 | 30 | 23.35 | 1h 40min | 33min | com.google.common.cache.LocalCache |
JSR166TestCase | 0.95 | 60 | 28 | 16.67 | 1h 5min | 22min | com.google.common.util.concurrent .JSR166TestCase |
MapMakerInternalMap<K,V,E> | 0.93 | 38 | 17 | 12.18 | 42min | 14min | com.google.common.collect .MapMakerInternalMap |
CacheBuilder<K,V> | 0.91 | 44 | 26 | 9.91 | 30min | 10min | com.google.common.cache.CacheBuilder |
GeneratedMonitorTest | 0.91 | 46 | 12 | 9.84 | 30min | 10min | com.google.common.util.concurrent .GeneratedMonitorTest |
CycleDetectingLockFactoryTest | 0.87 | 33 | 15 | 7.08 | 15min | 5min | com.google.common.util.concurrent .CycleDetectingLockFactoryTest |
AbstractIteratorTester<E,I> | 0.84 | 23 | 18 | 6.04 | 10min | 3min 48s | com.google.common.collect.testing .AbstractIteratorTester |
LocalCache$Segment<K,V> | 0.84 | 60 | 14 | 5.94 | 9min | 3min 37s | com.google.common.cache .LocalCache$Segment |
FuturesTest$TestFutureBatch | 0.81 | 11 | 16 | 5.06 | 5min | 2min 6s | com.google.common.util.concurrent .FuturesTest$TestFutureBatch |
MediaType | 0.81 | 33 | 115 | 4.91 | 5min | 2min 0s | com.google.common.net.MediaType |
AbstractService | 0.8 | 28 | 14 | 4.86 | 5min | 2min 0s | com.google.common.util.concurrent .AbstractService |
Design | 6060 |
Rule Violated: Base class should not use derivatives |
warnif count > 0
from baseClass in JustMyCode.Types
where baseClass.IsClass && baseClass.NbChildren > 0 // <-- for optimization!
let derivedClassesUsed = baseClass.DerivedTypes.UsedBy(baseClass)
where derivedClassesUsed.Count() > 0
select new { baseClass, derivedClassesUsed }
67 types matched
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
67 types | derivedClassesUsed | Full Name |
---|---|---|
CacheLoader<K,V> | 3 types | com.google.common.cache.CacheLoader |
AbstractBiMap<K,V> | 1 type | com.google.common.collect.AbstractBiMap |
ComparisonChain | 2 types | com.google.common.collect .ComparisonChain |
ContiguousSet<C> | 2 types | com.google.common.collect.ContiguousSet |
Cut<C> | 4 types | com.google.common.collect.Cut |
DiscreteDomain<C> | 3 types | com.google.common.collect.DiscreteDomain |
FluentIterable<E> | 3 types | com.google.common.collect.FluentIterable |
ImmutableBiMap<K,V> | 2 types | com.google.common.collect.ImmutableBiMap |
ImmutableCollection<E> | 2 types | com.google.common.collect .ImmutableCollection |
ImmutableList<E> | 3 types | com.google.common.collect.ImmutableList |
ImmutableListMultimap<K,V> | 1 type | com.google.common.collect .ImmutableListMultimap |
ImmutableMap<K,V> | 3 types | com.google.common.collect.ImmutableMap |
ImmutableMultimap$Itr<T> | 1 type | com.google.common.collect .ImmutableMultimap$Itr |
ImmutableMultimap<K,V> | 1 type | com.google.common.collect .ImmutableMultimap |
ImmutableMultiset<E> | 1 type | com.google.common.collect .ImmutableMultiset |
ImmutableRangeMap<K> | 1 type | com.google.common.collect .ImmutableRangeMap |
ImmutableSet<E> | 3 types | com.google.common.collect.ImmutableSet |
ImmutableSetMultimap<K,V> | 1 type | com.google.common.collect .ImmutableSetMultimap |
ImmutableSortedMapFauxverideShim<K,V> | 1 type | com.google.common.collect .ImmutableSortedMapFauxverideShim |
ImmutableSortedMultiset<E> | 2 types | com.google.common.collect .ImmutableSortedMultiset |
ImmutableSortedMultisetFauxverideShim<E> | 1 type | com.google.common.collect .ImmutableSortedMultisetFauxverideShim |
ImmutableSortedSet<E> | 1 type | com.google.common.collect .ImmutableSortedSet |
ImmutableSortedSetFauxverideShim<E> | 1 type | com.google.common.collect .ImmutableSortedSetFauxverideShim |
ImmutableTable<R,C,V> | 2 types | com.google.common.collect.ImmutableTable |
Ordering<T> | 11 types | com.google.common.collect.Ordering |
RegularImmutableTable<R,C,V> | 2 types | com.google.common.collect .RegularImmutableTable |
Sets$SetView<E> | 1 type | com.google.common.collect.Sets$SetView |
TreeRangeSet<C> | 2 types | com.google.common.collect.TreeRangeSet |
TreeTraverser<T> | 1 type | com.google.common.collect.TreeTraverser |
Dispatcher | 3 types | com.google.common.eventbus.Dispatcher |
Subscriber | 1 type | com.google.common.eventbus.Subscriber |
EndpointPair<N> | 2 types | com.google.common.graph.EndpointPair |
EndpointPairIterator<N> | 2 types | com.google.common.graph .EndpointPairIterator |
HashCode | 3 types | com.google.common.hash.HashCode |
BaseEncoding | 3 types | com.google.common.io.BaseEncoding |
ByteSource | 4 types | com.google.common.io.ByteSource |
CharSource | 3 types | com.google.common.io.CharSource |
LinearTransformation | 3 types | com.google.common.math .LinearTransformation |
ClassPath$ResourceInfo | 1 type | com.google.common.reflect .ClassPath$ResourceInfo |
Invokable<T,R> | 2 types | com.google.common.reflect.Invokable |
TypeResolver$TypeTable | 1 type | com.google.common.reflect .TypeResolver$TypeTable |
TypeResolver$WildcardCapturer | 1 type | com.google.common.reflect .TypeResolver$WildcardCapturer |
TypeToken$TypeCollector<K> | 3 types | com.google.common.reflect .TypeToken$TypeCollector |
TypeToken$TypeSet | 2 types | com.google.common.reflect .TypeToken$TypeSet |
TypeToken<T> | 1 type | com.google.common.reflect.TypeToken |
CharMatcher | 26 types | com.google.common.base.CharMatcher |
Converter<A,B> | 4 types | com.google.common.base.Converter |
Equivalence<T> | 4 types | com.google.common.base.Equivalence |
Joiner | 2 types | com.google.common.base.Joiner |
Optional<T> | 2 types | com.google.common.base.Optional |
Ticker | 1 type | com.google.common.base.Ticker |
AbstractCatchingFuture<V,X,F,T> | 2 types | com.google.common.util.concurrent .AbstractCatchingFuture |
AbstractScheduledService$Scheduler | 2 types | com.google.common.util.concurrent .AbstractScheduledService$Scheduler |
AbstractTransformFuture<I,O,F,T> | 2 types | com.google.common.util.concurrent .AbstractTransformFuture |
CycleDetectingLockFactory | 1 type | com.google.common.util.concurrent .CycleDetectingLockFactory |
RateLimiter$SleepingStopwatch | 1 type | com.google.common.util.concurrent .RateLimiter$SleepingStopwatch |
RateLimiter | 2 types | com.google.common.util.concurrent .RateLimiter |
Striped<L> | 3 types | com.google.common.util.concurrent .Striped |
AbstractIteratorTester$PermittedMetaExce ption | 4 types | com.google.common.collect.testing .AbstractIteratorTester$PermittedMetaExc eption |
MapTestSuiteBuilderTests$WrappedHashMapG enerator | 1 type | com.google.common.collect.testing .MapTestSuiteBuilderTests$WrappedHashMap Generator |
AbstractPackageSanityTests$Chopper | 2 types | com.google.common.testing .AbstractPackageSanityTests$Chopper |
ArbitraryInstancesTest$SomeAbstractClass | 1 type | com.google.common.testing .ArbitraryInstancesTest$SomeAbstractClas s |
TypeTokenResolutionTest$Foo<A,B> | 1 type | com.google.common.reflect .TypeTokenResolutionTest$Foo |
TypeTokenResolutionTest$Mapping<F,T> | 2 types | com.google.common.reflect .TypeTokenResolutionTest$Mapping |
TypeVisitorTest$BaseTypeVisitor | 1 type | com.google.common.reflect .TypeVisitorTest$BaseTypeVisitor |
AbstractIdleServiceTest$TestService | 1 type | com.google.common.util.concurrent .AbstractIdleServiceTest$TestService |
ServiceManagerTest$NoOpService | 1 type | com.google.common.util.concurrent .ServiceManagerTest$NoOpService |
Statistics
Stat | derivedClassesUsed |
---|---|
Sum: | 163 |
Average: | 2.43 |
Minimum: | 1 |
Maximum: | 26 |
Standard deviation: | 3.24 |
Variance: | 10.51 |
Rule Violated: Class shouldn't be too deep in inheritance tree |
warnif count > 0 from t in JustMyCode.Types
where t.IsClass
let baseClasses = t.BaseClasses.ExceptThirdParty()
// Warn for classes with 3 or more base classes.
// Notice that we don't count third-party classes
// because this rule concerns your code design,
// not third-party libraries consumed design.
where baseClasses.Count() >= 3
select new { t, baseClasses,
// The metric value DepthOfInheritance takes account
// of third-party base classes
t.DepthOfInheritance }
// Branches too long in the derivation should be avoided.
// See the definition of the DepthOfInheritance metric here
// http://www.jarchitect.com/Metrics.aspx#DIT
462 types matched
- The following list of types is truncated and contains only the first 100 types of the 462 types matched.
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
462 types | baseClasses | Depth of inheritance | Full Name |
---|---|---|---|
ForwardingLoadingCache$SimpleForwardingL oadingCache<K,V> | 3 types | 4 | com.google.common.cache .ForwardingLoadingCache$SimpleForwarding LoadingCache |
LocalCache$LoadingSerializationProxy<K,V > | 3 types | 4 | com.google.common.cache .LocalCache$LoadingSerializationProxy |
AbstractBiMap$EntrySet | 3 types | 4 | com.google.common.collect .AbstractBiMap$EntrySet |
AbstractBiMap$Inverse<K,V> | 3 types | 4 | com.google.common.collect .AbstractBiMap$Inverse |
AbstractBiMap$KeySet | 3 types | 4 | com.google.common.collect .AbstractBiMap$KeySet |
AbstractBiMap$ValueSet | 3 types | 4 | com.google.common.collect .AbstractBiMap$ValueSet |
AbstractMapBasedMultimap$NavigableAsMap | 3 types | 5 | com.google.common.collect .AbstractMapBasedMultimap$NavigableAsMap |
AbstractMapBasedMultimap$NavigableKeySet | 4 types | 7 | com.google.common.collect .AbstractMapBasedMultimap$NavigableKeySe t |
AbstractMapBasedMultimap$SortedKeySet | 3 types | 6 | com.google.common.collect .AbstractMapBasedMultimap$SortedKeySet |
AbstractNavigableMap$DescendingMap | 3 types | 4 | com.google.common.collect .AbstractNavigableMap$DescendingMap |
AbstractSortedKeySortedSetMultimap<K,V> | 4 types | 5 | com.google.common.collect .AbstractSortedKeySortedSetMultimap |
AbstractSortedMultiset$1DescendingMultis etImpl | 4 types | 5 | com.google.common.collect .AbstractSortedMultiset$1DescendingMulti setImpl |
AbstractSortedSetMultimap<K,V> | 3 types | 4 | com.google.common.collect .AbstractSortedSetMultimap |
ArrayListMultimap<K,V> | 4 types | 5 | com.google.common.collect .ArrayListMultimap |
ArrayListMultimapGwtSerializationDepende ncies<K,V> | 3 types | 4 | com.google.common.collect .ArrayListMultimapGwtSerializationDepend encies |
ArrayTable$1 | 3 types | 4 | com.google.common.collect.ArrayTable$1 |
ArrayTable$3 | 3 types | 4 | com.google.common.collect.ArrayTable$3 |
ArrayTable$ArrayMap$2 | 3 types | 4 | com.google.common.collect .ArrayTable$ArrayMap$2 |
ConcurrentHashMultiset$1 | 3 types | 4 | com.google.common.collect .ConcurrentHashMultiset$1 |
ConcurrentHashMultiset$EntrySet | 3 types | 6 | com.google.common.collect .ConcurrentHashMultiset$EntrySet |
ContiguousSet<C> | 4 types | 6 | com.google.common.collect.ContiguousSet |
DenseImmutableTable$Column | 3 types | 4 | com.google.common.collect .DenseImmutableTable$Column |
DenseImmutableTable$ColumnMap | 3 types | 4 | com.google.common.collect .DenseImmutableTable$ColumnMap |
DenseImmutableTable$Row | 3 types | 4 | com.google.common.collect .DenseImmutableTable$Row |
DenseImmutableTable$RowMap | 3 types | 4 | com.google.common.collect .DenseImmutableTable$RowMap |
DenseImmutableTable<R,C,V> | 3 types | 4 | com.google.common.collect .DenseImmutableTable |
DescendingImmutableSortedMultiset<E> | 5 types | 7 | com.google.common.collect .DescendingImmutableSortedMultiset |
DescendingImmutableSortedSet<E> | 4 types | 6 | com.google.common.collect .DescendingImmutableSortedSet |
DescendingMultiset<E> | 3 types | 4 | com.google.common.collect .DescendingMultiset |
EmptyContiguousSet<C> | 5 types | 7 | com.google.common.collect .EmptyContiguousSet |
EmptyImmutableListMultimap | 3 types | 4 | com.google.common.collect .EmptyImmutableListMultimap |
EmptyImmutableSetMultimap | 3 types | 4 | com.google.common.collect .EmptyImmutableSetMultimap |
EnumBiMap<K> | 3 types | 4 | com.google.common.collect.EnumBiMap |
EnumHashBiMap<K> | 3 types | 4 | com.google.common.collect.EnumHashBiMap |
EvictingQueue<E> | 3 types | 4 | com.google.common.collect.EvictingQueue |
FilteredKeyMultimap$AddRejectingList<K,V > | 3 types | 4 | com.google.common.collect .FilteredKeyMultimap$AddRejectingList |
FilteredKeyMultimap$AddRejectingSet<K,V> | 3 types | 4 | com.google.common.collect .FilteredKeyMultimap$AddRejectingSet |
FilteredKeySetMultimap$EntrySet | 3 types | 4 | com.google.common.collect .FilteredKeySetMultimap$EntrySet |
FluentIterable$2$1 | 3 types | 4 | com.google.common.collect .FluentIterable$2$1 |
ForwardingBlockingDeque<E> | 4 types | 5 | com.google.common.collect .ForwardingBlockingDeque |
ForwardingDeque<E> | 3 types | 4 | com.google.common.collect .ForwardingDeque |
ForwardingNavigableMap$StandardDescendin gMap | 3 types | 4 | com.google.common.collect .ForwardingNavigableMap$StandardDescendi ngMap |
ForwardingNavigableMap$StandardNavigable KeySet | 4 types | 7 | com.google.common.collect .ForwardingNavigableMap$StandardNavigabl eKeySet |
ForwardingNavigableMap<K,V> | 3 types | 4 | com.google.common.collect .ForwardingNavigableMap |
ForwardingNavigableSet$StandardDescendin gSet | 6 types | 7 | com.google.common.collect .ForwardingNavigableSet$StandardDescendi ngSet |
ForwardingNavigableSet<E> | 4 types | 5 | com.google.common.collect .ForwardingNavigableSet |
ForwardingSortedMap$StandardKeySet | 3 types | 6 | com.google.common.collect .ForwardingSortedMap$StandardKeySet |
ForwardingSortedMultiset$StandardDescend ingMultiset | 4 types | 5 | com.google.common.collect .ForwardingSortedMultiset$StandardDescen dingMultiset |
ForwardingSortedMultiset$StandardElement Set | 4 types | 7 | com.google.common.collect .ForwardingSortedMultiset$StandardElemen tSet |
ForwardingSortedMultiset<E> | 3 types | 4 | com.google.common.collect .ForwardingSortedMultiset |
ForwardingSortedSet<E> | 3 types | 4 | com.google.common.collect .ForwardingSortedSet |
ForwardingSortedSetMultimap<K,V> | 3 types | 4 | com.google.common.collect .ForwardingSortedSetMultimap |
HashMultimap<K,V> | 4 types | 5 | com.google.common.collect.HashMultimap |
HashMultimapGwtSerializationDependencies <K,V> | 3 types | 4 | com.google.common.collect .HashMultimapGwtSerializationDependencie s |
ImmutableList$1 | 3 types | 4 | com.google.common.collect .ImmutableList$1 |
ImmutableMap$IteratorBasedImmutableMap$1 EntrySetImpl | 3 types | 5 | com.google.common.collect .ImmutableMap$IteratorBasedImmutableMap$ 1EntrySetImpl |
ImmutableMapEntry$NonTerminalImmutableBi MapEntry<K,V> | 4 types | 5 | com.google.common.collect .ImmutableMapEntry$NonTerminalImmutableB iMapEntry |
ImmutableMapEntry$NonTerminalImmutableMa pEntry<K,V> | 3 types | 4 | com.google.common.collect .ImmutableMapEntry$NonTerminalImmutableM apEntry |
ImmutableMapEntrySet$RegularEntrySet<K,V > | 3 types | 5 | com.google.common.collect .ImmutableMapEntrySet$RegularEntrySet |
ImmutableMapKeySet<K,V> | 3 types | 5 | com.google.common.collect .ImmutableMapKeySet |
ImmutableMapValues$2 | 3 types | 5 | com.google.common.collect .ImmutableMapValues$2 |
ImmutableMultimap$Keys | 3 types | 5 | com.google.common.collect .ImmutableMultimap$Keys |
ImmutableMultiset$EntrySet | 3 types | 5 | com.google.common.collect .ImmutableMultiset$EntrySet |
ImmutableRangeSet$AsSet | 4 types | 6 | com.google.common.collect .ImmutableRangeSet$AsSet |
ImmutableSet$Indexed$1 | 3 types | 5 | com.google.common.collect .ImmutableSet$Indexed$1 |
ImmutableSortedAsList<E> | 4 types | 6 | com.google.common.collect .ImmutableSortedAsList |
ImmutableSortedMap$1EntrySet$1 | 3 types | 5 | com.google.common.collect .ImmutableSortedMap$1EntrySet$1 |
ImmutableSortedMap$1EntrySet | 3 types | 5 | com.google.common.collect .ImmutableSortedMap$1EntrySet |
ImmutableSortedMultiset<E> | 4 types | 6 | com.google.common.collect .ImmutableSortedMultiset |
ImmutableSortedMultisetFauxverideShim<E> | 3 types | 5 | com.google.common.collect .ImmutableSortedMultisetFauxverideShim |
ImmutableSortedSet$Builder<E> | 3 types | 4 | com.google.common.collect .ImmutableSortedSet$Builder |
ImmutableSortedSet<E> | 3 types | 5 | com.google.common.collect .ImmutableSortedSet |
Iterators$ArrayItr<T> | 3 types | 4 | com.google.common.collect .Iterators$ArrayItr |
LinkedHashMultimap<K,V> | 4 types | 5 | com.google.common.collect .LinkedHashMultimap |
LinkedHashMultimapGwtSerializationDepend encies<K,V> | 3 types | 4 | com.google.common.collect .LinkedHashMultimapGwtSerializationDepen dencies |
MapMakerInternalMap$AbstractSerializatio nProxy<K,V> | 3 types | 4 | com.google.common.collect .MapMakerInternalMap$AbstractSerializati onProxy |
MapMakerInternalMap$SerializationProxy<K ,V> | 4 types | 5 | com.google.common.collect .MapMakerInternalMap$SerializationProxy |
Maps$2 | 3 types | 4 | com.google.common.collect.Maps$2 |
Maps$3 | 4 types | 5 | com.google.common.collect.Maps$3 |
Maps$4 | 5 types | 6 | com.google.common.collect.Maps$4 |
Maps$FilteredEntryBiMap<K,V> | 3 types | 5 | com.google.common.collect .Maps$FilteredEntryBiMap |
Maps$FilteredEntryMap$EntrySet | 3 types | 4 | com.google.common.collect .Maps$FilteredEntryMap$EntrySet |
Maps$FilteredEntryNavigableMap$1 | 4 types | 7 | com.google.common.collect .Maps$FilteredEntryNavigableMap$1 |
Maps$FilteredEntrySortedMap$SortedKeySet | 3 types | 6 | com.google.common.collect .Maps$FilteredEntrySortedMap$SortedKeySe t |
Maps$FilteredEntrySortedMap<K,V> | 3 types | 5 | com.google.common.collect .Maps$FilteredEntrySortedMap |
Maps$NavigableKeySet<K,V> | 3 types | 6 | com.google.common.collect .Maps$NavigableKeySet |
Maps$TransformedEntriesNavigableMap<K,V1 ,V2> | 3 types | 5 | com.google.common.collect .Maps$TransformedEntriesNavigableMap |
Maps$UnmodifiableEntrySet<K,V> | 3 types | 4 | com.google.common.collect .Maps$UnmodifiableEntrySet |
Maps$UnmodifiableNavigableMap<K,V> | 3 types | 4 | com.google.common.collect .Maps$UnmodifiableNavigableMap |
MultimapBuilder$MultimapBuilderWithKeys$ 5 | 3 types | 4 | com.google.common.collect .MultimapBuilder$MultimapBuilderWithKeys $5 |
Multimaps$CustomListMultimap<K,V> | 3 types | 4 | com.google.common.collect .Multimaps$CustomListMultimap |
Multimaps$CustomSetMultimap<K,V> | 3 types | 4 | com.google.common.collect .Multimaps$CustomSetMultimap |
Multimaps$CustomSortedSetMultimap<K,V> | 4 types | 5 | com.google.common.collect .Multimaps$CustomSortedSetMultimap |
Multimaps$UnmodifiableListMultimap<K,V> | 3 types | 4 | com.google.common.collect .Multimaps$UnmodifiableListMultimap |
Multimaps$UnmodifiableSetMultimap<K,V> | 3 types | 4 | com.google.common.collect .Multimaps$UnmodifiableSetMultimap |
Multimaps$UnmodifiableSortedSetMultimap <K,V> | 4 types | 5 | com.google.common.collect .Multimaps$UnmodifiableSortedSetMultimap |
Multisets$UnmodifiableMultiset<E> | 3 types | 4 | com.google.common.collect .Multisets$UnmodifiableMultiset |
MutableClassToInstanceMap$2 | 3 types | 4 | com.google.common.collect .MutableClassToInstanceMap$2 |
RegularContiguousSet$3 | 3 types | 5 | com.google.common.collect .RegularContiguousSet$3 |
RegularContiguousSet<C> | 5 types | 7 | com.google.common.collect .RegularContiguousSet |
Statistics
Stat | baseClasses | Depth of inheritance |
---|---|---|
Sum: | 1 536 | 2 064 |
Average: | 3.32 | 4.47 |
Minimum: | 3 | 4 |
Maximum: | 6 | 7 |
Standard deviation: | 0.56 | 0.71 |
Variance: | 0.31 | 0.5 |
Rule Violated: Don't assign static fields from instance methods |
// Assigning static fields from instance methods leads to
// poorly maintainable and non thread-safe code.
// It is advised to assign static fields inline or from class constructor.
warnif count > 0
from f in Application.Fields where
f.IsStatic &&
!f.IsLiteral &&
!f.IsInitOnly &&
!f.IsGeneratedByCompiler &&
// Contract API define such a insideContractEvaluation static field
f.Name != "insideContractEvaluation"
let assignedBy = f.MethodsAssigningMe.Where(m => !m.IsStatic)
where assignedBy .Count() > 0
select new { f, assignedBy }
5 fields matched
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
5 fields | assignedBy | Full Name |
---|---|---|
testWasRun | 2 methods | com.google.common.collect.testing .FeatureSpecificTestSuiteBuilderTest .testWasRun |
SHORT_DELAY_MS | 1 method | com.google.common.util.concurrent .JSR166TestCase.SHORT_DELAY_MS |
SMALL_DELAY_MS | 1 method | com.google.common.util.concurrent .JSR166TestCase.SMALL_DELAY_MS |
MEDIUM_DELAY_MS | 1 method | com.google.common.util.concurrent .JSR166TestCase.MEDIUM_DELAY_MS |
LONG_DELAY_MS | 1 method | com.google.common.util.concurrent .JSR166TestCase.LONG_DELAY_MS |
Statistics
Stat | assignedBy |
---|---|
Sum: | 6 |
Average: | 1.2 |
Minimum: | 1 |
Maximum: | 2 |
Standard deviation: | 0.4 |
Variance: | 0.16 |
Rule Violated: Avoid empty interfaces |
warnif count > 0 from t in JustMyCode.Types where
t.IsInterface &&
t.NbMethods == 0
select new { t, t.TypesThatImplementMe }
// Interfaces define members that provide a behavior
// or usage contract. The functionality described by
// the interface can be adopted by any type,
// regardless of where the type appears in the
// inheritance hierarchy. A type implements an
// interface by providing implementations for the
// interface's members. An empty interface does not
// define any members, and as such, does not define
// a contract that can be implemented.
// If your design includes empty interfaces that
// types are expected to implement, you are probably
// using an interface as a marker, or a way of
// identifying a group of types. If this identification
// will occur at runtime, the correct way to accomplish
// this is to use a custom attribute. Use the presence
// or absence of the attribute, or the attribute's
// properties, to identify the target types. If the
// identification must occurs at compile time, then using
// an empty interface is acceptable.
66 types matched
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
66 types | TypesThatImplementMe | Full Name |
---|---|---|
package-info | no type | com.google.common.cache.package-info |
MapMakerInternalMap$StrongValueEntry<K,V ,E> | 4 types | com.google.common.collect .MapMakerInternalMap$StrongValueEntry |
package-info | no type | com.google.common.collect.package-info |
package-info | no type | com.google.common.escape.package-info |
package-info | no type | com.google.common.eventbus.package-info |
package-info | no type | com.google.common.graph.package-info |
package-info | no type | com.google.common.hash.package-info |
package-info | no type | com.google.common.html.package-info |
package-info | no type | com.google.common.io.package-info |
package-info | no type | com.google.common.math.package-info |
package-info | no type | com.google.common.net.package-info |
package-info | no type | com.google.common.primitives .package-info |
package-info | no type | com.google.common.reflect.package-info |
package-info | no type | com.google.common.xml.package-info |
package-info | no type | com.google.common.base.package-info |
Suppliers$SupplierFunction<T> | 1 type | com.google.common.base .Suppliers$SupplierFunction |
ListenableScheduledFuture<V> | 3 types | com.google.common.util.concurrent .ListenableScheduledFuture |
package-info | no type | com.google.common.util.concurrent .package-info |
TestListMultimapGenerator<K,V> | 3 types | com.google.common.collect.testing.google .TestListMultimapGenerator |
TestSetMultimapGenerator<K,V> | 2 types | com.google.common.collect.testing.google .TestSetMultimapGenerator |
package-info | no type | com.google.common.escape.testing .package-info |
package-info | no type | com.google.common.testing.package-info |
ArbitraryInstancesTest$SomeInterface | no type | com.google.common.testing .ArbitraryInstancesTest$SomeInterface |
ClassSanityTesterTest$AnInterface | no type | com.google.common.testing .ClassSanityTesterTest$AnInterface |
FluentIterableTest$TypeB | 1 type | com.google.common.collect .FluentIterableTest$TypeB |
FluentIterableTest$X | 2 types | com.google.common.collect .FluentIterableTest$X |
FluentIterableTest$Y | 2 types | com.google.common.collect .FluentIterableTest$Y |
ImmutableClassToInstanceMapTest$Five | 1 type | com.google.common.collect .ImmutableClassToInstanceMapTest$Five |
ImmutableClassToInstanceMapTest$Four | 1 type | com.google.common.collect .ImmutableClassToInstanceMapTest$Four |
ImmutableClassToInstanceMapTest$One | 1 type | com.google.common.collect .ImmutableClassToInstanceMapTest$One |
ImmutableClassToInstanceMapTest$Three | 1 type | com.google.common.collect .ImmutableClassToInstanceMapTest$Three |
ImmutableClassToInstanceMapTest$Two | 1 type | com.google.common.collect .ImmutableClassToInstanceMapTest$Two |
ImmutableSortedSetTest$Interface | 1 type | com.google.common.collect .ImmutableSortedSetTest$Interface |
IterablesTest$TypeB | 1 type | com.google.common.collect .IterablesTest$TypeB |
SubscriberRegistryTest$HierarchyFixtureI nterface | 2 types | com.google.common.eventbus .SubscriberRegistryTest$HierarchyFixture Interface |
SubscriberRegistryTest$HierarchyFixtureS ubinterface | 1 type | com.google.common.eventbus .SubscriberRegistryTest$HierarchyFixture Subinterface |
AbstractInvocationHandlerTest$A | 2 types | com.google.common.reflect .AbstractInvocationHandlerTest$A |
AbstractInvocationHandlerTest$B | 2 types | com.google.common.reflect .AbstractInvocationHandlerTest$B |
TypeResolverTest$TypedKeyMap<T> | no type | com.google.common.reflect .TypeResolverTest$TypedKeyMap |
TypeResolverTest$TypedListKeyMap<T> | no type | com.google.common.reflect .TypeResolverTest$TypedListKeyMap |
TypeTokenResolutionTest$IntegerStringFun ction | no type | com.google.common.reflect .TypeTokenResolutionTest$IntegerStringFu nction |
TypeTokenResolutionTest$IntegerSupplier | 1 type | com.google.common.reflect .TypeTokenResolutionTest$IntegerSupplier |
TypeTokenResolutionTest$StringIterable | no type | com.google.common.reflect .TypeTokenResolutionTest$StringIterable |
TypeTokenResolutionTest$StringListPredic ate | 1 type | com.google.common.reflect .TypeTokenResolutionTest$StringListPredi cate |
TypeTokenSubtypeTest$ConsumerFacing<T> | 1 type | com.google.common.reflect .TypeTokenSubtypeTest$ConsumerFacing |
TypeTokenSubtypeTest$Electronics | no type | com.google.common.reflect .TypeTokenSubtypeTest$Electronics |
TypeTokenSubtypeTest$Grocery | no type | com.google.common.reflect .TypeTokenSubtypeTest$Grocery |
TypeTokenSubtypeTest$Indoor | no type | com.google.common.reflect .TypeTokenSubtypeTest$Indoor |
TypeTokenSubtypeTest$Outdoor | no type | com.google.common.reflect .TypeTokenSubtypeTest$Outdoor |
TypeTokenSubtypeTest$UseIterable<T> | no type | com.google.common.reflect .TypeTokenSubtypeTest$UseIterable |
TypeTokenSubtypeTest$UseSerializableIter able<T> | no type | com.google.common.reflect .TypeTokenSubtypeTest$UseSerializableIte rable |
TypeTokenTest$BaseInterface | 1 type | com.google.common.reflect .TypeTokenTest$BaseInterface |
TypeTokenTest$GenericClass$Base | 1 type | com.google.common.reflect .TypeTokenTest$GenericClass$Base |
TypeTokenTest$Interface1 | 4 types | com.google.common.reflect .TypeTokenTest$Interface1 |
TypeTokenTest$Interface12 | 2 types | com.google.common.reflect .TypeTokenTest$Interface12 |
TypeTokenTest$Interface2 | 3 types | com.google.common.reflect .TypeTokenTest$Interface2 |
TypeTokenTest$Interface3<T> | 2 types | com.google.common.reflect .TypeTokenTest$Interface3 |
TypeTokenTest$ListArrayIterable<T> | no type | com.google.common.reflect .TypeTokenTest$ListArrayIterable |
TypeTokenTest$ListIterable<T> | 2 types | com.google.common.reflect .TypeTokenTest$ListIterable |
TypeTokenTest$ListMap<K,V> | 1 type | com.google.common.reflect .TypeTokenTest$ListMap |
TypeTokenTest$MySpecialList<E,F> | no type | com.google.common.reflect .TypeTokenTest$MySpecialList |
TypeTokenTest$NumberList<T> | no type | com.google.common.reflect .TypeTokenTest$NumberList |
TypeTokenTest$StringListArrayIterable | no type | com.google.common.reflect .TypeTokenTest$StringListArrayIterable |
TypeTokenTest$StringListIterable | no type | com.google.common.reflect .TypeTokenTest$StringListIterable |
TypeTokenTest$StringListMap<V> | no type | com.google.common.reflect .TypeTokenTest$StringListMap |
FuturesTest$MapperFunction | no type | com.google.common.util.concurrent .FuturesTest$MapperFunction |
Statistics
Stat | TypesThatImplementMe |
---|---|
Sum: | 51 |
Average: | 0.77 |
Minimum: | 0 |
Maximum: | 4 |
Standard deviation: | 1.04 |
Variance: | 1.08 |
Rule Violated: Nested types should not be visible |
warnif count > 0 from t in JustMyCode.Types where
t.IsNested &&
!t.IsGeneratedByCompiler &&
!t.IsPrivate
select new { t, t.NbLinesOfCode, t.Visibility }
// A nested type is a type declared within the
// scope of another type. Nested types are useful
// for encapsulating private implementation details
// of the containing type. Used for this purpose,
// nested types should not be externally visible.
// Do not use externally visible nested types for
// logical grouping or to avoid name collisions;
// instead, use packages.
493 types matched
- The following list of types is truncated and contains only the first 100 types of the 493 types matched.
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
493 types | # lines of code (LOC) | Visibility | Full Name |
---|---|---|---|
AbstractCache$StatsCounter | N/A | Public | com.google.common.cache .AbstractCache$StatsCounter |
CacheBuilderSpec$DurationParser | 22 | Internal | com.google.common.cache .CacheBuilderSpec$DurationParser |
CacheBuilderSpec$IntegerParser | 4 | Internal | com.google.common.cache .CacheBuilderSpec$IntegerParser |
CacheLoader$1 | 0 | Internal | com.google.common.cache.CacheLoader$1 |
LocalCache$AccessQueue<K,V> | 0 | Internal | com.google.common.cache .LocalCache$AccessQueue |
LocalCache$EntryFactory | N/A | Internal | com.google.common.cache .LocalCache$EntryFactory |
LocalCache$HashIterator<T> | 0 | Internal | com.google.common.cache .LocalCache$HashIterator |
LocalCache$LoadingValueReference<K,V> | 0 | Internal | com.google.common.cache .LocalCache$LoadingValueReference |
LocalCache$LocalLoadingCache<K,V> | 0 | Internal | com.google.common.cache .LocalCache$LocalLoadingCache |
LocalCache$LocalManualCache<K,V> | 0 | Internal | com.google.common.cache .LocalCache$LocalManualCache |
LocalCache$ManualSerializationProxy<K,V> | 0 | Internal | com.google.common.cache .LocalCache$ManualSerializationProxy |
LocalCache$ReferenceEntry<K,V> | N/A | Internal | com.google.common.cache .LocalCache$ReferenceEntry |
LocalCache$Segment<K,V> | 0 | Internal | com.google.common.cache .LocalCache$Segment |
LocalCache$Strength | N/A | Internal | com.google.common.cache .LocalCache$Strength |
LocalCache$StrongAccessEntry<K,V> | 0 | Internal | com.google.common.cache .LocalCache$StrongAccessEntry |
LocalCache$StrongAccessWriteEntry<K,V> | 0 | Internal | com.google.common.cache .LocalCache$StrongAccessWriteEntry |
LocalCache$StrongEntry<K,V> | 0 | Internal | com.google.common.cache .LocalCache$StrongEntry |
LocalCache$StrongValueReference<K,V> | 0 | Internal | com.google.common.cache .LocalCache$StrongValueReference |
LocalCache$StrongWriteEntry<K,V> | 0 | Internal | com.google.common.cache .LocalCache$StrongWriteEntry |
LocalCache$ValueReference<K,V> | N/A | Internal | com.google.common.cache .LocalCache$ValueReference |
LocalCache$WeakAccessEntry<K,V> | 0 | Internal | com.google.common.cache .LocalCache$WeakAccessEntry |
LocalCache$WeakAccessWriteEntry<K,V> | 0 | Internal | com.google.common.cache .LocalCache$WeakAccessWriteEntry |
LocalCache$WeakEntry<K,V> | 0 | Internal | com.google.common.cache .LocalCache$WeakEntry |
LocalCache$WeakValueReference<K,V> | 0 | Internal | com.google.common.cache .LocalCache$WeakValueReference |
LocalCache$WeakWriteEntry<K,V> | 0 | Internal | com.google.common.cache .LocalCache$WeakWriteEntry |
LocalCache$WeightedSoftValueReference<K ,V> | 0 | Internal | com.google.common.cache .LocalCache$WeightedSoftValueReference |
LocalCache$WeightedStrongValueReference <K,V> | 0 | Internal | com.google.common.cache .LocalCache$WeightedStrongValueReference |
LocalCache$WeightedWeakValueReference<K ,V> | 0 | Internal | com.google.common.cache .LocalCache$WeightedWeakValueReference |
LocalCache$WriteQueue<K,V> | 0 | Internal | com.google.common.cache .LocalCache$WriteQueue |
LocalCache$WriteThroughEntry | 0 | Internal | com.google.common.cache .LocalCache$WriteThroughEntry |
RemovalListeners$1 | 0 | Internal | com.google.common.cache .RemovalListeners$1 |
Striped64$Cell | 1 | Internal | com.google.common.cache.Striped64$Cell |
AbstractBiMap$BiMapEntry | 0 | Internal | com.google.common.collect .AbstractBiMap$BiMapEntry |
AbstractMapBasedMultimap$AsMap$AsMapIter ator | 0 | Internal | com.google.common.collect .AbstractMapBasedMultimap$AsMap$AsMapIte rator |
AbstractMapBasedMultimap$NavigableKeySet | 0 | Internal | com.google.common.collect .AbstractMapBasedMultimap$NavigableKeySe t |
AbstractMapBasedMultiset$1 | 0 | Internal | com.google.common.collect .AbstractMapBasedMultiset$1 |
BinaryTreeTraverser$1 | 0 | Internal | com.google.common.collect .BinaryTreeTraverser$1 |
BinaryTreeTraverser$2 | 0 | Internal | com.google.common.collect .BinaryTreeTraverser$2 |
FilteredEntryMultimap$AsMap$1EntrySetImp l | 0 | Internal | com.google.common.collect .FilteredEntryMultimap$AsMap$1EntrySetIm pl |
FilteredEntryMultimap$AsMap | 0 | Internal | com.google.common.collect .FilteredEntryMultimap$AsMap |
FilteredEntryMultimap$Keys$1 | 0 | Internal | com.google.common.collect .FilteredEntryMultimap$Keys$1 |
FilteredEntryMultimap$Keys | 0 | Internal | com.google.common.collect .FilteredEntryMultimap$Keys |
FilteredEntryMultimap$ValuePredicate | 0 | Internal | com.google.common.collect .FilteredEntryMultimap$ValuePredicate |
FluentIterable$2 | 0 | Internal | com.google.common.collect .FluentIterable$2 |
ForwardingNavigableMap$StandardDescendin gMap | 0 | Public | com.google.common.collect .ForwardingNavigableMap$StandardDescendi ngMap |
HashBiMap$1 | 0 | Internal | com.google.common.collect.HashBiMap$1 |
HashBiMap$Inverse$1 | 0 | Internal | com.google.common.collect .HashBiMap$Inverse$1 |
HashBiMap$Itr<T> | 0 | Internal | com.google.common.collect.HashBiMap$Itr |
ImmutableBiMap$Builder<K,V> | 0 | Public | com.google.common.collect .ImmutableBiMap$Builder |
ImmutableCollection$ArrayBasedBuilder<E> | 0 | Internal | com.google.common.collect .ImmutableCollection$ArrayBasedBuilder |
ImmutableCollection$Builder<E> | 0 | Public | com.google.common.collect .ImmutableCollection$Builder |
ImmutableList$Builder<E> | 0 | Public | com.google.common.collect .ImmutableList$Builder |
ImmutableList$SerializedForm | 0 | Internal | com.google.common.collect .ImmutableList$SerializedForm |
ImmutableMap$Builder<K,V> | 0 | Public | com.google.common.collect .ImmutableMap$Builder |
ImmutableMap$IteratorBasedImmutableMap<K ,V> | 0 | Internal | com.google.common.collect .ImmutableMap$IteratorBasedImmutableMap |
ImmutableMap$MapViewOfValuesAsSingletonS ets$1 | 0 | Internal | com.google.common.collect .ImmutableMap$MapViewOfValuesAsSingleton Sets$1 |
ImmutableMap$SerializedForm | 0 | Internal | com.google.common.collect .ImmutableMap$SerializedForm |
ImmutableMapEntry$NonTerminalImmutableMa pEntry<K,V> | 0 | Internal | com.google.common.collect .ImmutableMapEntry$NonTerminalImmutableM apEntry |
ImmutableMultimap$Builder<K,V> | 0 | Public | com.google.common.collect .ImmutableMultimap$Builder |
ImmutableMultimap$FieldSettersHolder | 0 | Internal | com.google.common.collect .ImmutableMultimap$FieldSettersHolder |
ImmutableMultiset$EntrySetSerializedForm <E> | 0 | Internal | com.google.common.collect .ImmutableMultiset$EntrySetSerializedFor m |
ImmutableSet$Builder<E> | 0 | Public | com.google.common.collect .ImmutableSet$Builder |
ImmutableSet$Indexed<E> | 0 | Internal | com.google.common.collect .ImmutableSet$Indexed |
ImmutableSortedMap$1EntrySet | 0 | Internal | com.google.common.collect .ImmutableSortedMap$1EntrySet |
ImmutableSortedMap$Builder<K,V> | 0 | Public | com.google.common.collect .ImmutableSortedMap$Builder |
ImmutableSortedSet$Builder<E> | 0 | Public | com.google.common.collect .ImmutableSortedSet$Builder |
ImmutableTable$SerializedForm | 0 | Internal | com.google.common.collect .ImmutableTable$SerializedForm |
Interners$InternerImpl<E> | 10 | Internal | com.google.common.collect .Interners$InternerImpl |
Iterables$6 | 0 | Internal | com.google.common.collect.Iterables$6 |
LinkedHashMultimap$ValueEntry<K,V> | 0 | Internal | com.google.common.collect .LinkedHashMultimap$ValueEntry |
LinkedHashMultimap$ValueSet | 0 | Internal | com.google.common.collect .LinkedHashMultimap$ValueSet |
LinkedListMultimap$1ValuesImpl | 0 | Internal | com.google.common.collect .LinkedListMultimap$1ValuesImpl |
MapMaker$Dummy | N/A | Internal | com.google.common.collect.MapMaker$Dummy |
MapMakerInternalMap$DummyInternalEntry | 0 | Internal | com.google.common.collect .MapMakerInternalMap$DummyInternalEntry |
MapMakerInternalMap$HashIterator<T> | 0 | Internal | com.google.common.collect .MapMakerInternalMap$HashIterator |
MapMakerInternalMap$InternalEntry<K,V,E> | N/A | Internal | com.google.common.collect .MapMakerInternalMap$InternalEntry |
MapMakerInternalMap$Segment<K,V,E> | 0 | Internal | com.google.common.collect .MapMakerInternalMap$Segment |
MapMakerInternalMap$Strength | N/A | Internal | com.google.common.collect .MapMakerInternalMap$Strength |
MapMakerInternalMap$StrongKeyDummyValueE ntry<K> | 0 | Internal | com.google.common.collect .MapMakerInternalMap$StrongKeyDummyValue Entry |
MapMakerInternalMap$StrongKeyDummyValueS egment<K> | 0 | Internal | com.google.common.collect .MapMakerInternalMap$StrongKeyDummyValue Segment |
MapMakerInternalMap$StrongKeyStrongValue Entry<K,V> | 0 | Internal | com.google.common.collect .MapMakerInternalMap$StrongKeyStrongValu eEntry |
MapMakerInternalMap$StrongKeyStrongValue Segment<K,V> | 0 | Internal | com.google.common.collect .MapMakerInternalMap$StrongKeyStrongValu eSegment |
MapMakerInternalMap$StrongKeyWeakValueEn try<K,V> | 0 | Internal | com.google.common.collect .MapMakerInternalMap$StrongKeyWeakValueE ntry |
MapMakerInternalMap$StrongKeyWeakValueSe gment<K,V> | 0 | Internal | com.google.common.collect .MapMakerInternalMap$StrongKeyWeakValueS egment |
MapMakerInternalMap$StrongValueEntry<K,V ,E> | N/A | Internal | com.google.common.collect .MapMakerInternalMap$StrongValueEntry |
MapMakerInternalMap$WeakKeyDummyValueEnt ry<K> | 0 | Internal | com.google.common.collect .MapMakerInternalMap$WeakKeyDummyValueEn try |
MapMakerInternalMap$WeakKeyDummyValueSeg ment<K> | 0 | Internal | com.google.common.collect .MapMakerInternalMap$WeakKeyDummyValueSe gment |
MapMakerInternalMap$WeakKeyStrongValueEn try<K,V> | 0 | Internal | com.google.common.collect .MapMakerInternalMap$WeakKeyStrongValueE ntry |
MapMakerInternalMap$WeakKeyStrongValueSe gment<K,V> | 0 | Internal | com.google.common.collect .MapMakerInternalMap$WeakKeyStrongValueS egment |
MapMakerInternalMap$WeakKeyWeakValueEntr y<K,V> | 0 | Internal | com.google.common.collect .MapMakerInternalMap$WeakKeyWeakValueEnt ry |
MapMakerInternalMap$WeakKeyWeakValueSegm ent<K,V> | 0 | Internal | com.google.common.collect .MapMakerInternalMap$WeakKeyWeakValueSeg ment |
MapMakerInternalMap$WeakValueEntry<K,V,E > | N/A | Internal | com.google.common.collect .MapMakerInternalMap$WeakValueEntry |
MapMakerInternalMap$WeakValueReference<K ,V,E> | N/A | Internal | com.google.common.collect .MapMakerInternalMap$WeakValueReference |
MapMakerInternalMap$WeakValueReferenceIm pl<K,V,E> | 0 | Internal | com.google.common.collect .MapMakerInternalMap$WeakValueReferenceI mpl |
MapMakerInternalMap$WriteThroughEntry | 0 | Internal | com.google.common.collect .MapMakerInternalMap$WriteThroughEntry |
Maps$DescendingMap<K,V> | 0 | Internal | com.google.common.collect .Maps$DescendingMap |
Maps$EntrySet<K,V> | 0 | Internal | com.google.common.collect.Maps$EntrySet |
Maps$EntryTransformer<K,V1,V2> | N/A | Public | com.google.common.collect .Maps$EntryTransformer |
Maps$FilteredEntryBiMap<K,V> | 0 | Internal | com.google.common.collect .Maps$FilteredEntryBiMap |
Maps$FilteredEntryMap$EntrySet$1 | 0 | Internal | com.google.common.collect .Maps$FilteredEntryMap$EntrySet$1 |
Statistics
Stat | # lines of code (LOC) | Visibility |
---|---|---|
Sum: | 514 | - |
Average: | 1.33 | - |
Minimum: | 0 | - |
Maximum: | 50 | - |
Standard deviation: | 5.18 | - |
Variance: | 26.83 | - |
Rule Violated: Don't use obsolete types, methods or fields |
warnif count > 0
let obsoleteTypes = Types.Where(t => t.IsObsolete)
let obsoleteMethods = Methods.Where(m => m.IsObsolete).ToHashSet()
let obsoleteFields = Fields.Where(f => f.IsObsolete)
from m in JustMyCode.Methods.UsingAny(obsoleteTypes).Union(
JustMyCode.Methods.UsingAny(obsoleteMethods)).Union(
JustMyCode.Methods.UsingAny(obsoleteFields))
let obsoleteTypesUsed = obsoleteTypes.UsedBy(m)
// Optimization: MethodsCalled + Intersect() is faster than using obsoleteMethods.UsedBy()
let obsoleteMethodsUsed = m.MethodsCalled.Intersect(obsoleteMethods)
let obsoleteFieldsUsed = obsoleteFields.UsedBy(m)
select new { m, obsoleteTypesUsed, obsoleteMethodsUsed, obsoleteFieldsUsed }
158 methods matched
- The following list of methods is truncated and contains only the first 100 methods of the 158 methods matched.
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
158 methods | obsoleteTypesUsed | obsoleteMethodsUsed | obsoleteFieldsUsed | Full Name |
---|---|---|---|---|
apply(Object) | no type | 1 method | no field | com.google.common.cache .ForwardingLoadingCache.apply(Object) |
apply(Object) | no type | 1 method | no field | com.google.common.cache .LocalCache$LoadingSerializationProxy .apply(Object) |
append(Iterable) | no type | 1 method | no field | com.google.common.collect.FluentIterable .append(Iterable) |
append(Object[]) | no type | 1 method | no field | com.google.common.collect.FluentIterable .append(Object[]) |
transformAndConcat(Function)<T> | no type | 1 method | no field | com.google.common.collect.FluentIterable .transformAndConcat(Function)<T> |
apply(Object) | no type | 1 method | no field | com.google.common.collect.Range.apply (Object) |
comparator() | no type | 1 method | no field | com.google.common.collect .TreeBasedTable$TreeRow.comparator() |
create(TreeBasedTable)<R,C,V> | no type | 2 methods | no field | com.google.common.collect.TreeBasedTable .create(TreeBasedTable)<R,C,V> |
createColumnKeyIterator() | no type | 1 method | no field | com.google.common.collect.TreeBasedTable .createColumnKeyIterator() |
createCollection(Object) | no type | 1 method | no field | com.google.common.collect.TreeMultimap .createCollection(Object) |
writeObject(ObjectOutputStream) | no type | 1 method | no field | com.google.common.collect.TreeMultimap .writeObject(ObjectOutputStream) |
flattenHierarchy(Class) | no type | 1 method | no field | com.google.common.eventbus .SubscriberRegistry.flattenHierarchy (Class) |
mean(Iterable) | no type | 1 method | no field | com.google.common.math.DoubleMath.mean (Iterable) |
put(Object,Object) | no type | 1 method | no field | com.google.common.reflect .ImmutableTypeToInstanceMap.put(Object ,Object) |
put(Object,Object) | no type | 1 method | no field | com.google.common.reflect .MutableTypeToInstanceMap.put(Object ,Object) |
apply(Object) | no type | 1 method | no field | com.google.common.base.CharMatcher$And .apply(Object) |
apply(Object) | no type | 1 method | no field | com.google.common.base.CharMatcher$AnyOf .apply(Object) |
apply(Object) | no type | 1 method | no field | com.google.common.base .CharMatcher$BreakingWhitespace.apply (Object) |
apply(Object) | no type | 1 method | no field | com.google.common.base .CharMatcher$FastMatcher.apply(Object) |
apply(Object) | no type | 1 method | no field | com.google.common.base .CharMatcher$JavaDigit.apply(Object) |
apply(Object) | no type | 1 method | no field | com.google.common.base .CharMatcher$JavaLetter.apply(Object) |
apply(Object) | no type | 1 method | no field | com.google.common.base .CharMatcher$JavaLetterOrDigit.apply (Object) |
apply(Object) | no type | 1 method | no field | com.google.common.base .CharMatcher$JavaLowerCase.apply(Object) |
apply(Object) | no type | 1 method | no field | com.google.common.base .CharMatcher$JavaUpperCase.apply(Object) |
apply(Object) | no type | 1 method | no field | com.google.common.base .CharMatcher$Negated.apply(Object) |
apply(Object) | no type | 1 method | no field | com.google.common.base.CharMatcher$Or .apply(Object) |
apply(Object) | no type | 1 method | no field | com.google.common.base .CharMatcher$RangesMatcher.apply(Object) |
apply(Object) | no type | 1 method | no field | com.google.common.base.CharMatcher.apply (Object) |
propagateIfPossible(Throwable,Class)<X> | no type | 2 methods | no field | com.google.common.base.Throwables .propagateIfPossible(Throwable,Class)<X> |
propagateIfPossible(Throwable,Class ,Class)<X1,X2> | no type | 1 method | no field | com.google.common.base.Throwables .propagateIfPossible(Throwable,Class ,Class)<X1,X2> |
invokeAccessibleNonThrowingMethod(Method ,Object,Object[]) | no type | 1 method | no field | com.google.common.base.Throwables .invokeAccessibleNonThrowingMethod (Method,Object,Object[]) |
isSatisfied(Monitor$Guard) | no type | 1 method | no field | com.google.common.util.concurrent .Monitor.isSatisfied(Monitor$Guard) |
run() | no type | 1 method | no field | com.google.common.util.concurrent .MoreExecutors$ScheduledListeningDecorat or$NeverSuccessfulListenableFutureTask .run() |
platformThreadFactory() | no type | 1 method | no field | com.google.common.util.concurrent .MoreExecutors.platformThreadFactory() |
invoke(Object,Method,Object[]) | no type | 1 method | no field | com.google.common.util.concurrent .SimpleTimeLimiter$1.invoke(Object ,Method,Object[]) |
SimpleTimeLimiter() | no type | 1 method | no field | com.google.common.util.concurrent .SimpleTimeLimiter.SimpleTimeLimiter() |
create(ExecutorService) | no type | 1 method | no field | com.google.common.util.concurrent .SimpleTimeLimiter.create (ExecutorService) |
testInteraction(Function) | no type | 1 method | no field | com.google.common.testing .ForwardingWrapperTester$InteractionTest er.testInteraction(Function) |
reallyTestOneCharMatch(CharMatcher ,String) | no type | 1 method | no field | com.google.common.base.CharMatcherTest .reallyTestOneCharMatch(CharMatcher ,String) |
reallyTestOneCharNoMatch(CharMatcher ,String) | no type | 1 method | no field | com.google.common.base.CharMatcherTest .reallyTestOneCharNoMatch(CharMatcher ,String) |
testApply() | no type | 1 method | no field | com.google.common.base.ConverterTest .testApply() |
testSubtypeOf_equality() | no type | 1 method | no field | com.google.common.base.PredicatesTest .testSubtypeOf_equality() |
noneDeclared() | no type | 1 method | no field | com.google.common.base.ThrowablesTest$1 .noneDeclared() |
noneDeclared() | no type | 1 method | no field | com.google.common.base.ThrowablesTest$12 .noneDeclared() |
noneDeclared() | no type | 1 method | no field | com.google.common.base.ThrowablesTest$13 .noneDeclared() |
noneDeclared() | no type | 1 method | no field | com.google.common.base.ThrowablesTest$14 .noneDeclared() |
noneDeclared() | no type | 1 method | no field | com.google.common.base.ThrowablesTest$15 .noneDeclared() |
oneDeclared() | no type | 2 methods | no field | com.google.common.base.ThrowablesTest$17 .oneDeclared() |
oneDeclared() | no type | 2 methods | no field | com.google.common.base.ThrowablesTest$18 .oneDeclared() |
oneDeclared() | no type | 2 methods | no field | com.google.common.base.ThrowablesTest$19 .oneDeclared() |
noneDeclared() | no type | 1 method | no field | com.google.common.base.ThrowablesTest$2 .noneDeclared() |
oneDeclared() | no type | 2 methods | no field | com.google.common.base.ThrowablesTest$20 .oneDeclared() |
noneDeclared() | no type | 1 method | no field | com.google.common.base.ThrowablesTest$3 .noneDeclared() |
testPropageIfPossible_null() | no type | 1 method | no field | com.google.common.base.ThrowablesTest .testPropageIfPossible_null() |
testPropageIfInstanceOf_null() | no type | 1 method | no field | com.google.common.base.ThrowablesTest .testPropageIfInstanceOf_null() |
testLoadingCache() | no type | 1 method | no field | com.google.common.cache .CacheBuilderGwtTest.testLoadingCache() |
testApply() | no type | 1 method | no field | com.google.common.cache .ForwardingLoadingCacheTest.testApply() |
testTrimToSize() | no type | 1 method | no field | com.google.common.collect .ArrayListMultimapTest.testTrimToSize() |
testCompareBooleans() | no type | 1 method | no field | com.google.common.collect .ComparisonChainTest.testCompareBooleans () |
testOfArrayAndIteratorRemove() | no type | 1 method | no field | com.google.common.collect .FluentIterableTest .testOfArrayAndIteratorRemove() |
testFrom_alreadyFluentIterable() | no type | 1 method | no field | com.google.common.collect .FluentIterableTest .testFrom_alreadyFluentIterable() |
testOfArray() | no type | 1 method | no field | com.google.common.collect .FluentIterableTest.testOfArray() |
testBuilder_orderEntriesByValueFails() | no type | 1 method | no field | com.google.common.collect .ImmutableSortedMapTest$CreationTests .testBuilder_orderEntriesByValueFails() |
testBuilderMethod() | no type | 1 method | no field | com.google.common.collect .ImmutableSortedSetTest .testBuilderMethod() |
testUnmodifiableIterableShortCircuit() | no type | 1 method | no field | com.google.common.collect.IterablesTest .testUnmodifiableIterableShortCircuit() |
testUnmodifiableIteratorShortCircuit() | no type | 1 method | no field | com.google.common.collect.IteratorsTest .testUnmodifiableIteratorShortCircuit() |
testPeekingIteratorShortCircuit() | no type | 1 method | no field | com.google.common.collect.IteratorsTest .testPeekingIteratorShortCircuit() |
testUnmodifiableListMultimapShortCircuit () | no type | 1 method | no field | com.google.common.collect.MultimapsTest .testUnmodifiableListMultimapShortCircui t() |
testUnmodifiableSetMultimapShortCircuit( ) | no type | 1 method | no field | com.google.common.collect.MultimapsTest .testUnmodifiableSetMultimapShortCircuit () |
testUnmodifiableMultimapShortCircuit() | no type | 1 method | no field | com.google.common.collect.MultimapsTest .testUnmodifiableMultimapShortCircuit() |
testUnmodifiableMultisetShortCircuit() | no type | 1 method | no field | com.google.common.collect.MultisetsTest .testUnmodifiableMultisetShortCircuit() |
testBinarySearch() | no type | 1 method | no field | com.google.common.collect .OrderingTest$Scenario.testBinarySearch( ) |
testFrom() | no type | 1 method | no field | com.google.common.collect.OrderingTest .testFrom() |
testBinarySearch() | no type | 1 method | no field | com.google.common.collect.OrderingTest .testBinarySearch() |
testNewSetFromMap() | no type | 1 method | no field | com.google.common.collect.SetsTest .testNewSetFromMap() |
testNewSetFromMapSerialization() | no type | 1 method | no field | com.google.common.collect.SetsTest .testNewSetFromMapSerialization() |
testNewSetFromMapIllegal() | no type | 1 method | no field | com.google.common.collect.SetsTest .testNewSetFromMapIllegal() |
testStream_collection() | no type | 1 method | no field | com.google.common.collect.StreamsTest .testStream_collection() |
testRowComparator() | no type | 1 method | no field | com.google.common.collect .TreeBasedTableTest.testRowComparator() |
testColumnComparator() | no type | 1 method | no field | com.google.common.collect .TreeBasedTableTest.testColumnComparator () |
testMultimapCreateFromTreeMultimap() | no type | 1 method | no field | com.google.common.collect .TreeMultimapExplicitTest .testMultimapCreateFromTreeMultimap() |
testGetComparator() | no type | 1 method | no field | com.google.common.collect .TreeMultimapExplicitTest .testGetComparator() |
testMultimapComparators() | no type | 1 method | no field | com.google.common.collect .TreeMultimapExplicitTest .testMultimapComparators() |
testExplicitComparatorSerialization() | no type | 1 method | no field | com.google.common.collect .TreeMultimapExplicitTest .testExplicitComparatorSerialization() |
testCreateFromTreeMultimap() | no type | 1 method | no field | com.google.common.collect .TreeMultimapNaturalTest .testCreateFromTreeMultimap() |
testCreateFromHashMultimap() | no type | 1 method | no field | com.google.common.collect .TreeMultimapNaturalTest .testCreateFromHashMultimap() |
testCreateFromSortedSetMultimap() | no type | 1 method | no field | com.google.common.collect .TreeMultimapNaturalTest .testCreateFromSortedSetMultimap() |
testComparators() | no type | 1 method | no field | com.google.common.collect .TreeMultimapNaturalTest.testComparators () |
testExplicitComparatorSerialization() | no type | 1 method | no field | com.google.common.collect .TreeMultimapNaturalTest .testExplicitComparatorSerialization() |
testTreeMultimapDerived() | no type | 1 method | no field | com.google.common.collect .TreeMultimapNaturalTest .testTreeMultimapDerived() |
testTreeMultimapNonGeneric() | no type | 1 method | no field | com.google.common.collect .TreeMultimapNaturalTest .testTreeMultimapNonGeneric() |
checkSanity(BloomFilter) | no type | 1 method | no field | com.google.common.hash.BloomFilterTest .checkSanity(BloomFilter) |
testRoundTripHashCodeUsingBaseEncoding() | no type | 1 method | no field | com.google.common.hash.HashCodeTest .testRoundTripHashCodeUsingBaseEncoding( ) |
testRoundTripHashCodeUsingFromString() | no type | 1 method | no field | com.google.common.hash.HashCodeTest .testRoundTripHashCodeUsingFromString() |
testFromStringFailsWithUpperCaseString() | no type | 1 method | no field | com.google.common.hash.HashCodeTest .testFromStringFailsWithUpperCaseString( ) |
HashFunctionEnum() | no type | 2 methods | no field | com.google.common.hash.HashFunctionEnum .HashFunctionEnum() |
testHash_hashesCorrectly() | no type | 1 method | no field | com.google.common.hash .HashingInputStreamTest .testHash_hashesCorrectly() |
testHash_hashesCorrectlyReadOutOfBound() | no type | 1 method | no field | com.google.common.hash .HashingInputStreamTest .testHash_hashesCorrectlyReadOutOfBound( ) |
testHash_hashesCorrectlyForSkipping() | no type | 1 method | no field | com.google.common.hash .HashingInputStreamTest .testHash_hashesCorrectlyForSkipping() |
testChecksForNull() | no type | 1 method | no field | com.google.common.hash .HashingInputStreamTest .testChecksForNull() |
Statistics
Stat | obsoleteTypesUsed | obsoleteMethodsUsed | obsoleteFieldsUsed |
---|---|---|---|
Sum: | 0 | 174 | 14 |
Average: | 0 | 1.1 | 0.089 |
Minimum: | 0 | 0 | 0 |
Maximum: | 0 | 2 | 14 |
Standard deviation: | 0 | 0.32 | 1.11 |
Variance: | 0 | 0.1 | 1.23 |
Architecture | 130 |
Rule Violated: Projects with poor cohesion (RelationalCohesion) |
• How to Fix Issues: Matches of this present rule might reveal either Projects with specific coding constraints (like code generated that have particular structure) either issues in design. In the second case, large refactoring can be planned not to respect this rule in particular, but to increase the overall design and code maintainability. The severity of issues of this rule is Info because the code metric Relational Cohesion is an information about the code structure state but is not actionable, it doesn't tell precisely what to do obtain a better score. Fixing actionable issues of others Architecture and Code Quality default rules will necessarily increase the Relational Cohesion scores.
1 project matched
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
1 project | ChildTypes | relationalCohesion | Relational cohesion | Debt | Severity | Full Name |
---|---|---|---|---|---|---|
guava | 1 878 types | 4.21 | 4.17 | 10min | Low | guava |
Rule Violated: Packages with poor cohesion (RelationalCohesion) |
• How to Fix Issues: Matches of this present rule might reveal either packages with specific coding constraints (like code generated that have particular structure) either issues in design. In the second case, refactoring sessions can be planned to increase the overall design and code maintainability. The severity of issues of this rule is Info because the code metric Relational Cohesion is an information about the code structure state but is not actionable, it doesn't tell precisely what to do obtain a better score. Fixing actionable issues of others Architecture and Code Quality default rules will necessarily increase the Relational Cohesion scores.
13 namespaces matched
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
13 namespaces | ChildTypes | relationalCohesion | Debt | Severity | Full Name |
---|---|---|---|---|---|
com.google.common.primitives | 57 types | 1.27 | 10min | Low | com.google.common.primitives |
com.google.common.collect.testing .features | 29 types | 1.18 | 10min | Low | com.google.common.collect.testing .features |
com.google.common.collect.testing.google | 187 types | 1.06 | 10min | Low | com.google.common.collect.testing.google |
com.google.common.collect.testing .testers | 101 types | 0.55 | 10min | Low | com.google.common.collect.testing .testers |
com.google.common.testing | 372 types | 1.48 | 10min | Low | com.google.common.testing |
com.google.common.collect | 993 types | 1.31 | 10min | Low | com.google.common.collect |
com.google.common.escape | 21 types | 1.14 | 10min | Low | com.google.common.escape |
com.google.common.graph | 38 types | 1.22 | 10min | Low | com.google.common.graph |
com.google.common.hash | 75 types | 0.91 | 10min | Low | com.google.common.hash |
com.google.common.math | 57 types | 0.93 | 10min | Low | com.google.common.math |
com.google.common.primitives | 116 types | 1.47 | 10min | Low | com.google.common.primitives |
com.google.common.eventbus | 39 types | 1.26 | 10min | Low | com.google.common.eventbus |
com.google.common.eventbus.outside | 22 types | 1.36 | 10min | Low | com.google.common.eventbus.outside |
Rule Violated: Projects that don't satisfy the Abstractness/Instability principle |
• How to Fix Issues: Violations of this rule indicate Projects with an improper abstractness / stability balance. • Either the project is potentially painful to maintain (i.e is massively used and contains mostly concrete types). This can be fixed by creating abstractions to avoid too high coupling with concrete implementations. • Either the project is potentially useless (i.e contains mostly abstractions and is not used enough). In such situation, the design must be reviewed to see if it can be enhanced. The severity of issues of this rule is Info because the Abstractness/Instability principle is an information about the code structure state but is not actionable, it doesn't tell precisely what to do obtain a better score. Fixing actionable issues of others Architecture and Code Quality default rules will necessarily push the Abstractness/Instability principle scores in the right direction.
1 project matched
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
1 project | Normalized dist from main seq | Debt | Severity | Full Name |
---|---|---|---|---|
guava | 0.72 |