It is recommended to use the NDepend interactive UI capabilities
to make the most of NDepend by mastering all aspects of your code.
Diagrams
Application Metrics
Note: Further Application Statistics are available.
|
Quality Gates summary
614
can be stopped upon quality gate
failure. Online documentation.

be run on the baseline. Hence they
have blank trend and baseline value.
Name | Trend | Baseline Value | Value | Group | |||
---|---|---|---|---|---|---|---|
| ![]() | ![]() | ![]() | Project Rules \ Quality Gates | |||
| ![]() | Project Rules \ Quality Gates | |||||
| ![]() | Project Rules \ Quality Gates | |||||
| ![]() | ![]() | ![]() | Project Rules \ Quality Gates | |||
| ![]() | ![]() | ![]() | Project Rules \ Quality Gates | |||
| ![]() | Project Rules \ Quality Gates | |||||
| ![]() | ![]() | ![]() | Project Rules \ Quality Gates | |||
| ![]() | ![]() | ![]() | Project Rules \ Quality Gates | |||
| ![]() | Project Rules \ Quality Gates | |||||
| ![]() | ![]() | ![]() | Project Rules \ Quality Gates | |||
| ![]() | Project Rules \ Quality Gates |
Rules summary
89576- Number of Rules or Queries with Error (syntax error, exception thrown, time-out): 0
- Number of Rules violated: 63

development-time, from within Visual
Studio. Online documentation.

run on the baseline. Hence they
have blank # Issues Fixed or Added.
Application Statistics
Stat | # Occurences | Avg | StdDev | Max |
---|---|---|---|---|
Properties on interfaces | 12 interfaces | 0.75 | 1.42 | 5 properties on NodaTime.TimeZones.IO.ITzdbDataSource |
Methods on interfaces | 12 interfaces | 3.25 | 2.31 | 7 methods on NodaTime.TimeZones.IO.IDateTimeZoneReader |
Arguments on methods on interfaces | 39 methods | 0.72 | 0.71 | 2 arguments on NodaTime.TimeZones.IO.IDateTimeZoneWriter.WriteZoneIntervalTransition(Nullable<Instant>,Instant) |
Public properties on classes | 172 Classes | 1.01 | 2.54 | 21 public properties on NodaTime.Globalization.NodaFormatInfo |
Public methods on classes | 172 classes | 3.2 | 5.27 | 38 public methods on NodaTime.Period |
Arguments on public methods on classes | 550 methods | 0.82 | 0.95 | 6 arguments on NodaTime.TimeZones.SkippedTimeResolver.BeginInvoke(LocalDateTime,DateTimeZone,ZoneInterval,ZoneInterval,AsyncCallback,Object) |
IL instructions in non-abstract methods | 1,848 methods | 23.73 | 39 | 505 IL instructions in NodaTime.CalendarSystem..cctor() |
Cyclomatic complexity on non abstract Methods | 1,848 Methods | 2.26 | 3.67 | CC = 40 for NodaTime.Calendars.GJYearMonthDayCalculator.GetMonthOfYear(LocalInstant,Int32) |
Assemblies Metrics
Clicking column header arrows sorts values.
Clicking column header title text redirect to the online Code Metric definition.
Assemblies | # lines of code | # IL instruction | # Types | # Abstract Types | # lines of comment | % Comment | % Coverage | Afferent Coupling | Efferent Coupling | Relational Cohesion | Instability | Abstractness | Distance |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
NodaTime v1.3.0.0 | 5839 | 43862 | 211 | 22 | 11243 | 65.82 | 89.59 | 0 | 121 | 5.96 | 1 | 0.1 | 0.07 |
If you wish to define thresholds on types' Code Metrics, consider writing some Rule.
Clicking column header arrows sorts values.
Clicking column header title text redirect to the online Code Metric definition.
Types Metrics : Code Quality
Type Name | Type Rank | # Lines Of Code | # IL Instructions | # Lines Of Comment | % Comment | Cyclomatic Complexity | IL Cyclomatic Complexity | % Coverage | Afferent Coupling | Efferent Coupling | Type Namespace |
---|---|---|---|---|---|---|---|---|---|---|---|
Instant | 6.13 | 67 | 568 | 344 | 83.7 | 52 | 56 | 98.51 | 41 | 42 | NodaTime |
ParseResult<T> | 5.81 | 70 | 765 | 69 | 49.64 | 59 | 65 | 90 | 51 | 25 | NodaTime.Text |
InvokerParameterNameAttribute | 4.81 | 0 | 4 | 0 | - | 0 | 1 | - | 61 | 3 | JetBrains.Annotations |
Preconditions | 4.45 | 18 | 173 | 7 | 28 | 18 | 18 | 66.67 | 60 | 13 | NodaTime.Utility |
LocalInstant | 3.92 | 35 | 299 | 168 | 82.76 | 28 | 30 | 82.86 | 32 | 21 | NodaTime |
Offset | 3.19 | 53 | 432 | 282 | 84.18 | 43 | 47 | 98.11 | 39 | 30 | NodaTime |
NotNullAttribute | 3.02 | 0 | 4 | 0 | - | 0 | 1 | - | 33 | 3 | JetBrains.Annotations |
IPattern<T> | 2.89 | - | - | 14 | 100 | 0 | - | - | 30 | 2 | NodaTime.Text |
ZoneInterval | 2.67 | 40 | 378 | 119 | 74.84 | 35 | 40 | 97.5 | 21 | 17 | NodaTime.TimeZones |
LocalDateTime | 2.61 | 136 | 1139 | 539 | 79.85 | 93 | 102 | 97.06 | 31 | 47 | NodaTime |
NodaFormatInfo | 2.54 | 106 | 774 | 164 | 60.74 | 66 | 82 | 98.11 | 29 | 55 | NodaTime.Globalization |
ImmutableAttribute | 2.46 | 0 | 4 | 0 | - | 0 | 1 | - | 25 | 3 | NodaTime.Annotations |
DateTimeZone | 2.3 | 115 | 815 | 273 | 70.36 | 56 | 82 | 97.39 | 27 | 40 | NodaTime |
ZonedDateTime | 1.93 | 108 | 1011 | 383 | 78 | 81 | 83 | 99.07 | 19 | 55 | NodaTime |
PatternFields | 1.84 | - | - | 1 | 100 | 0 | - | - | 21 | 7 | NodaTime.Text.Patterns |
Era | 1.76 | 13 | 59 | 34 | 72.34 | 5 | 5 | 100 | 22 | 5 | NodaTime.Calendars |
ValueCursor | 1.63 | 102 | 664 | 81 | 44.26 | 49 | 70 | 98.04 | 18 | 13 | NodaTime.Text |
ParseBucket<T> | 1.55 | 2 | 24 | 16 | 88.89 | 2 | 3 | 100 | 15 | 6 | NodaTime.Text |
Duration | 1.54 | 60 | 456 | 322 | 84.29 | 46 | 48 | 96.67 | 17 | 29 | NodaTime |
YearMonthDayCalculator | 1.52 | 82 | 541 | 98 | 54.44 | 40 | 49 | 100 | 14 | 14 | NodaTime.Calendars |
PatternBclSupport<T> | 1.39 | 8 | 39 | 0 | 0 | 3 | 3 | 100 | 16 | 9 | NodaTime.Text.Patterns |
MutableAttribute | 1.34 | 0 | 4 | 0 | - | 0 | 1 | - | 8 | 3 | NodaTime.Annotations |
OffsetDateTime | 1.3 | 63 | 557 | 203 | 76.32 | 46 | 48 | 98.41 | 12 | 46 | NodaTime |
IZoneIntervalMap | 1.3 | - | - | 0 | - | 0 | - | - | 13 | 2 | NodaTime.TimeZones |
CalendarSystem | 1.27 | 147 | 1205 | 371 | 71.62 | 99 | 102 | 95.92 | 18 | 44 | NodaTime |
IPeriodField | 1.24 | - | - | 23 | 100 | 0 | - | - | 9 | 2 | NodaTime.Fields |
FixedFormatInfoPatternParser<T> | 1.13 | 4 | 41 | 2 | 33.33 | 3 | 4 | 100 | 11 | 13 | NodaTime.Text |
LocalTime | 1.12 | 83 | 740 | 287 | 77.57 | 50 | 52 | 96.39 | 18 | 34 | NodaTime |
TextCursor | 1.11 | 40 | 262 | 58 | 59.18 | 21 | 27 | 91.67 | 16 | 9 | NodaTime.Text |
PureAttribute | 1.04 | 0 | 4 | 0 | - | 0 | 1 | - | 11 | 3 | JetBrains.Annotations |
LocalDate | 1 | 77 | 669 | 344 | 81.71 | 56 | 58 | 94.81 | 17 | 36 | NodaTime |
HashCodeHelper | 0.99 | 7 | 43 | 23 | 76.67 | 4 | 4 | 100 | 13 | 3 | NodaTime.Utility |
RegularYearMonthDayCalculator | 0.96 | 34 | 217 | 16 | 32 | 11 | 16 | 94.12 | 8 | 11 | NodaTime.Calendars |
Messages | 0.93 | 76 | 658 | 214 | 73.79 | 74 | 74 | - | 13 | 13 | NodaTime.Properties |
TimeOfDayCalculator | 0.79 | 39 | 365 | 6 | 13.33 | 23 | 25 | 89.74 | 8 | 14 | NodaTime.Calendars |
IPartialPattern<T> | 0.78 | - | - | 12 | 100 | 0 | - | - | 14 | 5 | NodaTime.Text |
LocalDateTimePattern | 0.78 | 28 | 198 | 116 | 80.56 | 21 | 22 | 78.57 | 5 | 20 | NodaTime.Text |
IDateTimeZoneReader | 0.78 | - | - | 45 | 100 | 0 | - | - | 12 | 7 | NodaTime.TimeZones.IO |
Period | 0.77 | 218 | 1499 | 353 | 61.82 | 112 | 114 | 97.71 | 9 | 37 | NodaTime |
IsoDayOfWeek | 0.73 | - | - | 26 | 100 | 0 | - | - | 9 | 6 | NodaTime |
NodaConstants | 0.67 | 2 | 12 | 91 | 97.85 | 1 | 1 | 100 | 4 | 5 | NodaTime |
IDateTimeZoneWriter | 0.66 | - | - | 46 | 100 | 0 | - | - | 10 | 9 | NodaTime.TimeZones.IO |
PeriodFieldSet+Builder | 0.65 | 33 | 136 | 0 | 0 | 23 | 23 | 100 | 3 | 9 | NodaTime.Fields |
IDateTimeZoneSource | 0.64 | - | - | 60 | 100 | 0 | - | - | 5 | 5 | NodaTime.TimeZones |
PatternCursor | 0.62 | 37 | 246 | 30 | 44.78 | 20 | 28 | 97.3 | 11 | 11 | NodaTime.Text.Patterns |
DateTimeZoneCache | 0.62 | 44 | 262 | 19 | 30.16 | 17 | 20 | 86.36 | 3 | 28 | NodaTime.TimeZones |
InstantPattern | 0.61 | 36 | 246 | 109 | 75.17 | 21 | 24 | 86.11 | 3 | 19 | NodaTime.Text |
InvalidPatternException | 0.61 | 4 | 27 | 18 | 81.82 | 4 | 4 | 50 | 11 | 11 | NodaTime.Text |
IPatternParser<T> | 0.61 | - | - | 0 | - | 0 | - | - | 10 | 3 | NodaTime.Text.Patterns |
SteppedPatternBuilder<TResult ,TBucket> | 0.58 | 137 | 1111 | 81 | 37.16 | 76 | 109 | 100 | 10 | 37 | NodaTime.Text.Patterns |
PeriodFieldSet | 0.58 | 19 | 104 | 3 | 13.64 | 10 | 10 | 100 | 5 | 4 | NodaTime.Fields |
TickArithmetic | 0.57 | 2 | 31 | 13 | 86.67 | 3 | 4 | 100 | 4 | 3 | NodaTime.Calendars |
InvalidNodaDataException | 0.55 | 2 | 13 | 9 | 81.82 | 2 | 2 | 50 | 8 | 6 | NodaTime.Utility |
IDateTimeZoneProvider | 0.55 | - | - | 107 | 100 | 0 | - | - | 7 | 5 | NodaTime |
DurationPattern | 0.53 | 19 | 119 | 70 | 78.65 | 13 | 13 | 78.95 | 3 | 17 | NodaTime.Text |
GJYearMonthDayCalculator | 0.53 | 37 | 421 | 17 | 31.48 | 45 | 69 | 100 | 3 | 17 | NodaTime.Calendars |
ZonedDateTime+Comparer | 0.53 | 3 | 17 | 49 | 94.23 | 3 | 3 | 0 | 3 | 7 | NodaTime |
LocalDatePattern | 0.52 | 25 | 178 | 102 | 80.31 | 18 | 19 | 88 | 3 | 20 | NodaTime.Text |
YearStartCacheEntry | 0.52 | 12 | 84 | 30 | 71.43 | 8 | 9 | 100 | 2 | 5 | NodaTime.Calendars |
OffsetDateTime+Comparer | 0.52 | 3 | 17 | 47 | 94 | 3 | 3 | 100 | 3 | 7 | NodaTime |
ContractAnnotationAttribute | 0.51 | 8 | 34 | 0 | 0 | 6 | 6 | 0 | 1 | 8 | JetBrains.Annotations |
StringFormatMethodAttribute | 0.51 | 4 | 16 | 3 | 42.86 | 3 | 3 | 0 | 1 | 6 | JetBrains.Annotations |
TzdbZoneLocation | 0.5 | 30 | 160 | 44 | 59.46 | 10 | 10 | 73.33 | 5 | 14 | NodaTime.TimeZones |
WindowsZones | 0.5 | 47 | 282 | 75 | 61.48 | 17 | 27 | 72.34 | 5 | 27 | NodaTime.TimeZones.Cldr |
LocalDatePatternParser+LocalDatePa rseBucket | 0.49 | 73 | 506 | 16 | 17.98 | 37 | 54 | 94.52 | 8 | 23 | NodaTime.Text |
HebrewScripturalCalculator | 0.48 | 69 | 543 | 46 | 40 | 50 | 63 | 100 | 2 | 6 | NodaTime.Calendars |
CharacterHandler<TResult,TBucket> | 0.48 | - | - | - | - | - | - | - | 10 | 9 | NodaTime.Text |
LocalTimePattern | 0.48 | 24 | 173 | 103 | 81.1 | 18 | 19 | 87.5 | 2 | 19 | NodaTime.Text |
ZoneLocalMapping | 0.47 | 27 | 179 | 45 | 62.5 | 22 | 24 | 77.78 | 4 | 15 | NodaTime.TimeZones |
LocalTimePatternParser+LocalTimePa rseBucket | 0.46 | 31 | 247 | 25 | 44.64 | 17 | 24 | 100 | 7 | 10 | NodaTime.Text |
ZoneLocalMappingResolver | 0.46 | - | - | - | - | - | - | - | 6 | 8 | NodaTime.TimeZones |
FixedDateTimeZone | 0.44 | 31 | 209 | 54 | 63.53 | 18 | 22 | 90.32 | 6 | 23 | NodaTime.TimeZones |
ImplicitUseKindFlags | 0.44 | - | - | 7 | 100 | 0 | - | - | 2 | 7 | JetBrains.Annotations |
ImplicitUseTargetFlags | 0.44 | - | - | 2 | 100 | 0 | - | - | 2 | 7 | JetBrains.Annotations |
LegacyDateTimeZoneReader | 0.43 | 105 | 616 | 105 | 50 | 38 | 46 | 80 | 6 | 23 | NodaTime.TimeZones.IO |
TzdbDateTimeZoneSource | 0.43 | 92 | 742 | 169 | 64.75 | 49 | 73 | 54.35 | 2 | 55 | NodaTime.TimeZones |
YearMonthDay | 0.43 | 6 | 32 | 0 | 0 | 4 | 4 | 100 | 2 | 4 | NodaTime.Calendars |
OffsetDateTimePattern | 0.42 | 26 | 186 | 120 | 82.19 | 19 | 19 | 65.38 | 5 | 17 | NodaTime.Text |
OffsetPattern | 0.41 | 21 | 127 | 76 | 78.35 | 13 | 13 | 80.95 | 5 | 17 | NodaTime.Text |
SkippedTimeException | 0.4 | 5 | 35 | 15 | 75 | 3 | 3 | 100 | 4 | 10 | NodaTime |
LegacyDateTimeZoneWriter | 0.39 | 117 | 764 | 97 | 45.33 | 45 | 61 | 0 | 5 | 32 | NodaTime.TimeZones.IO |
CachingZoneIntervalMap+CacheType | 0.39 | - | - | 0 | - | 0 | - | - | 3 | 6 | NodaTime.TimeZones |
ZonedDateTime+LocalComparer | 0.39 | 3 | 26 | 1 | 25 | 3 | 3 | 0 | 2 | 8 | NodaTime |
ZonedDateTime+InstantComparer | 0.39 | 3 | 20 | 1 | 25 | 3 | 3 | 0 | 2 | 7 | NodaTime |
OffsetDateTime+LocalComparer | 0.39 | 3 | 26 | 1 | 25 | 3 | 3 | 100 | 2 | 8 | NodaTime |
OffsetDateTime+InstantComparer | 0.39 | 3 | 20 | 1 | 25 | 3 | 3 | 100 | 2 | 7 | NodaTime |
CachingZoneIntervalMap+HashArrayCa che+HashCacheNode | 0.38 | 15 | 84 | 14 | 48.28 | 6 | 7 | 100 | 2 | 8 | NodaTime.TimeZones |
UnparsableValueException | 0.38 | 3 | 18 | 12 | 80 | 3 | 3 | 33.33 | 1 | 7 | NodaTime.Text |
SteppedPatternBuilder<TResult ,TBucket>+ParseAction | 0.38 | - | - | - | - | - | - | - | 6 | 9 | NodaTime.Text.Patterns |
PeriodUnits | 0.36 | - | - | 48 | 100 | 0 | - | - | 4 | 7 | NodaTime |
PeriodPattern | 0.36 | 13 | 99 | 34 | 72.34 | 9 | 10 | 100 | 4 | 18 | NodaTime.Text |
Cache<TKey,TValue> | 0.35 | 24 | 152 | 17 | 41.46 | 7 | 11 | 100 | 2 | 12 | NodaTime.Utility |
Interval | 0.34 | 38 | 272 | 97 | 71.85 | 23 | 27 | 97.37 | 3 | 27 | NodaTime |
FormatHelper | 0.34 | 111 | 748 | 59 | 34.71 | 38 | 53 | 99.1 | 4 | 10 | NodaTime.Text |
ITzdbDataSource | 0.34 | - | - | 26 | 100 | 0 | - | - | 4 | 6 | NodaTime.TimeZones.IO |
PartialZoneIntervalMap | 0.34 | 44 | 289 | 46 | 51.11 | 20 | 25 | 100 | 3 | 17 | NodaTime.TimeZones |
BclDateTimeZoneSource | 0.33 | 15 | 112 | 48 | 76.19 | 10 | 15 | 73.33 | 1 | 23 | NodaTime.TimeZones |
Resolvers | 0.33 | 31 | 179 | 50 | 61.73 | 13 | 15 | 100 | 3 | 22 | NodaTime.TimeZones |
AmbiguousTimeException | 0.33 | 9 | 75 | 26 | 74.29 | 5 | 5 | 100 | 3 | 14 | NodaTime |
DaylightSavingsDateTimeZone | 0.32 | 62 | 414 | 60 | 49.18 | 19 | 21 | 77.42 | 4 | 23 | NodaTime.TimeZones |
ZonedDateTimePattern | 0.32 | 31 | 269 | 146 | 82.49 | 24 | 27 | 61.29 | 3 | 21 | NodaTime.Text |
TimePatternHelper | 0.32 | 109 | 1027 | 46 | 29.68 | 57 | 99 | 100 | 6 | 24 | NodaTime.Text.Patterns |
GregorianYearMonthDayCalculator | 0.31 | 32 | 273 | 11 | 25.58 | 20 | 25 | 100 | 2 | 9 | NodaTime.Calendars |
FixedDurationPeriodField | 0.31 | 26 | 147 | 12 | 31.58 | 9 | 12 | 100 | 2 | 10 | NodaTime.Fields |
TzdbStreamData | 0.31 | 49 | 335 | 13 | 20.97 | 25 | 33 | 89.8 | 3 | 35 | NodaTime.TimeZones.IO |
PeriodBuilder | 0.31 | 75 | 388 | 49 | 39.52 | 46 | 52 | 98.25 | 3 | 20 | NodaTime |
OffsetDateTimePattern+Patterns | 0.29 | 6 | 30 | 0 | 0 | 2 | 2 | 100 | 3 | 11 | NodaTime.Text |
CachingZoneIntervalMap+HashArrayCa che | 0.29 | 12 | 75 | 20 | 62.5 | 5 | 7 | 100 | 1 | 12 | NodaTime.TimeZones |
ZoneYearOffset | 0.29 | 112 | 916 | 131 | 53.91 | 66 | 77 | 89.29 | 3 | 26 | NodaTime.TimeZones |
DateTimeZoneReader | 0.29 | 80 | 466 | 76 | 48.72 | 32 | 40 | 92.5 | 3 | 20 | NodaTime.TimeZones.IO |
TzdbStreamFieldId | 0.29 | - | - | 25 | 100 | 0 | - | - | 3 | 6 | NodaTime.TimeZones.IO |
LocalDateTimePatternParser+LocalDa teTimeParseBucket | 0.29 | 21 | 115 | 9 | 30 | 8 | 9 | 100 | 3 | 13 | NodaTime.Text |
LocalDateTimePatternParser | 0.28 | 64 | 592 | 5 | 7.25 | 53 | 57 | 93.75 | 2 | 39 | NodaTime.Text |
IClock | 0.28 | - | - | 3 | 100 | 0 | - | - | 1 | 1 | NodaTime |
InstantPatternParser | 0.28 | 16 | 104 | 2 | 11.11 | 8 | 9 | 93.75 | 2 | 22 | NodaTime.Text |
OffsetDateTimePatternParser | 0.28 | 65 | 594 | 5 | 7.14 | 50 | 53 | 96.92 | 2 | 45 | NodaTime.Text |
UsedImplicitlyAttribute | 0.28 | 10 | 48 | 0 | 0 | 8 | 8 | 0 | 1 | 7 | JetBrains.Annotations |
ZoneIntervalPair | 0.28 | 20 | 158 | 39 | 66.1 | 17 | 26 | 55 | 2 | 12 | NodaTime.TimeZones |
PrecalculatedDateTimeZone | 0.28 | 145 | 912 | 70 | 32.56 | 44 | 66 | 66.21 | 3 | 30 | NodaTime.TimeZones |
CachedDateTimeZone | 0.28 | 16 | 107 | 30 | 65.22 | 10 | 12 | 68.75 | 3 | 17 | NodaTime.TimeZones |
ZonedDateTimePattern+Patterns | 0.27 | 4 | 18 | 0 | 0 | 2 | 2 | 100 | 3 | 12 | NodaTime.Text |
LocalTimePatternParser | 0.27 | 39 | 351 | 8 | 17.02 | 31 | 32 | 92.31 | 2 | 30 | NodaTime.Text |
LocalDatePatternParser | 0.27 | 36 | 298 | 13 | 26.53 | 28 | 29 | 94.44 | 2 | 32 | NodaTime.Text |
PatternResources | 0.27 | 17 | 127 | 37 | 68.52 | 15 | 15 | - | 2 | 13 | NodaTime.Properties |
ZoneEqualityComparer+Options | 0.27 | - | - | 26 | 100 | 0 | - | - | 2 | 7 | NodaTime.TimeZones |
IslamicLeapYearPattern | 0.27 | - | - | 16 | 100 | 0 | - | - | 2 | 6 | NodaTime.Calendars |
IslamicEpoch | 0.27 | - | - | 6 | 100 | 0 | - | - | 2 | 6 | NodaTime.Calendars |
DatePatternHelper | 0.26 | 103 | 891 | 46 | 30.87 | 61 | 87 | 100 | 4 | 35 | NodaTime.Text.Patterns |
ZonedDateTimePatternParser | 0.26 | 77 | 706 | 5 | 6.1 | 55 | 60 | 97.4 | 2 | 49 | NodaTime.Text |
DurationPattern+Patterns | 0.26 | 1 | 4 | 0 | 0 | 1 | 1 | 100 | 2 | 4 | NodaTime.Text |
LocalDateTimePattern+Patterns | 0.26 | 4 | 13 | 0 | 0 | 1 | 1 | 100 | 2 | 4 | NodaTime.Text |
FixedMonthYearMonthDayCalculator | 0.26 | 21 | 196 | 6 | 22.22 | 13 | 15 | 47.62 | 1 | 14 | NodaTime.Calendars |
SingleZoneIntervalMap | 0.25 | 3 | 15 | 0 | 0 | 2 | 2 | 100 | 2 | 5 | NodaTime.TimeZones |
HebrewMonthNumbering | 0.25 | - | - | 19 | 100 | 0 | - | - | 2 | 6 | NodaTime.Calendars |
SteppedPatternBuilder<TResult ,TBucket >+IPostPatternParseFormatAction | 0.25 | - | - | - | - | - | - | - | 2 | 4 | NodaTime.Text.Patterns |
CachingZoneIntervalMap | 0.25 | 3 | 18 | 20 | 86.96 | 3 | 4 | 66.67 | 2 | 8 | NodaTime.TimeZones |
DateTimeZoneProviders+TzdbHolder | 0.25 | 1 | 5 | 1 | 50 | 1 | 1 | 100 | 1 | 6 | NodaTime |
DateTimeZoneProviders+BclHolder | 0.25 | 1 | 5 | 0 | 0 | 1 | 1 | 100 | 1 | 6 | NodaTime |
Transition | 0.25 | 17 | 175 | 36 | 67.92 | 12 | 13 | 47.06 | 2 | 9 | NodaTime.TimeZones |
DateTimeZoneWriter+ZoneIntervalCon stants | 0.24 | 1 | 8 | 11 | 91.67 | 1 | 1 | 100 | 2 | 4 | NodaTime.TimeZones.IO |
ZoneRecurrence | 0.24 | 93 | 678 | 95 | 50.53 | 43 | 49 | 80.65 | 2 | 25 | NodaTime.TimeZones |
TransitionMode | 0.24 | - | - | 9 | 100 | 0 | - | - | 2 | 6 | NodaTime.TimeZones |
TzdbStreamField | 0.24 | 21 | 236 | 4 | 16 | 9 | 28 | 100 | 2 | 22 | NodaTime.TimeZones.IO |
ZoneEqualityComparer | 0.23 | 40 | 412 | 89 | 68.99 | 22 | 53 | 88.46 | 1 | 28 | NodaTime.TimeZones |
VisibleForTestingAttribute | 0.23 | 0 | 4 | 0 | - | 0 | 1 | - | 2 | 3 | NodaTime.Annotations |
AbstractPattern<T> | 0.23 | 8 | 45 | 8 | 50 | 5 | 6 | 37.5 | 1 | 8 | NodaTime.Text.Patterns |
InstantPattern+Patterns | 0.22 | 2 | 7 | 0 | 0 | 1 | 1 | 100 | 1 | 4 | NodaTime.Text |
NodaReadOnlyDictionary<TKey,TValue > | 0.22 | 19 | 124 | 0 | 0 | 18 | 18 | 89.47 | 2 | 16 | NodaTime.Utility |
MapZone | 0.22 | 25 | 136 | 55 | 68.75 | 9 | 13 | 68 | 2 | 19 | NodaTime.TimeZones.Cldr |
DateTimeZoneWriter+DateTimeZoneTyp e | 0.22 | - | - | 0 | - | 0 | - | - | 2 | 6 | NodaTime.TimeZones.IO |
PartialZoneIntervalMap+CombinedPar tialZoneIntervalMap | 0.22 | 9 | 49 | 4 | 30.77 | 4 | 6 | 77.78 | 1 | 10 | NodaTime.TimeZones |
LocalTimePattern+Patterns | 0.22 | 1 | 4 | 0 | 0 | 1 | 1 | 100 | 1 | 4 | NodaTime.Text |
LocalDatePattern+Patterns | 0.22 | 1 | 4 | 0 | 0 | 1 | 1 | 100 | 1 | 4 | NodaTime.Text |
PeriodPattern+RoundtripPatternImpl | 0.22 | 61 | 326 | 11 | 15.28 | 25 | 33 | 98.36 | 1 | 18 | NodaTime.Text |
PeriodPattern+NormalizingIsoPatter nImpl | 0.22 | 91 | 532 | 19 | 17.27 | 39 | 49 | 97.8 | 1 | 20 | NodaTime.Text |
HebrewMonthConverter | 0.21 | 9 | 72 | 23 | 71.88 | 8 | 13 | 100 | 1 | 4 | NodaTime.Calendars |
DurationPatternParser | 0.21 | 44 | 588 | 10 | 18.52 | 29 | 43 | 95.45 | 1 | 38 | NodaTime.Text |
ReferenceEqualityComparer<T> | 0.21 | 2 | 27 | 0 | 0 | 3 | 5 | 100 | 1 | 6 | NodaTime.Utility |
OffsetPatternParser | 0.21 | 68 | 641 | 20 | 22.73 | 45 | 59 | 100 | 1 | 37 | NodaTime.Text |
NodaFormatInfo+EraDescription | 0.21 | 14 | 89 | 1 | 6.67 | 6 | 8 | 100 | 1 | 16 | NodaTime.Globalization |
SkippedTimeResolver | 0.2 | - | - | - | - | - | - | - | 1 | 10 | NodaTime.TimeZones |
AmbiguousTimeResolver | 0.2 | - | - | - | - | - | - | - | 1 | 7 | NodaTime.TimeZones |
InstantPatternParser+NumberPattern | 0.2 | 7 | 53 | 0 | 0 | 4 | 5 | 57.14 | 1 | 14 | NodaTime.Text |
InstantPatternParser+LocalDateTime PatternAdapter | 0.2 | 19 | 132 | 0 | 0 | 10 | 13 | 100 | 1 | 14 | NodaTime.Text |
BclDateTimeZone | 0.2 | 46 | 347 | 55 | 54.46 | 20 | 27 | 97.83 | 1 | 31 | NodaTime.TimeZones |
InvalidDateTimeZoneSourceException | 0.2 | 1 | 6 | 4 | 80 | 1 | 1 | 100 | 1 | 6 | NodaTime.TimeZones |
DateTimeZoneNotFoundException | 0.2 | 1 | 6 | 4 | 80 | 1 | 1 | 100 | 1 | 5 | NodaTime.TimeZones |
DateTimeZoneProviders | 0.2 | 8 | 61 | 30 | 78.95 | 7 | 9 | 100 | 1 | 11 | NodaTime |
YearsPeriodField | 0.19 | 13 | 99 | 8 | 38.1 | 6 | 9 | 100 | 1 | 11 | NodaTime.Fields |
CopticYearMonthDayCalculator | 0.19 | 9 | 69 | 7 | 43.75 | 4 | 5 | 100 | 1 | 10 | NodaTime.Calendars |
MonthsPeriodField | 0.19 | 6 | 47 | 2 | 25 | 5 | 6 | 83.33 | 1 | 10 | NodaTime.Fields |
WeekYearCalculator | 0.19 | 37 | 279 | 31 | 45.59 | 12 | 17 | 100 | 1 | 12 | NodaTime.Calendars |
PersianYearMonthDayCalculator | 0.19 | 40 | 326 | 23 | 36.51 | 26 | 39 | 82.5 | 1 | 11 | NodaTime.Calendars |
IsoYearMonthDayCalculator | 0.19 | 2 | 26 | 0 | 0 | 2 | 3 | 100 | 1 | 9 | NodaTime.Calendars |
JulianYearMonthDayCalculator | 0.19 | 9 | 72 | 7 | 43.75 | 5 | 6 | 100 | 1 | 8 | NodaTime.Calendars |
IslamicYearMonthDayCalculator | 0.19 | 52 | 376 | 45 | 46.39 | 35 | 50 | 96.15 | 1 | 15 | NodaTime.Calendars |
HebrewYearMonthDayCalculator | 0.19 | 87 | 600 | 48 | 35.56 | 40 | 53 | 98.85 | 1 | 18 | NodaTime.Calendars |
BclConversions | 0.19 | 6 | 51 | 18 | 75 | 8 | 12 | 100 | 1 | 7 | NodaTime.Utility |
Period+PeriodComparer | 0.19 | 11 | 83 | 2 | 15.38 | 9 | 9 | 100 | 1 | 10 | NodaTime |
Period+NormalizingPeriodEqualityCo mparer | 0.19 | 8 | 52 | 0 | 0 | 7 | 9 | 100 | 1 | 10 | NodaTime |
ZoneEqualityComparer+ZoneIntervalE qualityComparer | 0.19 | 25 | 205 | 7 | 21.88 | 17 | 25 | 100 | 1 | 13 | NodaTime.TimeZones |
PrecalculatedDateTimeZone+OffsetAg gregator | 0.19 | - | - | - | - | - | - | - | 1 | 7 | NodaTime.TimeZones |
PrecalculatedDateTimeZone+OffsetEx tractor<T> | 0.19 | - | - | - | - | - | - | - | 1 | 7 | NodaTime.TimeZones |
SteppedPatternBuilder<TResult ,TBucket>+SteppedPattern | 0.19 | 32 | 167 | 0 | 0 | 12 | 15 | 96.88 | 1 | 17 | NodaTime.Text.Patterns |
BclDateTimeZone+BclAdjustmentRule | 0.18 | 34 | 289 | 37 | 52.11 | 21 | 20 | 97.06 | 1 | 25 | NodaTime.TimeZones |
TzdbStreamData+Builder | 0.18 | 45 | 312 | 4 | 8.16 | 19 | 30 | 88.89 | 1 | 20 | NodaTime.TimeZones.IO |
DatePatternHelper+MonthFormatActio nHolder<TResult,TBucket> | 0.18 | 9 | 78 | 0 | 0 | 7 | 10 | 88.89 | 1 | 16 | NodaTime.Text.Patterns |
OffsetPatternParser+ZPrefixPattern | 0.18 | 11 | 86 | 0 | 0 | 9 | 13 | 100 | 1 | 12 | NodaTime.Text |
CompositePattern<T> | 0.18 | 24 | 139 | 0 | 0 | 11 | 19 | 100 | 1 | 16 | NodaTime.Text.Patterns |
OffsetPatternParser+OffsetParseBuc ket | 0.18 | 4 | 41 | 21 | 84 | 2 | 3 | 100 | 1 | 10 | NodaTime.Text |
OffsetPatternParser+NumberPattern | 0.18 | 24 | 180 | 2 | 7.69 | 12 | 17 | 75 | 1 | 17 | NodaTime.Text |
DurationPatternParser+DurationPars eBucket | 0.18 | 1 | 22 | 5 | 83.33 | 2 | 4 | 100 | 1 | 10 | NodaTime.Text |
OffsetDateTimePatternParser+Offset DateTimeParseBucket | 0.18 | 9 | 49 | 0 | 0 | 3 | 4 | 100 | 1 | 15 | NodaTime.Text |
TzdbResourceData | 0.17 | 47 | 296 | 42 | 47.19 | 19 | 26 | 87.23 | 1 | 27 | NodaTime.TimeZones.IO |
SystemClock | 0.17 | 3 | 21 | 11 | 78.57 | 3 | 3 | 100 | 1 | 8 | NodaTime |
TzdbDateTimeZoneSource+DefaultHold er | 0.17 | 4 | 27 | 0 | 0 | 2 | 4 | 100 | 1 | 11 | NodaTime.TimeZones |
ZonedDateTimePatternParser+ZonedDa teTimeParseBucket | 0.17 | 54 | 310 | 24 | 30.77 | 24 | 33 | 94.44 | 1 | 29 | NodaTime.Text |
InstantHandleAttribute | 0.15 | 0 | 4 | 0 | - | 0 | 1 | - | 0 | 3 | JetBrains.Annotations |
NamespaceDoc | 0.15 | 0 | 0 | 1 | 100 | 0 | 0 | - | 0 | 2 | NodaTime |
LocalizationRequiredAttribute | 0.15 | 5 | 22 | 0 | 0 | 4 | 4 | 0 | 0 | 6 | JetBrains.Annotations |
CanBeNullAttribute | 0.15 | 0 | 4 | 0 | - | 0 | 1 | - | 0 | 3 | JetBrains.Annotations |
MeansImplicitUseAttribute | 0.15 | 10 | 48 | 0 | 0 | 8 | 8 | 0 | 0 | 8 | JetBrains.Annotations |
AssemblyInfo | 0.15 | 0 | 0 | 2 | 100 | 0 | 0 | - | 0 | 2 | NodaTime.Properties |
NamespaceDoc | 0.15 | 0 | 0 | 1 | 100 | 0 | 0 | - | 0 | 2 | NodaTime.Globalization |
NamespaceDoc | 0.15 | 0 | 0 | 1 | 100 | 0 | 0 | - | 0 | 2 | NodaTime.TimeZones.Cldr |
DateTimeZoneWriter | 0.15 | 72 | 497 | 80 | 52.63 | 30 | 39 | 100 | 0 | 28 | NodaTime.TimeZones.IO |
NamespaceDoc | 0.15 | 0 | 0 | 1 | 100 | 0 | 0 | - | 0 | 2 | NodaTime.Text |
NamespaceDoc | 0.15 | 0 | 0 | 1 | 100 | 0 | 0 | - | 0 | 2 | NodaTime.Utility |
NamespaceDoc | 0.15 | 0 | 0 | 1 | 100 | 0 | 0 | - | 0 | 2 | NodaTime.Calendars |
NamespaceDoc | 0.15 | 0 | 0 | 1 | 100 | 0 | 0 | - | 0 | 2 | NodaTime.TimeZones |
NamespaceDoc | 0.15 | 0 | 0 | 1 | 100 | 0 | 0 | - | 0 | 2 | NodaTime.Fields |
Types Metrics : Code Members and Inheritance
Type Name | # Instance Methods | Nb Static Methods | Nb Properties | # Fields | # Children Classes | Depth Of Inheritance Tree | Type Namespace |
---|---|---|---|---|---|---|---|
Instant | 26 | 22 | 1 | 4 | - | - | NodaTime |
ParseResult<T> | 10 | 39 | 4 | 5 | 0 | 1 | NodaTime.Text |
InvokerParameterNameAttribute | 1 | 0 | 0 | 0 | 0 | 2 | JetBrains.Annotations |
Preconditions | 0 | 7 | 0 | 0 | 0 | 1 | NodaTime.Utility |
LocalInstant | 12 | 14 | 1 | 4 | - | - | NodaTime |
Offset | 18 | 21 | 2 | 5 | - | - | NodaTime |
NotNullAttribute | 1 | 0 | 0 | 0 | 0 | 2 | JetBrains.Annotations |
IPattern<T> | 2 | 0 | 0 | 0 | - | - | NodaTime.Text |
ZoneInterval | 21 | 0 | 11 | 7 | 0 | 1 | NodaTime.TimeZones |
LocalDateTime | 65 | 11 | 23 | 4 | - | - | NodaTime |
NodaFormatInfo | 37 | 7 | 29 | 21 | 0 | 1 | NodaTime.Globalization |
ImmutableAttribute | 1 | 0 | 0 | 0 | 0 | 2 | NodaTime.Annotations |
DateTimeZone | 24 | 4 | 5 | 10 | 5 | 1 | NodaTime |
ZonedDateTime | 52 | 11 | 26 | 7 | - | - | NodaTime |
PatternFields | - | - | - | - | - | - | NodaTime.Text.Patterns |
Era | 4 | 1 | 2 | 9 | 0 | 1 | NodaTime.Calendars |
ValueCursor | 10 | 0 | 0 | 0 | 0 | 2 | NodaTime.Text |
ParseBucket<T> | 2 | 2 | 0 | 0 | 7 | 1 | NodaTime.Text |
Duration | 17 | 27 | 1 | 10 | - | - | NodaTime |
YearMonthDayCalculator | 36 | 0 | 4 | 6 | 10 | 1 | NodaTime.Calendars |
PatternBclSupport<T> | 2 | 0 | 0 | 2 | 0 | 1 | NodaTime.Text.Patterns |
MutableAttribute | 1 | 0 | 0 | 0 | 0 | 2 | NodaTime.Annotations |
OffsetDateTime | 39 | 3 | 23 | 5 | - | - | NodaTime |
IZoneIntervalMap | 1 | 0 | 0 | 0 | - | - | NodaTime.TimeZones |
CalendarSystem | 51 | 11 | 11 | 25 | 0 | 1 | NodaTime |
IPeriodField | 2 | 0 | 0 | 0 | - | - | NodaTime.Fields |
FixedFormatInfoPatternParser<T> | 2 | 0 | 0 | 2 | 0 | 1 | NodaTime.Text |
LocalTime | 33 | 15 | 8 | 4 | - | - | NodaTime |
TextCursor | 14 | 0 | 6 | 5 | 2 | 1 | NodaTime.Text |
PureAttribute | 1 | 0 | 0 | 0 | 0 | 2 | JetBrains.Annotations |
LocalDate | 40 | 12 | 12 | 3 | - | - | NodaTime |
HashCodeHelper | 0 | 3 | 0 | 2 | 0 | 1 | NodaTime.Utility |
RegularYearMonthDayCalculator | 4 | 0 | 0 | 1 | 8 | 2 | NodaTime.Calendars |
Messages | 1 | 72 | 71 | 2 | 0 | 1 | NodaTime.Properties |
TimeOfDayCalculator | 0 | 21 | 0 | 1 | 0 | 1 | NodaTime.Calendars |
IPartialPattern<T> | 2 | 0 | 0 | 0 | - | - | NodaTime.Text |
LocalDateTimePattern | 9 | 10 | 7 | 7 | 0 | 1 | NodaTime.Text |
IDateTimeZoneReader | 7 | 0 | 0 | 0 | - | - | NodaTime.TimeZones.IO |
Period | 28 | 23 | 13 | 29 | 0 | 1 | NodaTime |
IsoDayOfWeek | - | - | - | - | - | - | NodaTime |
NodaConstants | 0 | 1 | 0 | 23 | 0 | 1 | NodaTime |
IDateTimeZoneWriter | 7 | 0 | 0 | 0 | - | - | NodaTime.TimeZones.IO |
PeriodFieldSet+Builder | 23 | 0 | 10 | 10 | 0 | 1 | NodaTime.Fields |
IDateTimeZoneSource | 4 | 0 | 1 | 0 | - | - | NodaTime.TimeZones |
PatternCursor | 4 | 0 | 0 | 0 | 0 | 2 | NodaTime.Text.Patterns |
DateTimeZoneCache | 6 | 0 | 2 | 5 | 0 | 1 | NodaTime.TimeZones |
InstantPattern | 8 | 9 | 4 | 10 | 0 | 1 | NodaTime.Text |
InvalidPatternException | 4 | 0 | 0 | 0 | 0 | 4 | NodaTime.Text |
IPatternParser<T> | 1 | 0 | 0 | 0 | - | - | NodaTime.Text.Patterns |
SteppedPatternBuilder<TResult ,TBucket> | 20 | 5 | 2 | 6 | 0 | 1 | NodaTime.Text.Patterns |
PeriodFieldSet | 10 | 0 | 9 | 9 | 0 | 1 | NodaTime.Fields |
TickArithmetic | 0 | 2 | 0 | 0 | 0 | 1 | NodaTime.Calendars |
InvalidNodaDataException | 2 | 0 | 0 | 0 | 0 | 2 | NodaTime.Utility |
IDateTimeZoneProvider | 5 | 0 | 2 | 0 | - | - | NodaTime |
DurationPattern | 6 | 6 | 3 | 4 | 0 | 1 | NodaTime.Text |
GJYearMonthDayCalculator | 10 | 1 | 0 | 4 | 3 | 3 | NodaTime.Calendars |
ZonedDateTime+Comparer | 2 | 2 | 2 | 0 | 2 | 1 | NodaTime |
LocalDatePattern | 9 | 7 | 4 | 7 | 0 | 1 | NodaTime.Text |
YearStartCacheEntry | 3 | 4 | 1 | 8 | - | - | NodaTime.Calendars |
OffsetDateTime+Comparer | 2 | 2 | 2 | 0 | 2 | 1 | NodaTime |
ContractAnnotationAttribute | 6 | 0 | 2 | 2 | 0 | 2 | JetBrains.Annotations |
StringFormatMethodAttribute | 3 | 0 | 1 | 1 | 0 | 2 | JetBrains.Annotations |
TzdbZoneLocation | 8 | 1 | 6 | 6 | 0 | 1 | NodaTime.TimeZones |
WindowsZones | 9 | 2 | 5 | 5 | 0 | 1 | NodaTime.TimeZones.Cldr |
LocalDatePatternParser+LocalDatePa rseBucket | 5 | 1 | 0 | 9 | 0 | 2 | NodaTime.Text |
HebrewScripturalCalculator | 0 | 13 | 0 | 6 | 0 | 1 | NodaTime.Calendars |
CharacterHandler<TResult,TBucket> | 4 | 0 | 0 | 0 | 0 | 3 | NodaTime.Text |
LocalTimePattern | 9 | 7 | 4 | 6 | 0 | 1 | NodaTime.Text |
ZoneLocalMapping | 10 | 0 | 5 | 5 | 0 | 1 | NodaTime.TimeZones |
LocalTimePatternParser+LocalTimePa rseBucket | 3 | 0 | 0 | 7 | 0 | 2 | NodaTime.Text |
ZoneLocalMappingResolver | 4 | 0 | 0 | 0 | 0 | 3 | NodaTime.TimeZones |
FixedDateTimeZone | 10 | 3 | 1 | 3 | 0 | 2 | NodaTime.TimeZones |
ImplicitUseKindFlags | - | - | - | - | - | - | JetBrains.Annotations |
ImplicitUseTargetFlags | - | - | - | - | - | - | JetBrains.Annotations |
LegacyDateTimeZoneReader | 14 | 0 | 0 | 2 | 0 | 1 | NodaTime.TimeZones.IO |
TzdbDateTimeZoneSource | 16 | 2 | 7 | 5 | 0 | 1 | NodaTime.TimeZones |
YearMonthDay | 4 | 0 | 3 | 3 | - | - | NodaTime.Calendars |
OffsetDateTimePattern | 10 | 9 | 7 | 5 | 0 | 1 | NodaTime.Text |
OffsetPattern | 7 | 5 | 3 | 7 | 0 | 1 | NodaTime.Text |
SkippedTimeException | 3 | 0 | 2 | 2 | 0 | 5 | NodaTime |
LegacyDateTimeZoneWriter | 14 | 0 | 0 | 26 | 0 | 1 | NodaTime.TimeZones.IO |
CachingZoneIntervalMap+CacheType | - | - | - | - | - | - | NodaTime.TimeZones |
ZonedDateTime+LocalComparer | 2 | 1 | 0 | 1 | 0 | 2 | NodaTime |
ZonedDateTime+InstantComparer | 2 | 1 | 0 | 1 | 0 | 2 | NodaTime |
OffsetDateTime+LocalComparer | 2 | 1 | 0 | 1 | 0 | 2 | NodaTime |
OffsetDateTime+InstantComparer | 2 | 1 | 0 | 1 | 0 | 2 | NodaTime |
CachingZoneIntervalMap+HashArrayCa che+HashCacheNode | 4 | 1 | 3 | 3 | 0 | 1 | NodaTime.TimeZones |
UnparsableValueException | 3 | 0 | 0 | 0 | 0 | 4 | NodaTime.Text |
SteppedPatternBuilder<TResult ,TBucket>+ParseAction | 4 | 0 | 0 | 0 | 0 | 3 | NodaTime.Text.Patterns |
PeriodUnits | - | - | - | - | - | - | NodaTime |
PeriodPattern | 3 | 5 | 0 | 3 | 0 | 1 | NodaTime.Text |
Cache<TKey,TValue> | 5 | 0 | 2 | 5 | 0 | 1 | NodaTime.Utility |
Interval | 14 | 2 | 3 | 4 | - | - | NodaTime |
FormatHelper | 0 | 4 | 0 | 2 | 0 | 1 | NodaTime.Text |
ITzdbDataSource | 6 | 0 | 5 | 0 | - | - | NodaTime.TimeZones.IO |
PartialZoneIntervalMap | 7 | 3 | 3 | 3 | 0 | 1 | NodaTime.TimeZones |
BclDateTimeZoneSource | 6 | 1 | 1 | 0 | 0 | 1 | NodaTime.TimeZones |
Resolvers | 0 | 2 | 0 | 8 | 0 | 1 | NodaTime.TimeZones |
AmbiguousTimeException | 5 | 0 | 4 | 2 | 0 | 5 | NodaTime |
DaylightSavingsDateTimeZone | 10 | 2 | 0 | 3 | 0 | 2 | NodaTime.TimeZones |
ZonedDateTimePattern | 14 | 7 | 7 | 7 | 0 | 1 | NodaTime.Text |
TimePatternHelper | 0 | 5 | 0 | 0 | 0 | 1 | NodaTime.Text.Patterns |
GregorianYearMonthDayCalculator | 5 | 1 | 0 | 8 | 1 | 4 | NodaTime.Calendars |
FixedDurationPeriodField | 3 | 1 | 0 | 9 | 0 | 1 | NodaTime.Fields |
TzdbStreamData | 7 | 3 | 5 | 9 | 0 | 1 | NodaTime.TimeZones.IO |
PeriodBuilder | 26 | 0 | 9 | 9 | 0 | 1 | NodaTime |
OffsetDateTimePattern+Patterns | 0 | 1 | 0 | 5 | 0 | 1 | NodaTime.Text |
CachingZoneIntervalMap+HashArrayCa che | 2 | 0 | 0 | 5 | 0 | 1 | NodaTime.TimeZones |
ZoneYearOffset | 16 | 5 | 4 | 8 | 0 | 1 | NodaTime.TimeZones |
DateTimeZoneReader | 12 | 0 | 0 | 2 | 0 | 1 | NodaTime.TimeZones.IO |
TzdbStreamFieldId | - | - | - | - | - | - | NodaTime.TimeZones.IO |
LocalDateTimePatternParser+LocalDa teTimeParseBucket | 2 | 1 | 0 | 2 | 0 | 2 | NodaTime.Text |
LocalDateTimePatternParser | 3 | 1 | 0 | 3 | 0 | 1 | NodaTime.Text |
IClock | 1 | 0 | 1 | 0 | - | - | NodaTime |
InstantPatternParser | 2 | 0 | 0 | 3 | 0 | 1 | NodaTime.Text |
OffsetDateTimePatternParser | 2 | 2 | 0 | 4 | 0 | 1 | NodaTime.Text |
UsedImplicitlyAttribute | 8 | 0 | 2 | 2 | 0 | 2 | JetBrains.Annotations |
ZoneIntervalPair | 8 | 3 | 3 | 4 | - | - | NodaTime.TimeZones |
PrecalculatedDateTimeZone | 7 | 4 | 0 | 4 | 0 | 2 | NodaTime.TimeZones |
CachedDateTimeZone | 6 | 2 | 1 | 2 | 0 | 2 | NodaTime.TimeZones |
ZonedDateTimePattern+Patterns | 0 | 1 | 0 | 3 | 0 | 1 | NodaTime.Text |
LocalTimePatternParser | 3 | 1 | 0 | 2 | 0 | 1 | NodaTime.Text |
LocalDatePatternParser | 3 | 1 | 0 | 3 | 0 | 1 | NodaTime.Text |
PatternResources | 1 | 13 | 12 | 2 | 0 | 1 | NodaTime.Properties |
ZoneEqualityComparer+Options | - | - | - | - | - | - | NodaTime.TimeZones |
IslamicLeapYearPattern | - | - | - | - | - | - | NodaTime.Calendars |
IslamicEpoch | - | - | - | - | - | - | NodaTime.Calendars |
DatePatternHelper | 0 | 6 | 0 | 0 | 0 | 1 | NodaTime.Text.Patterns |
ZonedDateTimePatternParser | 2 | 5 | 0 | 6 | 0 | 1 | NodaTime.Text |
DurationPattern+Patterns | 0 | 1 | 0 | 1 | 0 | 1 | NodaTime.Text |
LocalDateTimePattern+Patterns | 0 | 1 | 0 | 4 | 0 | 1 | NodaTime.Text |
FixedMonthYearMonthDayCalculator | 9 | 0 | 0 | 3 | 1 | 3 | NodaTime.Calendars |
SingleZoneIntervalMap | 2 | 0 | 0 | 1 | 0 | 1 | NodaTime.TimeZones |
HebrewMonthNumbering | - | - | - | - | - | - | NodaTime.Calendars |
SteppedPatternBuilder<TResult ,TBucket >+IPostPatternParseFormatAction | 1 | 0 | 0 | 0 | - | - | NodaTime.Text.Patterns |
CachingZoneIntervalMap | 0 | 1 | 0 | 0 | 0 | 1 | NodaTime.TimeZones |
DateTimeZoneProviders+TzdbHolder | 0 | 1 | 0 | 1 | 0 | 1 | NodaTime |
DateTimeZoneProviders+BclHolder | 0 | 1 | 0 | 1 | 0 | 1 | NodaTime |
Transition | 7 | 2 | 2 | 3 | - | - | NodaTime.TimeZones |
DateTimeZoneWriter+ZoneIntervalCon stants | 0 | 1 | 0 | 6 | 0 | 1 | NodaTime.TimeZones.IO |
ZoneRecurrence | 20 | 2 | 6 | 5 | 0 | 1 | NodaTime.TimeZones |
TransitionMode | - | - | - | - | - | - | NodaTime.TimeZones |
TzdbStreamField | 4 | 1 | 1 | 2 | 0 | 1 | NodaTime.TimeZones.IO |
ZoneEqualityComparer | 8 | 2 | 2 | 3 | 0 | 1 | NodaTime.TimeZones |
VisibleForTestingAttribute | 1 | 0 | 0 | 0 | 0 | 2 | NodaTime.Annotations |
AbstractPattern<T> | 5 | 0 | 1 | 1 | 1 | 1 | NodaTime.Text.Patterns |
InstantPattern+Patterns | 0 | 1 | 0 | 2 | 0 | 1 | NodaTime.Text |
NodaReadOnlyDictionary<TKey,TValue > | 18 | 0 | 4 | 1 | 0 | 1 | NodaTime.Utility |
MapZone | 6 | 1 | 3 | 5 | 0 | 1 | NodaTime.TimeZones.Cldr |
DateTimeZoneWriter+DateTimeZoneTyp e | - | - | - | - | - | - | NodaTime.TimeZones.IO |
PartialZoneIntervalMap+CombinedPar tialZoneIntervalMap | 2 | 0 | 0 | 1 | 0 | 1 | NodaTime.TimeZones |
LocalTimePattern+Patterns | 0 | 1 | 0 | 1 | 0 | 1 | NodaTime.Text |
LocalDatePattern+Patterns | 0 | 1 | 0 | 1 | 0 | 1 | NodaTime.Text |
PeriodPattern+RoundtripPatternImpl | 3 | 0 | 0 | 0 | 0 | 1 | NodaTime.Text |
PeriodPattern+NormalizingIsoPatter nImpl | 3 | 0 | 0 | 0 | 0 | 1 | NodaTime.Text |
HebrewMonthConverter | 0 | 2 | 0 | 0 | 0 | 1 | NodaTime.Calendars |
DurationPatternParser | 2 | 7 | 0 | 1 | 0 | 1 | NodaTime.Text |
ReferenceEqualityComparer<T> | 3 | 0 | 0 | 0 | 0 | 1 | NodaTime.Utility |
OffsetPatternParser | 5 | 8 | 0 | 1 | 0 | 1 | NodaTime.Text |
NodaFormatInfo+EraDescription | 3 | 1 | 2 | 2 | 0 | 1 | NodaTime.Globalization |
SkippedTimeResolver | 4 | 0 | 0 | 0 | 0 | 3 | NodaTime.TimeZones |
AmbiguousTimeResolver | 4 | 0 | 0 | 0 | 0 | 3 | NodaTime.TimeZones |
InstantPatternParser+NumberPattern | 3 | 0 | 0 | 3 | 0 | 2 | NodaTime.Text |
InstantPatternParser+LocalDateTime PatternAdapter | 3 | 0 | 0 | 3 | 0 | 1 | NodaTime.Text |
BclDateTimeZone | 6 | 3 | 2 | 3 | 0 | 2 | NodaTime.TimeZones |
InvalidDateTimeZoneSourceException | 1 | 0 | 0 | 0 | 0 | 2 | NodaTime.TimeZones |
DateTimeZoneNotFoundException | 1 | 0 | 0 | 0 | 0 | 1 | NodaTime.TimeZones |
DateTimeZoneProviders | 0 | 6 | 4 | 2 | 0 | 1 | NodaTime |
YearsPeriodField | 3 | 0 | 0 | 1 | 0 | 1 | NodaTime.Fields |
CopticYearMonthDayCalculator | 2 | 0 | 0 | 0 | 0 | 4 | NodaTime.Calendars |
MonthsPeriodField | 3 | 0 | 0 | 1 | 0 | 1 | NodaTime.Fields |
WeekYearCalculator | 6 | 1 | 0 | 2 | 0 | 1 | NodaTime.Calendars |
PersianYearMonthDayCalculator | 10 | 1 | 0 | 9 | 0 | 3 | NodaTime.Calendars |
IsoYearMonthDayCalculator | 3 | 0 | 0 | 0 | 0 | 5 | NodaTime.Calendars |
JulianYearMonthDayCalculator | 3 | 0 | 0 | 1 | 0 | 4 | NodaTime.Calendars |
IslamicYearMonthDayCalculator | 10 | 3 | 0 | 14 | 0 | 3 | NodaTime.Calendars |
HebrewYearMonthDayCalculator | 14 | 3 | 0 | 7 | 0 | 2 | NodaTime.Calendars |
BclConversions | 0 | 2 | 0 | 0 | 0 | 1 | NodaTime.Utility |
Period+PeriodComparer | 2 | 0 | 0 | 1 | 0 | 2 | NodaTime |
Period+NormalizingPeriodEqualityCo mparer | 3 | 1 | 0 | 1 | 0 | 2 | NodaTime |
ZoneEqualityComparer+ZoneIntervalE qualityComparer | 6 | 0 | 0 | 2 | 0 | 1 | NodaTime.TimeZones |
PrecalculatedDateTimeZone+OffsetAg gregator | 4 | 0 | 0 | 0 | 0 | 3 | NodaTime.TimeZones |
PrecalculatedDateTimeZone+OffsetEx tractor<T> | 4 | 0 | 0 | 0 | 0 | 3 | NodaTime.TimeZones |
SteppedPatternBuilder<TResult ,TBucket>+SteppedPattern | 5 | 0 | 0 | 4 | 0 | 1 | NodaTime.Text.Patterns |
BclDateTimeZone+BclAdjustmentRule | 6 | 3 | 5 | 6 | 0 | 1 | NodaTime.TimeZones |
TzdbStreamData+Builder | 10 | 0 | 0 | 7 | 0 | 1 | NodaTime.TimeZones.IO |
DatePatternHelper+MonthFormatActio nHolder<TResult,TBucket> | 3 | 0 | 0 | 3 | 0 | 1 | NodaTime.Text.Patterns |
OffsetPatternParser+ZPrefixPattern | 5 | 0 | 0 | 1 | 0 | 1 | NodaTime.Text |
CompositePattern<T> | 5 | 0 | 0 | 2 | 0 | 1 | NodaTime.Text.Patterns |
OffsetPatternParser+OffsetParseBuc ket | 2 | 0 | 0 | 5 | 0 | 2 | NodaTime.Text |
OffsetPatternParser+NumberPattern | 5 | 0 | 0 | 2 | 0 | 1 | NodaTime.Text |
DurationPatternParser+DurationPars eBucket | 2 | 0 | 0 | 2 | 0 | 2 | NodaTime.Text |
OffsetDateTimePatternParser+Offset DateTimeParseBucket | 2 | 0 | 0 | 3 | 0 | 2 | NodaTime.Text |
TzdbResourceData | 7 | 7 | 5 | 9 | 0 | 1 | NodaTime.TimeZones.IO |
SystemClock | 2 | 1 | 1 | 1 | 0 | 1 | NodaTime |
TzdbDateTimeZoneSource+DefaultHold er | 0 | 2 | 0 | 1 | 0 | 1 | NodaTime.TimeZones |
ZonedDateTimePatternParser+ZonedDa teTimeParseBucket | 5 | 0 | 0 | 6 | 0 | 2 | NodaTime.Text |
InstantHandleAttribute | 1 | 0 | 0 | 0 | 0 | 2 | JetBrains.Annotations |
NamespaceDoc | 0 | 0 | 0 | 0 | 0 | 1 | NodaTime |
LocalizationRequiredAttribute | 4 | 0 | 1 | 1 | 0 | 2 | JetBrains.Annotations |
CanBeNullAttribute | 1 | 0 | 0 | 0 | 0 | 2 | JetBrains.Annotations |
MeansImplicitUseAttribute | 8 | 0 | 2 | 2 | 0 | 2 | JetBrains.Annotations |
AssemblyInfo | 0 | 0 | 0 | 1 | 0 | 1 | NodaTime.Properties |
NamespaceDoc | 0 | 0 | 0 | 0 | 0 | 1 | NodaTime.Globalization |
NamespaceDoc | 0 | 0 | 0 | 0 | 0 | 1 | NodaTime.TimeZones.Cldr |
DateTimeZoneWriter | 12 | 0 | 0 | 2 | 0 | 1 | NodaTime.TimeZones.IO |
NamespaceDoc | 0 | 0 | 0 | 0 | 0 | 1 | NodaTime.Text |
NamespaceDoc | 0 | 0 | 0 | 0 | 0 | 1 | NodaTime.Utility |
NamespaceDoc | 0 | 0 | 0 | 0 | 0 | 1 | NodaTime.Calendars |
NamespaceDoc | 0 | 0 | 0 | 0 | 0 | 1 | NodaTime.TimeZones |
NamespaceDoc | 0 | 0 | 0 | 0 | 0 | 1 | NodaTime.Fields |
Types Metrics : Lack Of Cohesion Of Methods and Association Between Classes
Type Name | Lack Of Cohesion Of Methods | Lack Of Cohesion Of Methods HS | Association Between Classes | Type Namespace |
---|---|---|---|---|
Instant | 0.92 | 0.94 | 39 | NodaTime |
ParseResult<T> | 0.9 | 0.92 | 49 | NodaTime.Text |
InvokerParameterNameAttribute | 0 | 0 | 1 | JetBrains.Annotations |
Preconditions | 0 | 0 | 9 | NodaTime.Utility |
LocalInstant | 0.88 | 0.92 | 16 | NodaTime |
Offset | 0.9 | 0.92 | 19 | NodaTime |
NotNullAttribute | 0 | 0 | 1 | JetBrains.Annotations |
IPattern<T> | - | - | 0 | NodaTime.Text |
ZoneInterval | 0.84 | 0.88 | 21 | NodaTime.TimeZones |
LocalDateTime | 0.7 | 0.71 | 85 | NodaTime |
NodaFormatInfo | 0.95 | 0.97 | 65 | NodaTime.Globalization |
ImmutableAttribute | 0 | 0 | 1 | NodaTime.Annotations |
DateTimeZone | 0.9 | 0.94 | 50 | NodaTime |
ZonedDateTime | 0.88 | 0.9 | 100 | NodaTime |
PatternFields | - | - | 0 | NodaTime.Text.Patterns |
Era | 0.5 | 0.62 | 1 | NodaTime.Calendars |
ValueCursor | 0 | 0 | 17 | NodaTime.Text |
ParseBucket<T> | 0 | 0 | 2 | NodaTime.Text |
Duration | 0.91 | 0.93 | 17 | NodaTime |
YearMonthDayCalculator | 0.92 | 0.96 | 14 | NodaTime.Calendars |
PatternBclSupport<T> | 0 | 0 | 6 | NodaTime.Text.Patterns |
MutableAttribute | 0 | 0 | 1 | NodaTime.Annotations |
OffsetDateTime | 0.55 | 0.56 | 69 | NodaTime |
IZoneIntervalMap | - | - | 0 | NodaTime.TimeZones |
CalendarSystem | 0.93 | 0.95 | 81 | NodaTime |
IPeriodField | - | - | 0 | NodaTime.Fields |
FixedFormatInfoPatternParser<T> | 0 | 0 | 6 | NodaTime.Text |
LocalTime | 0.54 | 0.55 | 36 | NodaTime |
TextCursor | 0.8 | 0.89 | 6 | NodaTime.Text |
PureAttribute | 0 | 0 | 1 | JetBrains.Annotations |
LocalDate | 0.37 | 0.37 | 64 | NodaTime |
HashCodeHelper | 0 | 0 | 1 | NodaTime.Utility |
RegularYearMonthDayCalculator | 0 | 0 | 14 | NodaTime.Calendars |
Messages | 0 | 0 | 5 | NodaTime.Properties |
TimeOfDayCalculator | 0 | 0 | 16 | NodaTime.Calendars |
IPartialPattern<T> | - | - | 0 | NodaTime.Text |
LocalDateTimePattern | 0.83 | 0.88 | 19 | NodaTime.Text |
IDateTimeZoneReader | - | - | 0 | NodaTime.TimeZones.IO |
Period | 0.75 | 0.76 | 36 | NodaTime |
IsoDayOfWeek | - | - | 0 | NodaTime |
NodaConstants | 0 | 0 | 2 | NodaTime |
IDateTimeZoneWriter | - | - | 0 | NodaTime.TimeZones.IO |
PeriodFieldSet+Builder | 0 | 0 | 12 | NodaTime.Fields |
IDateTimeZoneSource | - | - | 0 | NodaTime.TimeZones |
PatternCursor | 0 | 0 | 19 | NodaTime.Text.Patterns |
DateTimeZoneCache | 0.53 | 0.64 | 26 | NodaTime.TimeZones |
InstantPattern | 0.84 | 0.89 | 18 | NodaTime.Text |
InvalidPatternException | 0 | 0 | 5 | NodaTime.Text |
IPatternParser<T> | - | - | 0 | NodaTime.Text.Patterns |
SteppedPatternBuilder<TResult ,TBucket> | 0.87 | 0.91 | 65 | NodaTime.Text.Patterns |
PeriodFieldSet | 0.8 | 0.89 | 10 | NodaTime.Fields |
TickArithmetic | 0 | 0 | 0 | NodaTime.Calendars |
InvalidNodaDataException | 0 | 0 | 2 | NodaTime.Utility |
IDateTimeZoneProvider | - | - | 0 | NodaTime |
DurationPattern | 0.78 | 0.85 | 12 | NodaTime.Text |
GJYearMonthDayCalculator | 0 | 0 | 20 | NodaTime.Calendars |
ZonedDateTime+Comparer | 0 | 0 | 3 | NodaTime |
LocalDatePattern | 0.8 | 0.85 | 16 | NodaTime.Text |
YearStartCacheEntry | 0.57 | 0.67 | 0 | NodaTime.Calendars |
OffsetDateTime+Comparer | 0 | 0 | 3 | NodaTime |
ContractAnnotationAttribute | 0 | 0 | 1 | JetBrains.Annotations |
StringFormatMethodAttribute | 0 | 0 | 1 | JetBrains.Annotations |
TzdbZoneLocation | 0.67 | 0.75 | 8 | NodaTime.TimeZones |
WindowsZones | 0.65 | 0.72 | 31 | NodaTime.TimeZones.Cldr |
LocalDatePatternParser+LocalDatePa rseBucket | 0.63 | 0.76 | 38 | NodaTime.Text |
HebrewScripturalCalculator | 0 | 0 | 6 | NodaTime.Calendars |
CharacterHandler<TResult,TBucket> | - | - | 0 | NodaTime.Text |
LocalTimePattern | 0.8 | 0.85 | 16 | NodaTime.Text |
ZoneLocalMapping | 0.48 | 0.53 | 8 | NodaTime.TimeZones |
LocalTimePatternParser+LocalTimePa rseBucket | 0.52 | 0.79 | 11 | NodaTime.Text |
ZoneLocalMappingResolver | - | - | 0 | NodaTime.TimeZones |
FixedDateTimeZone | 0.74 | 0.81 | 26 | NodaTime.TimeZones |
ImplicitUseKindFlags | - | - | 0 | JetBrains.Annotations |
ImplicitUseTargetFlags | - | - | 0 | JetBrains.Annotations |
LegacyDateTimeZoneReader | 0.82 | 0.88 | 19 | NodaTime.TimeZones.IO |
TzdbDateTimeZoneSource | 0.8 | 0.85 | 70 | NodaTime.TimeZones |
YearMonthDay | 0.5 | 0.67 | 0 | NodaTime.Calendars |
OffsetDateTimePattern | 0.8 | 0.85 | 16 | NodaTime.Text |
OffsetPattern | 0.75 | 0.82 | 11 | NodaTime.Text |
SkippedTimeException | 0.33 | 0.5 | 4 | NodaTime |
LegacyDateTimeZoneWriter | 0.82 | 0.88 | 27 | NodaTime.TimeZones.IO |
CachingZoneIntervalMap+CacheType | - | - | 0 | NodaTime.TimeZones |
ZonedDateTime+LocalComparer | 0 | 0 | 4 | NodaTime |
ZonedDateTime+InstantComparer | 0 | 0 | 3 | NodaTime |
OffsetDateTime+LocalComparer | 0 | 0 | 4 | NodaTime |
OffsetDateTime+InstantComparer | 0 | 0 | 3 | NodaTime |
CachingZoneIntervalMap+HashArrayCa che+HashCacheNode | 0.6 | 0.75 | 5 | NodaTime.TimeZones |
UnparsableValueException | 0 | 0 | 3 | NodaTime.Text |
SteppedPatternBuilder<TResult ,TBucket>+ParseAction | - | - | 0 | NodaTime.Text.Patterns |
PeriodUnits | - | - | 0 | NodaTime |
PeriodPattern | 0.62 | 0.71 | 12 | NodaTime.Text |
Cache<TKey,TValue> | 0.32 | 0.4 | 17 | NodaTime.Utility |
Interval | 0.62 | 0.67 | 23 | NodaTime |
FormatHelper | 0 | 0 | 11 | NodaTime.Text |
ITzdbDataSource | - | - | 0 | NodaTime.TimeZones.IO |
PartialZoneIntervalMap | 0.7 | 0.78 | 22 | NodaTime.TimeZones |
BclDateTimeZoneSource | 0 | 0 | 17 | NodaTime.TimeZones |
Resolvers | 0 | 0 | 25 | NodaTime.TimeZones |
AmbiguousTimeException | 0.4 | 0.5 | 8 | NodaTime |
DaylightSavingsDateTimeZone | 0.28 | 0.3 | 36 | NodaTime.TimeZones |
ZonedDateTimePattern | 0.71 | 0.75 | 16 | NodaTime.Text |
TimePatternHelper | 0 | 0 | 35 | NodaTime.Text.Patterns |
GregorianYearMonthDayCalculator | 0 | 0 | 8 | NodaTime.Calendars |
FixedDurationPeriodField | 0.25 | 0.33 | 6 | NodaTime.Fields |
TzdbStreamData | 0.8 | 0.89 | 46 | NodaTime.TimeZones.IO |
PeriodBuilder | 0 | 0 | 20 | NodaTime |
OffsetDateTimePattern+Patterns | 0 | 0 | 6 | NodaTime.Text |
CachingZoneIntervalMap+HashArrayCa che | 0 | 0 | 9 | NodaTime.TimeZones |
ZoneYearOffset | 0.67 | 0.71 | 52 | NodaTime.TimeZones |
DateTimeZoneReader | 0.79 | 0.86 | 23 | NodaTime.TimeZones.IO |
TzdbStreamFieldId | - | - | 0 | NodaTime.TimeZones.IO |
LocalDateTimePatternParser+LocalDa teTimeParseBucket | 0.33 | 0.5 | 15 | NodaTime.Text |
LocalDateTimePatternParser | 0.5 | 0.67 | 79 | NodaTime.Text |
IClock | - | - | 0 | NodaTime |
InstantPatternParser | 0 | 0 | 15 | NodaTime.Text |
OffsetDateTimePatternParser | 0.5 | 0.67 | 88 | NodaTime.Text |
UsedImplicitlyAttribute | 0 | 0 | 3 | JetBrains.Annotations |
ZoneIntervalPair | 0.64 | 0.7 | 8 | NodaTime.TimeZones |
PrecalculatedDateTimeZone | 0.5 | 0.55 | 71 | NodaTime.TimeZones |
CachedDateTimeZone | 0.69 | 0.79 | 13 | NodaTime.TimeZones |
ZonedDateTimePattern+Patterns | 0 | 0 | 4 | NodaTime.Text |
LocalTimePatternParser | 0.5 | 0.67 | 46 | NodaTime.Text |
LocalDatePatternParser | 0.5 | 0.67 | 51 | NodaTime.Text |
PatternResources | 0 | 0 | 5 | NodaTime.Properties |
ZoneEqualityComparer+Options | - | - | 0 | NodaTime.TimeZones |
IslamicLeapYearPattern | - | - | 0 | NodaTime.Calendars |
IslamicEpoch | - | - | 0 | NodaTime.Calendars |
DatePatternHelper | 0 | 0 | 47 | NodaTime.Text.Patterns |
ZonedDateTimePatternParser | 0.71 | 0.83 | 96 | NodaTime.Text |
DurationPattern+Patterns | 0 | 0 | 1 | NodaTime.Text |
LocalDateTimePattern+Patterns | 0 | 0 | 1 | NodaTime.Text |
FixedMonthYearMonthDayCalculator | 0 | 0 | 14 | NodaTime.Calendars |
SingleZoneIntervalMap | 0 | 0 | 1 | NodaTime.TimeZones |
HebrewMonthNumbering | - | - | 0 | NodaTime.Calendars |
SteppedPatternBuilder<TResult ,TBucket >+IPostPatternParseFormatAction | - | - | 0 | NodaTime.Text.Patterns |
CachingZoneIntervalMap | 0 | 0 | 3 | NodaTime.TimeZones |
DateTimeZoneProviders+TzdbHolder | 0 | 0 | 2 | NodaTime |
DateTimeZoneProviders+BclHolder | 0 | 0 | 2 | NodaTime |
Transition | 0.48 | 0.54 | 5 | NodaTime.TimeZones |
DateTimeZoneWriter+ZoneIntervalCon stants | 0 | 0 | 1 | NodaTime.TimeZones.IO |
ZoneRecurrence | 0.61 | 0.64 | 53 | NodaTime.TimeZones |
TransitionMode | - | - | 0 | NodaTime.TimeZones |
TzdbStreamField | 0.6 | 0.75 | 15 | NodaTime.TimeZones.IO |
ZoneEqualityComparer | 0.6 | 0.67 | 22 | NodaTime.TimeZones |
VisibleForTestingAttribute | 0 | 0 | 1 | NodaTime.Annotations |
AbstractPattern<T> | 0.33 | 0.5 | 4 | NodaTime.Text.Patterns |
InstantPattern+Patterns | 0 | 0 | 1 | NodaTime.Text |
NodaReadOnlyDictionary<TKey,TValue > | 0.44 | 0.47 | 12 | NodaTime.Utility |
MapZone | 0.57 | 0.67 | 13 | NodaTime.TimeZones.Cldr |
DateTimeZoneWriter+DateTimeZoneTyp e | - | - | 0 | NodaTime.TimeZones.IO |
PartialZoneIntervalMap+CombinedPar tialZoneIntervalMap | 0 | 0 | 5 | NodaTime.TimeZones |
LocalTimePattern+Patterns | 0 | 0 | 1 | NodaTime.Text |
LocalDatePattern+Patterns | 0 | 0 | 1 | NodaTime.Text |
PeriodPattern+RoundtripPatternImpl | 0 | 0 | 35 | NodaTime.Text |
PeriodPattern+NormalizingIsoPatter nImpl | 0 | 0 | 48 | NodaTime.Text |
HebrewMonthConverter | 0 | 0 | 1 | NodaTime.Calendars |
DurationPatternParser | 0 | 0 | 43 | NodaTime.Text |
ReferenceEqualityComparer<T> | 0 | 0 | 2 | NodaTime.Utility |
OffsetPatternParser | 0 | 0 | 57 | NodaTime.Text |
NodaFormatInfo+EraDescription | 0.5 | 0.67 | 10 | NodaTime.Globalization |
SkippedTimeResolver | - | - | 0 | NodaTime.TimeZones |
AmbiguousTimeResolver | - | - | 0 | NodaTime.TimeZones |
InstantPatternParser+NumberPattern | 0.33 | 0.5 | 11 | NodaTime.Text |
InstantPatternParser+LocalDateTime PatternAdapter | 0 | 0 | 20 | NodaTime.Text |
BclDateTimeZone | 0.78 | 0.88 | 41 | NodaTime.TimeZones |
InvalidDateTimeZoneSourceException | 0 | 0 | 1 | NodaTime.TimeZones |
DateTimeZoneNotFoundException | 0 | 0 | 1 | NodaTime.TimeZones |
DateTimeZoneProviders | 0 | 0 | 6 | NodaTime |
YearsPeriodField | 0 | 0 | 8 | NodaTime.Fields |
CopticYearMonthDayCalculator | 0 | 0 | 3 | NodaTime.Calendars |
MonthsPeriodField | 0 | 0 | 4 | NodaTime.Fields |
WeekYearCalculator | 0.43 | 0.5 | 11 | NodaTime.Calendars |
PersianYearMonthDayCalculator | 0 | 0 | 11 | NodaTime.Calendars |
IsoYearMonthDayCalculator | 0 | 0 | 3 | NodaTime.Calendars |
JulianYearMonthDayCalculator | 0 | 0 | 2 | NodaTime.Calendars |
IslamicYearMonthDayCalculator | 0.85 | 0.92 | 15 | NodaTime.Calendars |
HebrewYearMonthDayCalculator | 0.85 | 0.91 | 29 | NodaTime.Calendars |
BclConversions | 0 | 0 | 3 | NodaTime.Utility |
Period+PeriodComparer | 0 | 0 | 7 | NodaTime |
Period+NormalizingPeriodEqualityCo mparer | 0 | 0 | 5 | NodaTime |
ZoneEqualityComparer+ZoneIntervalE qualityComparer | 0.33 | 0.4 | 18 | NodaTime.TimeZones |
PrecalculatedDateTimeZone+OffsetAg gregator | - | - | 0 | NodaTime.TimeZones |
PrecalculatedDateTimeZone+OffsetEx tractor<T> | - | - | 0 | NodaTime.TimeZones |
SteppedPatternBuilder<TResult ,TBucket>+SteppedPattern | 0.5 | 0.62 | 19 | NodaTime.Text.Patterns |
BclDateTimeZone+BclAdjustmentRule | 0.78 | 0.88 | 41 | NodaTime.TimeZones |
TzdbStreamData+Builder | 0.77 | 0.86 | 21 | NodaTime.TimeZones.IO |
DatePatternHelper+MonthFormatActio nHolder<TResult,TBucket> | 0.33 | 0.5 | 11 | NodaTime.Text.Patterns |
OffsetPatternParser+ZPrefixPattern | 0 | 0 | 12 | NodaTime.Text |
CompositePattern<T> | 0.4 | 0.5 | 17 | NodaTime.Text.Patterns |
OffsetPatternParser+OffsetParseBuc ket | 0.5 | 1 | 4 | NodaTime.Text |
OffsetPatternParser+NumberPattern | 0.4 | 0.5 | 20 | NodaTime.Text |
DurationPatternParser+DurationPars eBucket | 0.5 | 1 | 4 | NodaTime.Text |
OffsetDateTimePatternParser+Offset DateTimeParseBucket | 0 | 0 | 10 | NodaTime.Text |
TzdbResourceData | 0.86 | 0.92 | 26 | NodaTime.TimeZones.IO |
SystemClock | 0 | 0 | 5 | NodaTime |
TzdbDateTimeZoneSource+DefaultHold er | 0 | 0 | 6 | NodaTime.TimeZones |
ZonedDateTimePatternParser+ZonedDa teTimeParseBucket | 0.6 | 0.75 | 35 | NodaTime.Text |
InstantHandleAttribute | 0 | 0 | 1 | JetBrains.Annotations |
NamespaceDoc | 0 | 0 | 0 | NodaTime |
LocalizationRequiredAttribute | 0 | 0 | 1 | JetBrains.Annotations |
CanBeNullAttribute | 0 | 0 | 1 | JetBrains.Annotations |
MeansImplicitUseAttribute | 0 | 0 | 3 | JetBrains.Annotations |
AssemblyInfo | 0 | 0 | 0 | NodaTime.Properties |
NamespaceDoc | 0 | 0 | 0 | NodaTime.Globalization |
NamespaceDoc | 0 | 0 | 0 | NodaTime.TimeZones.Cldr |
DateTimeZoneWriter | 0.75 | 0.82 | 26 | NodaTime.TimeZones.IO |
NamespaceDoc | 0 | 0 | 0 | NodaTime.Text |
NamespaceDoc | 0 | 0 | 0 | NodaTime.Utility |
NamespaceDoc | 0 | 0 | 0 | NodaTime.Calendars |
NamespaceDoc | 0 | 0 | 0 | NodaTime.TimeZones |
NamespaceDoc | 0 | 0 | 0 | NodaTime.Fields |
Namespaces Metrics
Clicking column header arrows sorts values.
Clicking column header title text redirect to the online Code Metric definition.
Namespaces | # lines of code | # IL instruction | # Types | # lines of comment | % Comment | % Coverage | Afferent Coupling | Efferent Coupling |
---|---|---|---|---|---|---|---|---|
JetBrains.Annotations | 37 | 188 | 12 | 138 | 78.86 | - | 10 | 3 |
NodaTime | 1341 | 10525 | 34 | 4882 | 78.45 | 96.37 | 8 | 23 |
NodaTime.Utility | 78 | 583 | 8 | 150 | 65.79 | 88.46 | 8 | 12 |
NodaTime.Properties | 93 | 785 | 3 | 270 | 74.38 | - | 3 | 8 |
NodaTime.Globalization | 120 | 863 | 3 | 184 | 60.53 | 98.33 | 2 | 16 |
NodaTime.Fields | 97 | 533 | 7 | 74 | 43.27 | 98.7 | 2 | 7 |
NodaTime.Calendars | 592 | 4582 | 23 | 638 | 51.87 | 95.44 | 5 | 8 |
NodaTime.Annotations | 0 | 12 | 3 | 35 | 100 | - | 6 | 1 |
NodaTime.TimeZones | 1012 | 7403 | 39 | 1772 | 63.65 | 80.56 | 4 | 22 |
NodaTime.TimeZones.IO | 537 | 3530 | 14 | 629 | 53.95 | 69.41 | 2 | 18 |
NodaTime.TimeZones.Cldr | 72 | 418 | 3 | 149 | 67.42 | 70.83 | 2 | 11 |
NodaTime.Text | 1393 | 10697 | 49 | 1575 | 53.07 | 92.94 | 4 | 19 |
NodaTime.Text.Patterns | 467 | 3743 | 13 | 254 | 35.23 | 98.29 | 3 | 13 |
Quality Gates 614 |
|
![]() | Quality Gate Pass: Percentage Coverage |
Scalar Result: 89.59 %
![]() | Quality Gate Pass: Percentage Coverage on New Code |
Scalar Result: 93.46 %
![]() | Quality Gate Pass: Percentage Coverage on Refactored Code |
Scalar Result: 94.56 %
![]() | Quality Gate Pass: Blocker Issues |
No issue matched
![]() | Quality Gate Pass: Critical Issues |
No issue matched
![]() | Quality Gate Fail: New Blocker / Critical / High Issues |
103 issues matched
103 issues | Severity | Debt | Annual Interest | Full Name |
---|---|---|---|---|
C:NodaTime.Text.ParseResult<T> | High | 2h 6min | 31min | Rule violated: Avoid types with too many methods |
S:NodaTime.LocalDate | High | 1h 42min | 20min | Rule violated: Avoid types with too many methods |
C:JetBrains.Annotations .StringFormatMethodAttribute | High | 10min | 1h 0min | Rule violated: From now, all types added should be 100% covered by tests |
C:JetBrains.Annotations .ContractAnnotationAttribute | High | 10min | 1h 0min | Rule violated: From now, all types added should be 100% covered by tests |
C:JetBrains.Annotations .LocalizationRequiredAttribute | High | 10min | 1h 0min | Rule violated: From now, all types added should be 100% covered by tests |
C:JetBrains.Annotations .UsedImplicitlyAttribute | High | 10min | 1h 0min | Rule violated: From now, all types added should be 100% covered by tests |
C:JetBrains.Annotations .MeansImplicitUseAttribute | High | 10min | 1h 0min | Rule violated: From now, all types added should be 100% covered by tests |
C:NodaTime.Calendars .HebrewYearMonthDayCalculator | High | 10min | 1h 0min | Rule violated: From now, all types added should be 100% covered by tests |
C:NodaTime.Calendars .PersianYearMonthDayCalculator | High | 10min | 1h 0min | Rule violated: From now, all types added should be 100% covered by tests |
C:NodaTime.Calendars .RegularYearMonthDayCalculator | High | 10min | 1h 0min | Rule violated: From now, all types added should be 100% covered by tests |
C:NodaTime.TimeZones .BclDateTimeZone+BclAdjustmentRule | High | 10min | 1h 0min | Rule violated: From now, all types added should be 100% covered by tests |
C:NodaTime.TimeZones .PartialZoneIntervalMap+CombinedPa rtialZoneIntervalMap | High | 10min | 1h 0min | Rule violated: From now, all types added should be 100% covered by tests |
M:NodaTime.Calendars .HebrewScripturalCalculator .ElapsedDaysNoCache(Int32) | High | 5min | 1h 0min | Rule violated: From now, all methods added should respect basic quality principles |
M:NodaTime.Calendars .HebrewScripturalCalculator .ComputeCacheEntry(Int32) | High | 5min | 1h 0min | Rule violated: From now, all methods added should respect basic quality principles |
M:NodaTime.Calendars .HebrewScripturalCalculator .AbsoluteFromHebrew(Int32,Int32 ,Int32) | High | 5min | 1h 0min | Rule violated: From now, all methods added should respect basic quality principles |
M:NodaTime.Calendars .HebrewYearMonthDayCalculator .SetYear(LocalInstant,Int32) | High | 5min | 1h 0min | Rule violated: From now, all methods added should respect basic quality principles |
M:NodaTime.Calendars .HebrewYearMonthDayCalculator .AddMonths(LocalInstant,Int32) | High | 5min | 1h 0min | Rule violated: From now, all methods added should respect basic quality principles |
M:NodaTime.Calendars .HebrewYearMonthDayCalculator .MonthsBetween(LocalInstant ,LocalInstant) | High | 5min | 1h 0min | Rule violated: From now, all methods added should respect basic quality principles |
CTOR:NodaTime.Calendars .RegularYearMonthDayCalculator. .ctor(Int32,Int32,Int32,Int64 ,Int64,Era[]) | High | 5min | 1h 0min | Rule violated: From now, all methods added should respect basic quality principles |
M:NodaTime.Calendars .RegularYearMonthDayCalculator .AddMonths(LocalInstant,Int32) | High | 5min | 1h 0min | Rule violated: From now, all methods added should respect basic quality principles |
M:NodaTime.TimeZones.BclDateTimeZone .BuildMap (BclDateTimeZone+BclAdjustmentRule [],Offset,String) | High | 5min | 1h 0min | Rule violated: From now, all methods added should respect basic quality principles |
CTOR:NodaTime.TimeZones .BclDateTimeZone+BclAdjustmentRule ..ctor(TimeZoneInfo ,TimeZoneInfo+AdjustmentRule) | High | 5min | 1h 0min | Rule violated: From now, all methods added should respect basic quality principles |
M:NodaTime.TimeZones .BclDateTimeZone+BclAdjustmentRule .IsStandardOffsetOnlyRule (TimeZoneInfo+AdjustmentRule) | High | 5min | 1h 0min | Rule violated: From now, all methods added should respect basic quality principles |
M:NodaTime.TimeZones .PartialZoneIntervalMap .ConvertToFullMap(IEnumerable <PartialZoneIntervalMap>) | High | 5min | 1h 0min | Rule violated: From now, all methods added should respect basic quality principles |
M:NodaTime.Text .LocalDateTimePatternParser+LocalD ateTimeParseBucket.CombineBuckets (PatternFields ,LocalDatePatternParser+LocalDateP arseBucket ,LocalTimePatternParser+LocalTimeP arseBucket,String) | High | 5min | 1h 0min | Rule violated: From now, all methods added should respect basic quality principles |
M:NodaTime.Text.FormatHelper .AppendFractionTruncate(Int32 ,Int32,Int32,StringBuilder) | High | 5min | 1h 0min | Rule violated: From now, all methods added should respect basic quality principles |
M:NodaTime.Text .LocalDatePatternParser+LocalDateP arseBucket.CalculateValue (PatternFields,String) | High | 5min | 1h 0min | Rule violated: From now, all methods added should respect basic quality principles |
M:NodaTime.Text .LocalDatePatternParser+LocalDateP arseBucket.DetermineYear (PatternFields,String) | High | 5min | 1h 0min | Rule violated: From now, all methods added should respect basic quality principles |
M:NodaTime.Text .LocalTimePatternParser+LocalTimeP arseBucket.CalculateValue (PatternFields,String) | High | 5min | 1h 0min | Rule violated: From now, all methods added should respect basic quality principles |
M:NodaTime.Text .LocalTimePatternParser+LocalTimeP arseBucket.DetermineHour (PatternFields,String,Int32&) | High | 5min | 1h 0min | Rule violated: From now, all methods added should respect basic quality principles |
M:NodaTime.Text .ZonedDateTimePatternParser+ZonedD ateTimeParseBucket.CalculateValue (PatternFields,String) | High | 5min | 1h 0min | Rule violated: From now, all methods added should respect basic quality principles |
M:NodaTime.Text.Patterns .DatePatternHelper .CreateYearHandler<TResult,TBucket >(Func<TResult,Int32>,Func<TResult ,Int32>,Action<TBucket,Int32>) | High | 5min | 1h 0min | Rule violated: From now, all methods added should respect basic quality principles |
M:NodaTime.Text.Patterns .TimePatternHelper .CreateAmPmHandler<TResult,TBucket >(Func<TResult,Int32>,Action <TBucket,Int32>) | High | 5min | 1h 0min | Rule violated: From now, all methods added should respect basic quality principles |
M:NodaTime.Text.Patterns .TimePatternHelper .HandleHalfAmPmDesignator<TResult ,TBucket>(Int32,String,Int32,Func <TResult,Int32>,Action<TBucket ,Int32>,SteppedPatternBuilder <TResult,TBucket>) | High | 5min | 1h 0min | Rule violated: From now, all methods added should respect basic quality principles |
M:NodaTime.Text.Patterns .SteppedPatternBuilder<TResult ,TBucket>.AddParseValueAction (Int32,Int32,Char,Int32,Int32 ,Action<TBucket,Int32>) | High | 5min | 1h 0min | Rule violated: From now, all methods added should respect basic quality principles |
M:NodaTime.Text.Patterns .SteppedPatternBuilder<TResult ,TBucket>.HandlePaddedField(Int32 ,PatternFields,Int32,Int32,Func <TResult,Int32>,Action<TBucket ,Int32>) | High | 5min | 1h 0min | Rule violated: From now, all methods added should respect basic quality principles |
C:NodaTime.TimeZones.ZoneRecurrence | High | 16min | 29min | Rule violated: Avoid decreasing code coverage by tests of types |
M:NodaTime.Text.FormatHelper.LeftPad (Int32,Int32,StringBuilder) | High | 28min | 38min | Rule violated: Avoid making complex methods even more complex |
CTOR:NodaTime.CalendarSystem..cctor() | High | 16min | 22min | Rule violated: Avoid making complex methods even more complex |
M:NodaTime.Calendars .YearMonthDayCalculator.GetYear (LocalInstant) | High | 16min | 22min | Rule violated: Avoid making complex methods even more complex |
M:NodaTime.Text.FormatHelper.LeftPad (Int32,Int32,StringBuilder) | High | 26min | 40min | Rule violated: Avoid making large methods even larger |
M:NodaTime.Text.FormatHelper .FormatInvariant(Int64 ,StringBuilder) | High | 16min | 27min | Rule violated: Avoid making large methods even larger |
M:NodaTime.Calendars .YearMonthDayCalculator.GetYear (LocalInstant) | High | 10min | 20min | Rule violated: Avoid making large methods even larger |
S:NodaTime.Calendars.YearMonthDay | High | 21min | 20min | Rule violated: Override equals and operator equals on value types |
S:NodaTime.Calendars .YearStartCacheEntry | High | 17min | 20min | Rule violated: Override equals and operator equals on value types |
C:NodaTime.Utility.BclConversions | High | 15min | 27min | Rule violated: Avoid namespaces mutually dependent |
M:NodaTime.Utility.BclConversions .ToDayOfWeek(IsoDayOfWeek) | High | 15min | 27min | Rule violated: Avoid namespaces mutually dependent |
M:NodaTime.Utility.BclConversions .ToIsoDayOfWeek(DayOfWeek) | High | 15min | 27min | Rule violated: Avoid namespaces mutually dependent |
C:NodaTime.Text.Patterns .DatePatternHelper | High | 15min | 45min | Rule violated: Avoid namespaces mutually dependent |
M:NodaTime.Text.Patterns .DatePatternHelper .CreateCalendarHandler<TResult ,TBucket>(Func<TResult ,CalendarSystem>,Action<TBucket ,CalendarSystem>) | High | 25min | 45min | Rule violated: Avoid namespaces mutually dependent |
C:NodaTime.Globalization .NodaFormatInfo | High | 15min | 1h 9min | Rule violated: Avoid namespaces mutually dependent |
F:NodaTime.Utility.Cache<TKey,TValue >.valueFactory | High | 10min | 20min | Rule violated: API Breaking Changes: Fields |
F:NodaTime.Text.ParseResult<T> .exceptionProvider | High | 10min | 20min | Rule violated: API Breaking Changes: Fields |
F:NodaTime.Text.Patterns .DatePatternHelper+MonthFormatActi onHolder<TResult,TBucket>.getter | High | 10min | 20min | Rule violated: API Breaking Changes: Fields |
F:NodaTime.Text.Patterns .PatternBclSupport<T> .patternParser | High | 10min | 20min | Rule violated: API Breaking Changes: Fields |
F:NodaTime.Text.Patterns .CompositePattern<T> .formatPatternPicker | High | 10min | 20min | Rule violated: API Breaking Changes: Fields |
F:NodaTime.Text.Patterns .SteppedPatternBuilder<TResult ,TBucket>.bucketProvider | High | 10min | 20min | Rule violated: API Breaking Changes: Fields |
F:NodaTime.Text.Patterns .SteppedPatternBuilder<TResult ,TBucket>+SteppedPattern .formatActions | High | 10min | 20min | Rule violated: API Breaking Changes: Fields |
F:NodaTime.Text.Patterns .SteppedPatternBuilder<TResult ,TBucket>+SteppedPattern .bucketProvider | High | 10min | 20min | Rule violated: API Breaking Changes: Fields |
M:NodaTime.Calendars .PersianYearMonthDayCalculator .SetYear(LocalInstant,Int32) | High | 6min | 20min | Rule violated: New Methods should be tested |
CTOR:JetBrains.Annotations .ContractAnnotationAttribute..ctor (String,Boolean) | High | 3min 46s | 20min | Rule violated: New Methods should be tested |
CTOR:JetBrains.Annotations .UsedImplicitlyAttribute..ctor (ImplicitUseKindFlags ,ImplicitUseTargetFlags) | High | 3min 46s | 20min | Rule violated: New Methods should be tested |
CTOR:JetBrains.Annotations .MeansImplicitUseAttribute..ctor (ImplicitUseKindFlags ,ImplicitUseTargetFlags) | High | 3min 46s | 20min | Rule violated: New Methods should be tested |
CTOR:JetBrains.Annotations .StringFormatMethodAttribute..ctor (String) | High | 2min 53s | 20min | Rule violated: New Methods should be tested |
CTOR:JetBrains.Annotations .LocalizationRequiredAttribute. .ctor(Boolean) | High | 2min 53s | 20min | Rule violated: New Methods should be tested |
CTOR:JetBrains.Annotations .ContractAnnotationAttribute..ctor (String) | High | 2min 0s | 20min | Rule violated: New Methods should be tested |
CTOR:JetBrains.Annotations .LocalizationRequiredAttribute. .ctor() | High | 2min 0s | 20min | Rule violated: New Methods should be tested |
CTOR:JetBrains.Annotations .UsedImplicitlyAttribute..ctor() | High | 2min 0s | 20min | Rule violated: New Methods should be tested |
CTOR:JetBrains.Annotations .UsedImplicitlyAttribute..ctor (ImplicitUseKindFlags) | High | 2min 0s | 20min | Rule violated: New Methods should be tested |
CTOR:JetBrains.Annotations .UsedImplicitlyAttribute..ctor (ImplicitUseTargetFlags) | High | 2min 0s | 20min | Rule violated: New Methods should be tested |
CTOR:JetBrains.Annotations .MeansImplicitUseAttribute..ctor() | High | 2min 0s | 20min | Rule violated: New Methods should be tested |
CTOR:JetBrains.Annotations .MeansImplicitUseAttribute..ctor (ImplicitUseKindFlags) | High | 2min 0s | 20min | Rule violated: New Methods should be tested |
CTOR:JetBrains.Annotations .MeansImplicitUseAttribute..ctor (ImplicitUseTargetFlags) | High | 2min 0s | 20min | Rule violated: New Methods should be tested |
M:NodaTime.Calendars .HebrewYearMonthDayCalculator .GetMonthOfYear(LocalInstant,Int32 ) | High | 2min 0s | 20min | Rule violated: New Methods should be tested |
M:NodaTime.Text .OffsetDateTimePattern .CreateWithInvariantCulture(String ) | High | 2min 0s | 20min | Rule violated: New Methods should be tested |
M:NodaTime.Text .OffsetDateTimePattern .CreateWithCurrentCulture(String) | High | 2min 0s | 20min | Rule violated: New Methods should be tested |
M:NodaTime.Text.ZonedDateTimePattern .CreateWithCurrentCulture(String ,IDateTimeZoneProvider) | High | 2min 0s | 20min | Rule violated: New Methods should be tested |
M:NodaTime.Text.ParseResult<T> .ForException(Func<Exception>) | High | 2min 0s | 20min | Rule violated: New Methods should be tested |
M:NodaTime.Text.ParseResult<T> .CannotParseValue(ValueCursor ,String) | High | 2min 0s | 20min | Rule violated: New Methods should be tested |
M:NodaTime.Text.ParseResult<T> .MissingAmPmDesignator(ValueCursor ) | High | 2min 0s | 20min | Rule violated: New Methods should be tested |
M:NodaTime.Text.ParseResult<T> .NoMatchingZoneId(ValueCursor) | High | 2min 0s | 20min | Rule violated: New Methods should be tested |
M:NodaTime.Text.ParseResult<T> .InconsistentMonthValues(String) | High | 2min 0s | 20min | Rule violated: New Methods should be tested |
M:NodaTime.Calendars .FixedMonthYearMonthDayCalculator .SetYear(LocalInstant,Int32) | High | 8min | 20min | Rule violated: Methods refactored should be tested |
M:NodaTime.TimeZones.ZoneYearOffset .WriteLegacy (LegacyDateTimeZoneWriter) | High | 7min | 20min | Rule violated: Methods refactored should be tested |
M:NodaTime.TimeZones.ZoneRecurrence .ToString() | High | 6min | 20min | Rule violated: Methods refactored should be tested |
M:NodaTime.LocalInstant.ToString() | High | 3min 46s | 20min | Rule violated: Methods refactored should be tested |
M:NodaTime.Text .InstantPatternParser+NumberPatter n.ParseImpl(String) | High | 3min 46s | 20min | Rule violated: Methods refactored should be tested |
M:NodaTime.Calendars .FixedMonthYearMonthDayCalculator .GetMonthOfYear(LocalInstant,Int32 ) | High | 2min 53s | 20min | Rule violated: Methods refactored should be tested |
M:NodaTime.Text.ParseResult<T> .ArgumentNull(String) | High | 2min 53s | 20min | Rule violated: Methods refactored should be tested |
GET:NodaTime.LocalTime.get_Millisecond () | High | 2min 0s | 20min | Rule violated: Methods refactored should be tested |
M:NodaTime.Calendars .TimeOfDayCalculator .GetTickOfMillisecond(LocalInstant ) | High | 2min 0s | 20min | Rule violated: Methods refactored should be tested |
M:NodaTime.Calendars .TimeOfDayCalculator .GetMillisecondOfDay(LocalInstant) | High | 2min 0s | 20min | Rule violated: Methods refactored should be tested |
M:NodaTime.Calendars .TimeOfDayCalculator .GetSecondOfDay(LocalInstant) | High | 2min 0s | 20min | Rule violated: Methods refactored should be tested |
M:NodaTime.Calendars .TimeOfDayCalculator .GetMinuteOfDay(LocalInstant) | High | 2min 0s | 20min | Rule violated: Methods refactored should be tested |
M:NodaTime.Text.ZonedDateTimePattern .WithTemplateValue(ZonedDateTime) | High | 2min 0s | 20min | Rule violated: Methods refactored should be tested |
C:NodaTime.Calendars .HebrewYearMonthDayCalculator | High | 2min 0s | 20min | Rule violated: Types almost 100% tested should be 100% tested |
C:NodaTime.Calendars .IslamicYearMonthDayCalculator | High | 2min 56s | 20min | Rule violated: Types almost 100% tested should be 100% tested |
C:NodaTime.TimeZones .BclDateTimeZone+BclAdjustmentRule | High | 2min 0s | 20min | Rule violated: Types almost 100% tested should be 100% tested |
N:NodaTime.Calendars | High | 32min | 20min | Rule violated: Namespaces almost 100% tested should be 100% tested |
M:NodaTime.Text.FormatHelper.LeftPad (Int32,Int32,StringBuilder) | High | 2min 0s | 20min | Rule violated: Types that used to be 100% covered by tests should still be 100% covered |
Statistics
Stat | Severity | Debt | Annual Interest |
---|---|---|---|
Sum: | - | 2d 0h | 7d 4h |
Average: | - | 9min | 35min |
Minimum: | - | 2min 0s | 20min |
Maximum: | - | 2h 6min | 1h 9min |
Standard deviation: | - | 16min | 18min |
Variance: | - | 32d | 43d |
![]() | Quality Gate Fail: Critical Rules Violated |
6 rules matched
6 rules | issues | Full Name |
---|---|---|
Avoid types too big | 1 issue
| Rule |
Avoid methods too big, too complex | 5 issues
| Rule |
Avoid methods with too many parameters | First 5 of 8 issues
| Rule |
Avoid namespaces mutually dependent | First 5 of 214 issues
| Rule |
Fields | First 5 of 8 issues
| Rule |
Avoid non-readonly static fields | 2 issues
| Rule |
Statistics
Stat | issues |
---|---|
Sum: | 238 |
Average: | 39.67 |
Minimum: | 1 |
Maximum: | 214 |
Standard deviation: | 78.01 |
Variance: | 6 086 |
![]() | Quality Gate Pass: Percentage Debt |
Scalar Result: 17.36 %
![]() | Quality Gate Warn: New Debt since Baseline |
Scalar Result: 1.3 man-days
![]() | Quality Gate Fail: Debt Rating per Namespace |
4 namespaces matched
4 namespaces | debtRating | debtRatio | devTimeInManDay | debtInManDay | issues | Full Name |
---|---|---|---|---|---|---|
![]() | D | 43.51 | 1d 6h | 6h 27min | First 5 of 90 issues
| JetBrains.Annotations |
![]() | D | 21.84 | 40d | 8d 6h | First 5 of 275 issues
| NodaTime |
![]() | D | 25.5 | 3d 4h | 7h 9min | First 5 of 53 issues
| NodaTime.Globalization |
![]() | D | 32.9 | 10d 4h | 3d 3h | First 5 of 85 issues
| NodaTime.Text.Patterns |
Statistics
Stat | debtRating | debtRatio | devTimeInManDay | debtInManDay | issues |
---|---|---|---|---|---|
Sum: | - | 123.75 | 56d | 13d 7h | 503 |
Average: | - | 30.94 | 14d 0h | 3d 3h | 125.75 |
Minimum: | - | 21.84 | 1d 6h | 6h 27min | 53 |
Maximum: | - | 43.51 | 40d | 8d 6h | 275 |
Standard deviation: | - | 8.28 | 15d 3h | 3d 1h | 87.33 |
Variance: | - | 68.52 | 6 898 016d | 302 667d | 7 627 |
![]() | Quality Gate Fail: New Annual Interest since Baseline |
Scalar Result: 7.12 man-days
Hot Spots 000 |
Code Smells 000 |
Code Smells Regression 000 |
Object Oriented Design 000 |
Design 000 |
Architecture 000 |
API Breaking Changes 000 |
Code Coverage 000 |
Dead Code 000 |
Security 000 |
Visibility 000 |
Immutability 000 |
Naming Conventions 000 |
Source Files Organization 000 |
.NET Framework Usage 000 |
Defining JustMyCode 000 |
Trend Metrics 000 |
Code Diff Summary 000 |
Rules extracted from Source Code 000 |
Code Smells 053 |
|
![]() | Critical Rule Violated: Avoid types too big |
• How to Fix Issues of this Rule: Types with many lines of code should be split in a group of smaller types. To refactor a God 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 God Class must be splitted in smaller classes. These smaller classes can eventually become private classes nested in the original God 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 God Class. To identify these responsibilities it often helps to look for subsets of methods strongly coupled with subsets of fields. • If the God 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 God Class at first and delegate calls to the new extracted classes. In the end the God 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.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1000:AvoidTypesTooBig", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
1 type matched
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
1 type | locJustMyCode | # IL instructions | Methods | Fields | Debt | Annual Interest | Full Name |
---|---|---|---|---|---|---|---|
![]() | 218 | 1 499 | First 5 of 46 methods
| First 5 of 29 fields
| 1h 5min | 4min 22s | NodaTime.Period |
![]() | Rule Violated: Avoid types with too many methods |
• How to Fix Issues of this Rule: To refactor properly a God 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.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1001:AvoidTypesWithTooManyMethods", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
14 types matched
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
14 types | nbMethods | instanceMethods | staticMethods | # lines of code (LOC) | Debt | Annual Interest | Full Name |
---|---|---|---|---|---|---|---|
![]() | 48 | First 5 of 40 methods
| First 5 of 8 methods
| 147 | 2h 24min | 39min | NodaTime.CalendarSystem |
![]() | 44 | First 5 of 23 methods
| First 5 of 21 methods
| 67 | 2h 12min | 33min | NodaTime.Instant |
![]() | 42 | First 5 of 31 methods
| First 5 of 11 methods
| 136 | 2h 6min | 31min | NodaTime.LocalDateTime |
![]() | 42 | 4 methods
| First 5 of 38 methods
| 70 | 2h 6min | 31min | NodaTime.Text.ParseResult<T> |
![]() | 40 | First 5 of 14 methods
| First 5 of 26 methods
| 60 | 2h 0min | 28min | NodaTime.Duration |
![]() | 34 | First 5 of 22 methods
| First 5 of 12 methods
| 77 | 1h 42min | 20min | NodaTime.LocalDate |
![]() | 34 | First 5 of 14 methods
| First 5 of 20 methods
| 53 | 1h 42min | 20min | NodaTime.Offset |
![]() | 33 | First 5 of 19 methods
| First 5 of 14 methods
| 83 | 1h 39min | 19min | NodaTime.LocalTime |
![]() | 33 | First 5 of 12 methods
| First 5 of 21 methods
| 218 | 1h 39min | 19min | NodaTime.Period |
![]() | 32 | First 5 of 21 methods
| First 5 of 11 methods
| 108 | 1h 36min | 17min | NodaTime.ZonedDateTime |
![]() | 31 | First 5 of 31 methods
| no method | 82 | 1h 33min | 16min | NodaTime.Calendars .YearMonthDayCalculator |
![]() | 22 | First 5 of 9 methods
| First 5 of 13 methods
| 35 | 1h 6min | 4min 38s | NodaTime.LocalInstant |
![]() | 22 | First 5 of 17 methods
| 5 methods
| 137 | 1h 6min | 4min 38s | NodaTime.Text.Patterns .SteppedPatternBuilder<TResult ,TBucket> |
![]() | 21 | First 5 of 19 methods
| 2 methods
| 115 | 1h 3min | 3min 19s | NodaTime.DateTimeZone |
![]() | Rule Violated: Avoid types with too many fields |
• How to Fix Issues of this Rule: 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.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1002:AvoidTypesWithTooManyFields", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
1 type matched
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
1 type | instanceFields | staticFields | methodsAssigningFields | Size of instance | Debt | Annual Interest | Full Name |
---|---|---|---|---|---|---|---|
![]() | First 5 of 17 fields
| no field | First 5 of 14 methods
| 68 | 1h 5min | 4min 34s | NodaTime.Globalization .NodaFormatInfo |
![]() | Critical Rule Violated: Avoid methods too big, too complex |
• How to Fix Issues of this Rule: 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.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1003:AvoidMethodsTooBigTooComplex", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
5 methods matched
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
5 methods | # lines of code (LOC) | Cyclomatic Complexity (CC) | IL Cyclomatic Complexity (ILCC) | IL Nesting Depth | complexityScore | Debt | Annual Interest | Full Name |
---|---|---|---|---|---|---|---|---|
![]() ![]() | 54 | 19 | 26 | 3 | 63 | 1h 19min | 9min | NodaTime.Text.FormatHelper.LeftPad (Int32,Int32,StringBuilder) |
![]() | 65 | 31 | 37 | 9 | 102 | 2h 5min | 18min | NodaTime.Text .PeriodPattern+NormalizingIsoPatte rnImpl.Parse(String) |
![]() | 47 | 23 | 30 | 9 | 83 | 1h 43min | 13min | NodaTime.Text .PeriodPattern+RoundtripPatternImp l.Parse(String) |
![]() | 39 | 15 | 33 | 3 | 54 | 1h 8min | 7min | NodaTime.TimeZones .TzdbDateTimeZoneSource.Validate() |
![]() | 2 | 24 | 40 | 5 | 53 | 1h 7min | 7min | NodaTime.Calendars .GJYearMonthDayCalculator .GetMonthOfYear(LocalInstant,Int32 ) |
![]() | Critical Rule Violated: Avoid methods with too many parameters |
• How to Fix Issues of this Rule: 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.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1004:AvoidMethodsWithTooManyParameters", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
8 methods matched
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
8 methods | # Parameters | Debt | Annual Interest | Full Name |
---|---|---|---|---|
![]() | 9 | 1h 18min | 16min | NodaTime.Period..ctor(Int64,Int64 ,Int64,Int64,Int64,Int64,Int64 ,Int64,Int64) |
![]() | 9 | 1h 18min | 16min | NodaTime.LocalDateTime..ctor(Int32 ,Int32,Int32,Int32,Int32,Int32 ,Int32,Int32,CalendarSystem) |
![]() | 8 | 1h 9min | 9min | NodaTime.CalendarSystem .GetLocalInstant(Int32,Int32,Int32 ,Int32,Int32,Int32,Int32,Int32) |
![]() | 8 | 1h 9min | 9min | NodaTime.LocalDateTime..ctor(Int32 ,Int32,Int32,Int32,Int32,Int32 ,Int32,CalendarSystem) |
![]() | 8 | 1h 9min | 9min | NodaTime.LocalDateTime..ctor(Int32 ,Int32,Int32,Int32,Int32,Int32 ,Int32,Int32) |
![]() | 7 | 1h 0min | 2min 0s | NodaTime.LocalDateTime..ctor(Int32 ,Int32,Int32,Int32,Int32,Int32 ,CalendarSystem) |
![]() | 7 | 1h 0min | 2min 0s | NodaTime.LocalDateTime..ctor(Int32 ,Int32,Int32,Int32,Int32,Int32 ,Int32) |
![]() | 7 | 1h 0min | 2min 0s | NodaTime.TimeZones.ZoneYearOffset. .ctor(TransitionMode,Int32,Int32 ,Int32,Boolean,LocalTime,Boolean) |
![]() | Rule Violated: Avoid methods with too many overloads |
• How to Fix Issues of this Rule: 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 VB.NET 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. For this reason, the default version of this rule doesn't match overloads whose name start with "visit" or "dispatch" (case-unsensitive) to avoid match overload visitors, and you can adapt this rule to your own naming convention. 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 3 minutes per method overload.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1005:AvoidMethodsWithTooManyOverloads", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
1 method matched
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
1 method | overloadsPruned | Debt | Severity | Full Name |
---|---|---|---|---|
![]() | First 5 of 11 methods
| 33min | Medium | NodaTime.LocalDateTime..ctor (LocalInstant) |
![]() | Rule Violated: Avoid methods potentially poorly commented |
• How to Fix Issues of this Rule: 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.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1006:AvoidMethodsPotentiallyPoorlyCommented", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
7 methods matched
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
7 methods | Percentage Comment | # lines of code (LOC) | # lines of comment | nbLinesOfCodeNotCommented | Debt | Annual Interest | Full Name |
---|---|---|---|---|---|---|---|
![]() ![]() | 3.23 | 30 | 1 | 29 | 2min 54s | 13min | NodaTime.Text.FormatHelper .FormatInvariant(Int64 ,StringBuilder) |
![]() | 5.88 | 32 | 2 | 30 | 3min 0s | 11min | NodaTime.Text.ValueCursor .ParseInt64<T>(Int64&) |
![]() | 3.23 | 30 | 1 | 29 | 2min 54s | 13min | NodaTime.TimeZones .PrecalculatedDateTimeZone .WriteLegacy (LegacyDateTimeZoneWriter) |
![]() | 0 | 26 | 0 | 26 | 2min 36s | 16min | NodaTime.TimeZones.IO .LegacyDateTimeZoneWriter .WriteCount(Int32) |
![]() | 3.7 | 26 | 1 | 25 | 2min 30s | 13min | NodaTime.Text .PeriodPattern+NormalizingIsoPatte rnImpl.Format(Period) |
![]() | 7.69 | 24 | 2 | 22 | 2min 12s | 10min | NodaTime.Period.Between (LocalDateTime,LocalDateTime ,PeriodUnits) |
![]() | 0 | 22 | 0 | 22 | 2min 12s | 16min | NodaTime.Period.AddTo(LocalInstant ,CalendarSystem,Int32) |
![]() | Rule Violated: Avoid types with poor cohesion |
• How to Fix Issues of this Rule: 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.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1007:AvoidTypesWithPoorCohesion", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
4 types matched
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
4 types | Lack of Cohesion Of Methods (LCOM) | # Methods | # Fields | poorCohesionScore | Debt | Annual Interest | Full Name |
---|---|---|---|---|---|---|---|
![]() | 0.95 | 44 | 21 | 16.09 | 1h 2min | 21min | NodaTime.Globalization .NodaFormatInfo |
![]() | 0.93 | 62 | 25 | 13.14 | 47min | 16min | NodaTime.CalendarSystem |
![]() | 0.85 | 13 | 14 | 6.1 | 10min | 3min 54s | NodaTime.Calendars .IslamicYearMonthDayCalculator |
![]() | 0.82 | 14 | 26 | 5.3 | 6min | 2min 31s | NodaTime.TimeZones.IO .LegacyDateTimeZoneWriter |
Code Smells Regression 360 |
|
![]() | Rule Violated: From now, all types added should be 100% covered by tests |
• How to Fix Issues of this Rule: Write more unit-tests dedicated to cover code not covered yet. If you find some hard-to-test code, it is certainly a sign that this code is not well designed and hence, needs refactoring. You'll find code impossible to cover by unit-tests, like calls to MessageBox.Show(). An infrastructure must be defined to be able to mock such code at test-time. Issues of this rule have a constant 10 minutes Debt, because the Debt, which means the effort to write tests for the culprit type, is already estimated for issues in the category Code Coverage. However issues of this rule have a High severity, with even more interests for issues on new types since baseline, because the proper time to write tests for these types is now, before they get commited in the next production release.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1101:FromNowAllTypesAddedShouldBe100PercentCoveredByTests", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
10 types matched
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
10 types | Percentage Coverage | methodsCulprit | # lines of code (LOC) | Debt | Annual Interest | Full Name |
---|---|---|---|---|---|---|
![]() | 0% | no method | 4 | 10min | 1h 0min | JetBrains.Annotations .StringFormatMethodAttribute |
![]() | 0% | no method | 8 | 10min | 1h 0min | JetBrains.Annotations .ContractAnnotationAttribute |
![]() | 0% | no method | 5 | 10min | 1h 0min | JetBrains.Annotations .LocalizationRequiredAttribute |
![]() | 0% | no method | 10 | 10min | 1h 0min | JetBrains.Annotations .UsedImplicitlyAttribute |
![]() | 0% | no method | 10 | 10min | 1h 0min | JetBrains.Annotations .MeansImplicitUseAttribute |
![]() | 98.85% | 1 method
| 87 | 10min | 1h 0min | NodaTime.Calendars .HebrewYearMonthDayCalculator |
![]() | 82.5% | 2 methods
| 40 | 10min | 1h 0min | NodaTime.Calendars .PersianYearMonthDayCalculator |
![]() | 94.12% | 1 method
| 34 | 10min | 1h 0min | NodaTime.Calendars .RegularYearMonthDayCalculator |
![]() | 97.06% | 1 method
| 34 | 10min | 1h 0min | NodaTime.TimeZones .BclDateTimeZone+BclAdjustmentRule |
![]() | 77.78% | 1 method
| 9 | 10min | 1h 0min | NodaTime.TimeZones .PartialZoneIntervalMap+CombinedPa rtialZoneIntervalMap |
![]() | Rule Violated: From now, all methods added should respect basic quality principles |
• How to Fix Issues of this Rule: 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). 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. Issues of this rule have a constant 5 minutes Debt, because the Debt, which means the effort to fix such issue, is already estimated for issues of rules in the category Code Smells. However issues of this rule have a High severity, with even more interests for issues on new methods since baseline, because the proper time to increase the quality of these methods is now, before they get commited in the next production release.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1102:FromNowAllMethodsAddedShouldRespectBasicQualityPrinciples", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
24 methods matched
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
24 methods | # lines of code (LOC) | # IL instructions | Cyclomatic Complexity (CC) | IL Cyclomatic Complexity (ILCC) | IL Nesting Depth | # Parameters | # Variables | # Overloads | Debt | Annual Interest | Full Name |
---|---|---|---|---|---|---|---|---|---|---|---|
![]() | 9 | 133 | 11 | 10 | 4 | 1 | 9 | 1 | 5min | 1h 0min | NodaTime.Calendars .HebrewScripturalCalculator .ElapsedDaysNoCache(Int32) |
![]() | 11 | 76 | 5 | 9 | 2 | 1 | 10 | 1 | 5min | 1h 0min | NodaTime.Calendars .HebrewScripturalCalculator .ComputeCacheEntry(Int32) |
![]() | 16 | 92 | 5 | 9 | 2 | 3 | 10 | 1 | 5min | 1h 0min | NodaTime.Calendars .HebrewScripturalCalculator .AbsoluteFromHebrew(Int32,Int32 ,Int32) |
![]() | 17 | 117 | 12 | 14 | 3 | 2 | 12 | 1 | 5min | 1h 0min | NodaTime.Calendars .HebrewYearMonthDayCalculator .SetYear(LocalInstant,Int32) |
![]() | 23 | 144 | 5 | 9 | 2 | 2 | 11 | 1 | 5min | 1h 0min | NodaTime.Calendars .HebrewYearMonthDayCalculator .AddMonths(LocalInstant,Int32) |
![]() | 16 | 128 | 6 | 11 | 2 | 2 | 11 | 1 | 5min | 1h 0min | NodaTime.Calendars .HebrewYearMonthDayCalculator .MonthsBetween(LocalInstant ,LocalInstant) |
![]() | 2 | 13 | 1 | 1 | 0 | 6 | 0 | 1 | 5min | 1h 0min | NodaTime.Calendars .RegularYearMonthDayCalculator. .ctor(Int32,Int32,Int32,Int64 ,Int64,Era[]) |
![]() | 22 | 132 | 5 | 7 | 1 | 2 | 14 | 1 | 5min | 1h 0min | NodaTime.Calendars .RegularYearMonthDayCalculator .AddMonths(LocalInstant,Int32) |
![]() | 17 | 123 | 5 | 6 | 2 | 3 | 10 | 1 | 5min | 1h 0min | NodaTime.TimeZones.BclDateTimeZone .BuildMap (BclDateTimeZone+BclAdjustmentRule [],Offset,String) |
![]() | 15 | 130 | 4 | 6 | 1 | 2 | 9 | 1 | 5min | 1h 0min | NodaTime.TimeZones .BclDateTimeZone+BclAdjustmentRule ..ctor(TimeZoneInfo ,TimeZoneInfo+AdjustmentRule) |
![]() | 3 | 52 | 8 | 3 | 7 | 1 | 4 | 1 | 5min | 1h 0min | NodaTime.TimeZones .BclDateTimeZone+BclAdjustmentRule .IsStandardOffsetOnlyRule (TimeZoneInfo+AdjustmentRule) |
![]() | 27 | 160 | 9 | 14 | 2 | 1 | 12 | 1 | 5min | 1h 0min | NodaTime.TimeZones .PartialZoneIntervalMap .ConvertToFullMap(IEnumerable <PartialZoneIntervalMap>) |
![]() | 17 | 90 | 6 | 7 | 2 | 4 | 11 | 1 | 5min | 1h 0min | NodaTime.Text .LocalDateTimePatternParser+LocalD ateTimeParseBucket.CombineBuckets (PatternFields ,LocalDatePatternParser+LocalDateP arseBucket ,LocalTimePatternParser+LocalTimeP arseBucket,String) |
![]() | 18 | 127 | 8 | 13 | 2 | 4 | 10 | 1 | 5min | 1h 0min | NodaTime.Text.FormatHelper .AppendFractionTruncate(Int32 ,Int32,Int32,StringBuilder) |
![]() | 13 | 102 | 7 | 10 | 1 | 2 | 9 | 1 | 5min | 1h 0min | NodaTime.Text .LocalDatePatternParser+LocalDateP arseBucket.CalculateValue (PatternFields,String) |
![]() | 26 | 201 | 15 | 20 | 6 | 2 | 11 | 1 | 5min | 1h 0min | NodaTime.Text .LocalDatePatternParser+LocalDateP arseBucket.DetermineYear (PatternFields,String) |
![]() | 9 | 84 | 6 | 10 | 1 | 2 | 9 | 1 | 5min | 1h 0min | NodaTime.Text .LocalTimePatternParser+LocalTimeP arseBucket.CalculateValue (PatternFields,String) |
![]() | 20 | 155 | 10 | 13 | 4 | 3 | 9 | 1 | 5min | 1h 0min | NodaTime.Text .LocalTimePatternParser+LocalTimeP arseBucket.DetermineHour (PatternFields,String,Int32&) |
![]() | 21 | 114 | 11 | 12 | 5 | 2 | 11 | 1 | 5min | 1h 0min | NodaTime.Text .ZonedDateTimePatternParser+ZonedD ateTimeParseBucket.CalculateValue (PatternFields,String) |
![]() | 23 | 210 | 13 | 19 | 1 | 3 | 1 | 1 | 5min | 1h 0min | NodaTime.Text.Patterns .DatePatternHelper .CreateYearHandler<TResult,TBucket >(Func<TResult,Int32>,Func <TResult ,Int32>,Action<TBucket,Int32>) |
![]() | 44 | 370 | 23 | 39 | 1 | 2 | 1 | 1 | 5min | 1h 0min | NodaTime.Text.Patterns .TimePatternHelper .CreateAmPmHandler<TResult,TBucket >(Func<TResult,Int32>,Action <TBucket,Int32>) |
![]() | 18 | 179 | 10 | 15 | 1 | 6 | 1 | 1 | 5min | 1h 0min | NodaTime.Text.Patterns .TimePatternHelper .HandleHalfAmPmDesignator<TResult ,TBucket>(Int32,String,Int32,Func <TResult,Int32>,Action<TBucket ,Int32>,SteppedPatternBuilder <TResult,TBucket>) |
![]() | 16 | 134 | 8 | 12 | 1 | 6 | 0 | 1 | 5min | 1h 0min | NodaTime.Text.Patterns .SteppedPatternBuilder<TResult ,TBucket>.AddParseValueAction (Int32,Int32,Char,Int32,Int32 ,Action<TBucket,Int32>) |
![]() | 5 | 66 | 2 | 3 | 1 | 6 | 1 | 1 | 5min | 1h 0min | NodaTime.Text.Patterns .SteppedPatternBuilder<TResult ,TBucket>.HandlePaddedField(Int32 ,PatternFields,Int32,Int32,Func <TResult,Int32>,Action<TBucket ,Int32>) |
![]() | Rule Violated: Avoid decreasing code coverage by tests of types |
• How to Fix Issues of this Rule: Write more unit-tests dedicated to cover changes in matched types not covered yet. If you find some hard-to-test code, it is certainly a sign that this code is not well designed and hence, needs refactoring. The estimated Debt, which means the effort to cover by test code that used to be covered, varies linearly 15 minutes to 3 hours, depending on the number of lines of code that are not covered by tests anymore. Severity of issues of this rule varies from High to Critical depending on the number of lines of code that are not covered by tests anymore. Because the loss in code coverage happened since the baseline, the severity is high because it is important to focus on these issues now, before such code gets released in production.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1103:AvoidDecreasingCodeCoverageByTestsOfTypes", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
1 type matched
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
1 type | OldCoveragePercent | NewCoveragePercent | OldLoc | NewLoc | uncoveredLoc | Debt | Annual Interest | Full Name |
---|---|---|---|---|---|---|---|---|
![]() | 82.8 | 80.65 | 93 | 93 | 2 | 16min | 29min | NodaTime.TimeZones.ZoneRecurrence |
![]() | Rule Violated: Avoid making complex methods even more complex |
• How to Fix Issues of this Rule: 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 linearly from 15 to 60 minutes depending on the extra complexity added. Issues of this rule have a High severity, because it is important to focus on these issues now, before such code gets released in production.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1104:AvoidMakingComplexMethodsEvenMoreComplex", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
3 methods matched
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
3 methods | oldComplexityScore | complexityScore | diff | Debt | Annual Interest | Full Name |
---|---|---|---|---|---|---|
![]() | 26 | 42 | 16 | 28min | 38min | NodaTime.Text.FormatHelper.LeftPad (Int32,Int32,StringBuilder) |
![]() | 56 | 59 | 3 | 16min | 22min | NodaTime.CalendarSystem..cctor() |
![]() | 14 | 17 | 3 | 16min | 22min | NodaTime.Calendars .YearMonthDayCalculator.GetYear (LocalInstant) |
![]() | Rule Violated: Avoid making large methods even larger |
• How to Fix Issues of this Rule: Usually too big methods should be split in smaller methods. But long methods with no branch conditions, that typically initialize some data, are not necessarily a problem to maintain, and might not need refactoring. The estimated Debt, which means the effort to fix such issue, varies linearly from 5 to 20 minutes depending on the number of lines of code added. The estimated Debt, which means the effort to fix such issue, varies linearly from 10 to 60 minutes depending on the extra complexity added. Issues of this rule have a High severity, because it is important to focus on these issues now, before such code gets released in production.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1105:AvoidMakingLargeMethodsEvenLarger", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
3 methods matched
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
3 methods | oldLoc | newLoc | diff | Debt | Annual Interest | Full Name |
---|---|---|---|---|---|---|
![]() | 20 | 54 | 34 | 26min | 40min | NodaTime.Text.FormatHelper.LeftPad (Int32,Int32,StringBuilder) |
![]() | 16 | 30 | 14 | 16min | 27min | NodaTime.Text.FormatHelper .FormatInvariant(Int64 ,StringBuilder) |
![]() | 17 | 19 | 2 | 10min | 20min | NodaTime.Calendars .YearMonthDayCalculator.GetYear (LocalInstant) |
![]() | Rule Violated: Avoid adding methods to a type that already had many methods |
• How to Fix Issues of this Rule: To refactor such type and increase code quality and maintainability, certainly you'll have to split the type into several smaller types that together, implement the same logic. The estimated Debt, which means the effort to fix such issue, is equal to 10 minutes per method added. Issues of this rule have a High severity, because it is important to focus on these issues now, before such code gets released in production.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1106:AvoidAddingMethodsToATypeThatAlreadyHadManyMethods", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
5 types matched
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
5 types | nbOldMethods | nbNewMethods | addedMethods | removedMethods | Debt | Annual Interest | Full Name |
---|---|---|---|---|---|---|---|
![]() | 57 | 59 | 2 methods
| no method | 20min | 2min 47s | NodaTime.CalendarSystem |
![]() | 39 | 40 | 1 method
| no method | 10min | 2min 0s | NodaTime.OffsetDateTime |
![]() | 45 | 46 | 1 method
| no method | 10min | 2min 0s | NodaTime.LocalDate |
![]() | 40 | 41 | 1 method
| no method | 10min | 2min 0s | NodaTime.LocalTime |
![]() | 57 | 58 | 1 method
| no method | 10min | 2min 0s | NodaTime.ZonedDateTime |
Object Oriented Design 950 |
![]() | Rule Violated: Base class should not use derivatives |
• How to Fix Issues of this Rule: Understand the need for using derivatives, then imagine a new design, and then refactor. Typically an algorithm in the base class needs to access something from derived classes. You can try to encapsulate this access behind an abstract or a virtual method. If you see in the base class some conditions on typeof(DerivedClass) not only urgent refactoring is needed. Such condition can easily be replaced through an abstract or a virtual method. Sometime you'll see a base class that creates instance of some derived classes. In such situation, certainly using the factory method pattern http://en.wikipedia.org/wiki/Factory_method_pattern or the abstract factory pattern http://en.wikipedia.org/wiki/Abstract_factory_pattern will improve the design. The estimated Debt, which means the effort to fix such issue, is equal to 3 minutes per derived class used by the base class + 3 minutes per member of a derived class used by the base class.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1201:BaseClassShouldNotUseDerivatives", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
3 types matched
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
3 types | derivedClassesUsed | derivedClassesMemberUsed | Debt | Severity | Full Name |
---|---|---|---|---|---|
![]() | 2 types
| 2 fields
| 12min | High | NodaTime.OffsetDateTime+Comparer |
![]() | 2 types
| 2 fields
| 12min | High | NodaTime.ZonedDateTime+Comparer |
![]() | 1 type
| 1 method
| 6min | High | NodaTime.DateTimeZone |
![]() | Rule Violated: Class shouldn't be too deep in inheritance tree |
• How to Fix Issues of this Rule: In Object-Oriented Programming, a well-known motto is Favor Composition over Inheritance. This is because inheritance comes with pitfalls. In general, the implementation of a derived class is very bound up with the base class implementation. Also a base class exposes implementation details to its derived classes, that's why it's often said that inheritance breaks encapsulation. On the other hands, Composition favors binding with interfaces over binding with implementations. Hence, not only the encapsulation is preserved, but the design is clearer, because interfaces make it explicit and less coupled. Hence, to break a long inheritance chain, Composition is often a powerful way to enhance the design of the refactored underlying logic. You can also read: http://en.wikipedia.org/wiki/Composition_over_inheritance and http://stackoverflow.com/questions/49002/prefer-composition-over-inheritance The estimated Debt, which means the effort to fix such issue, depends linearly upon the depth of inheritance.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1202:ClassShouldntBeTooDeepInInheritanceTree", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
4 types matched
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
4 types | baseClasses | Depth of inheritance | Debt | Severity | Full Name |
---|---|---|---|---|---|
![]() ![]() | 3 types
| 4 | 3min 0s | Medium | NodaTime.Calendars .CopticYearMonthDayCalculator |
![]() ![]() | 3 types
| 4 | 3min 0s | Medium | NodaTime.Calendars .GregorianYearMonthDayCalculator |
![]() ![]() | 3 types
| 4 | 3min 0s | Medium | NodaTime.Calendars .JulianYearMonthDayCalculator |
![]() | 4 types
| 5 | 6min | Medium | NodaTime.Calendars .IsoYearMonthDayCalculator |
![]() | Rule Violated: Class with no descendant should be sealed if possible |
• How to Fix Issues of this Rule: For each matched class, take the time to assess if it is really meant to be subclassed. Certainly most matched class will end up being declared as sealed.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1203:ClassWithNoDescendantShouldBeSealedIfPossible", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
4 types matched
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
4 types | # lines of code (LOC) | Debt | Severity | Full Name |
---|---|---|---|---|
![]() ![]() | 9 | 0min 30s | Medium | NodaTime.TimeZones .PartialZoneIntervalMap+CombinedPa rtialZoneIntervalMap |
![]() ![]() | 0 | 0min 30s | Medium | NodaTime.Annotations .VisibleForTestingAttribute |
![]() | 45 | 0min 30s | Medium | NodaTime.TimeZones.IO .TzdbStreamData+Builder |
![]() | 14 | 0min 30s | Medium | NodaTime.Globalization .NodaFormatInfo+EraDescription |
![]() | Rule Violated: Overrides of Method() should call base.Method() |
• How to Fix Issues of this Rule: You should investigate if inheritance is the right choice to bind the base class implementation with the derived classes implementations. Does presenting the method with polymorphic behavior through an interface, would be a better design choice? In such situation, often using the design pattern template method http://en.wikipedia.org/wiki/Template_method_pattern might help improving the design.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1204:OverridesOfMethodShouldCallBaseMethod", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
7 methods matched
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
7 methods | shouldCall | definedInBaseClass | Debt | Severity | Full Name |
---|---|---|---|---|---|
![]() ![]() | ![]() | ![]() | 5min | Medium | NodaTime.Calendars .HebrewYearMonthDayCalculator .GetDayOfMonth(LocalInstant) |
![]() ![]() | ![]() | ![]() | 5min | Medium | NodaTime.Calendars .HebrewYearMonthDayCalculator .GetMonthOfYear(LocalInstant) |
![]() ![]() | ![]() | ![]() | 5min | Medium | NodaTime.Calendars .HebrewYearMonthDayCalculator .GetDaysInYear(Int32) |
![]() ![]() | ![]() | ![]() | 5min | Medium | NodaTime.Calendars .HebrewYearMonthDayCalculator .GetTicksInYear(Int32) |
![]() | ![]() | ![]() | 5min | Medium | NodaTime.TimeZones .DaylightSavingsDateTimeZone .GetUtcOffset(Instant) |
![]() | ![]() | ![]() | 5min | Medium | NodaTime.TimeZones .FixedDateTimeZone.GetUtcOffset (Instant) |
![]() | ![]() | ![]() | 5min | Medium | NodaTime.TimeZones .FixedDateTimeZone .GetZoneIntervalPair(LocalInstant) |
![]() | Rule Violated: Methods should be declared static if possible |
• How to Fix Issues of this Rule: Declare matched methods as static. Since such method doesn't use any instance fields and methods of its type and base-types, you should consider if it makes sense, to move such a method to a static utility class.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1208:MethodsShouldBeDeclaredStaticIfPossible", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
23 methods matched
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
23 methods | staticFieldsUsed | methodsCallingMe | Debt | Severity | Full Name |
---|---|---|---|---|---|
![]() | no field | 1 method
| 1min 0s | Medium | NodaTime.CalendarSystem .get_UsesIsoDayOfWeek() |
![]() | no field | 1 method
| 1min 0s | Medium | NodaTime.CalendarSystem .GetTickOfSecond(LocalInstant) |
![]() | no field | no method | 0min 30s | Medium | NodaTime.CalendarSystem .GetTickOfMillisecond(LocalInstant ) |
![]() | no field | 1 method
| 1min 0s | Medium | NodaTime.CalendarSystem .GetTickOfDay(LocalInstant) |
![]() | no field | 1 method
| 1min 0s | Medium | NodaTime.CalendarSystem .GetMillisecondOfSecond (LocalInstant) |
![]() | no field | no method | 0min 30s | Medium | NodaTime.CalendarSystem .GetMillisecondOfDay(LocalInstant) |
![]() | no field | 1 method
| 1min 0s | Medium | NodaTime.CalendarSystem .GetSecondOfMinute(LocalInstant) |
![]() | no field | no method | 0min 30s | Medium | NodaTime.CalendarSystem .GetSecondOfDay(LocalInstant) |
![]() | no field | 1 method
| 1min 0s | Medium | NodaTime.CalendarSystem .GetMinuteOfHour(LocalInstant) |
![]() | no field | no method | 0min 30s | Medium | NodaTime.CalendarSystem .GetMinuteOfDay(LocalInstant) |
![]() | no field | 1 method
| 1min 0s | Medium | NodaTime.CalendarSystem .GetHourOfDay(LocalInstant) |
![]() | no field | no method | 0min 30s | Medium | NodaTime.CalendarSystem .GetHourOfHalfDay(LocalInstant) |
![]() | no field | 2 methods
| 1min 30s | Medium | NodaTime.CalendarSystem .GetClockHourOfHalfDay (LocalInstant) |
![]() | no field | 2 methods
| 1min 30s | Medium | NodaTime.CalendarSystem .GetDayOfWeek(LocalInstant) |
![]() | no field | 1 method
| 1min 0s | Medium | NodaTime.Globalization .NodaFormatInfo .ConvertGenitiveMonthArray(IList <String>,String[],String[]) |
![]() | no field | 1 method
| 1min 0s | Medium | NodaTime.TimeZones .BclDateTimeZoneSource.ForId (String) |
![]() | no field | no method | 0min 30s | Medium | NodaTime.TimeZones .PrecalculatedDateTimeZone .IsCachable() |
![]() | no field | 1 method
| 1min 0s | Medium | NodaTime.Text .LocalDateTimePatternParser .ExpandStandardFormatPattern(Char ,NodaFormatInfo) |
![]() | no field | 1 method
| 1min 0s | Medium | NodaTime.Text .LocalDatePatternParser .ExpandStandardFormatPattern(Char ,NodaFormatInfo) |
![]() | no field | 1 method
| 1min 0s | Medium | NodaTime.Text .LocalTimePatternParser .ExpandStandardFormatPattern(Char ,NodaFormatInfo) |
![]() | no field | 1 method
| 1min 0s | Medium | NodaTime.Text.OffsetPatternParser .ExpandStandardFormatPattern(Char ,NodaFormatInfo) |
![]() | no field | 1 method
| 1min 0s | Medium | NodaTime.Text .ZonedDateTimePatternParser+ZonedD ateTimeParseBucket .TryParseFixedZone(ValueCursor) |
![]() | no field | 1 method
| 1min 0s | Medium | NodaTime.Text.Patterns .DatePatternHelper+MonthFormatActi onHolder<TResult,TBucket> .DummyMethod(TResult,StringBuilder ) |
Design 750 |
![]() | Rule Violated: Types with disposable instance fields must be disposable |
• How to Fix Issues of this Rule: To fix a violation of this rule, implement IDisposable and from the IDisposable.Dispose() method call the Dispose() method of the field(s). The estimated Debt, which means the effort to fix such issue, is 5 minutes per type matched plus 3 minutes per disposable instance field.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1301:TypesWithDisposableInstanceFieldsMustBeDisposable", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
5 types matched
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
5 types | instanceFieldsDisposable | Debt | Severity | Full Name |
---|---|---|---|---|
![]() | 1 field
| 7min | Medium | NodaTime.TimeZones.IO .LegacyDateTimeZoneReader |
![]() | 1 field
| 7min | Medium | NodaTime.TimeZones.IO .LegacyDateTimeZoneWriter |
![]() | 1 field
| 7min | Medium | NodaTime.TimeZones.IO .DateTimeZoneReader |
![]() | 1 field
| 7min | Medium | NodaTime.TimeZones.IO .DateTimeZoneWriter |
![]() | 1 field
| 7min | Medium | NodaTime.TimeZones.IO .TzdbResourceData |
![]() | Rule Violated: Avoid namespaces with few types |
• How to Fix Issues of this Rule: To fix a violation of this rule, try to combine namespaces that contain just a few types into a single namespace.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1305:AvoidNamespacesWithFewTypes", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
4 namespaces matched
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
4 namespaces | types | Debt | Severity | Full Name |
---|---|---|---|---|
![]() ![]() | 3 types
| 5min | Low | NodaTime.Annotations |
![]() | 1 type
| 5min | Low | NodaTime.Properties |
![]() | 2 types
| 5min | Low | NodaTime.Globalization |
![]() | 2 types
| 5min | Low | NodaTime.TimeZones.Cldr |
![]() | Rule Violated: Nested types should not be visible |
• How to Fix Issues of this Rule: If you do not intend the nested type to be externally visible, change the type's accessibility. Otherwise, remove the nested type from its parent and make it non-nested. If the purpose of the nesting is to group some nested types, use a namespace to create the hierarchy instead. The estimated Debt, which means the effort to fix such issue, is 2 minutes per nested type plus 4 minutes per outter type using such nesting type.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1306:NestedTypesShouldNotBeVisible", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
15 types matched
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
15 types | Visibility | typesUser | Debt | Severity | Full Name |
---|---|---|---|---|---|
![]() | Public | no type | 2min 0s | Medium | NodaTime.OffsetDateTime+Comparer |
![]() | Public | no type | 2min 0s | Medium | NodaTime.ZonedDateTime+Comparer |
![]() | Internal | 2 types
| 10min | Medium | NodaTime.Fields .PeriodFieldSet+Builder |
![]() | Internal | 2 types
| 10min | Medium | NodaTime.TimeZones .CachingZoneIntervalMap+CacheType |
![]() | Public | no type | 2min 0s | Medium | NodaTime.TimeZones .ZoneEqualityComparer+Options |
![]() | Internal | 1 type
| 6min | Medium | NodaTime.TimeZones.IO .DateTimeZoneWriter+DateTimeZoneTy pe |
![]() | Internal | 1 type
| 6min | Medium | NodaTime.TimeZones.IO .DateTimeZoneWriter+ZoneIntervalCo nstants |
![]() | Internal | 1 type
| 6min | Medium | NodaTime.Text .DurationPattern+Patterns |
![]() | Internal | 2 types
| 10min | Medium | NodaTime.Text .OffsetDateTimePattern+Patterns |
![]() | Internal | 2 types
| 10min | Medium | NodaTime.Text .ZonedDateTimePattern+Patterns |
![]() | Internal | 2 types
| 10min | Medium | NodaTime.Text .LocalDateTimePatternParser+LocalD ateTimeParseBucket |
![]() | Internal | 1 type
| 6min | Medium | NodaTime.Text .LocalDateTimePattern+Patterns |
![]() | Internal | First 5 of 7 types
| 30min | Medium | NodaTime.Text .LocalDatePatternParser+LocalDateP arseBucket |
![]() | Internal | First 5 of 6 types
| 26min | Medium | NodaTime.Text .LocalTimePatternParser+LocalTimeP arseBucket |
![]() | Internal | 1 type
| 6min | Medium | NodaTime.Text.Patterns .SteppedPatternBuilder<TResult ,TBucket >+IPostPatternParseFormatAction |
![]() | Rule Violated: Don't use obsolete types, methods or fields |
• How to Fix Issues of this Rule: Typically when a code element is tagged with System.ObsoleteAttribute, a workaround message is provided to clients. This workaround message will tell you what to do to avoid using the obsolete code element. The estimated Debt, which means the effort to fix such issue, is 5 minutes per type, method or field used. Issues of this rule have a severity High because it is important to not rely anymore on obsolete code.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1311:DontUseObsoleteTypesMethodsOrFields", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
2 methods matched
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
2 methods | obsoleteUsage | Debt | Severity | Full Name |
---|---|---|---|---|
![]() | 1 method
| 5min | High | NodaTime.TimeZones .TzdbDateTimeZoneSource..ctor (String) |
![]() | 1 field
| 5min | High | NodaTime.Calendars.Era..cctor() |
![]() | Rule Violated: Override equals and operator equals on value types |
• How to Fix Issues of this Rule: To fix a violation of this rule, provide an implementation of Equals() and GetHashCode() and implement the equality and inequality operators. The estimated Debt, which means the effort to fix such issue, is equal to 15 minutes plus 2 minutes per instance field.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1313:OverrideEqualsAndOperatorEqualsOnValueTypes", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
2 types matched
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
2 types | InstanceFields | Debt | Severity | Full Name |
---|---|---|---|---|
![]() ![]() | 3 fields
| 21min | High | NodaTime.Calendars.YearMonthDay |
![]() ![]() | 1 field
| 17min | High | NodaTime.Calendars .YearStartCacheEntry |
Architecture 521 |
|
![]() | Critical Rule Violated: Avoid namespaces mutually dependent |
• How to Fix Issues of this Rule: Refactor the code to make sure that the low-level namespace doesn't use the high-level namespace. The rule lists in detail which low-level types and methods shouldn't use which high-level types and methods. The refactoring patterns that help getting rid of each listed dependency include: • Moving one or several types from the low-level namespaces to the high-level one, or do the opposite. • Use Inversion of Control (IoC): http://en.wikipedia.org/wiki/Inversion_of_control This consists in creating new interfaces in the low-level namespace, implemented by classes in the high-level namespace. This way low-level code can consume high-level code through interfaces, without using directly high-level implementations. Interfaces can be passed to low-level code through the high-level namespace code, or through even higher-level code. In related documentations you can see these interfaces named as callbacks, and the overall pattern is also known as Dependency Injection (DI): http://en.wikipedia.org/wiki/Dependency_injection That rule might not be applicable for frameworks that present public namespaces mutually dependent. In such situation the cost to break the API can be higher than the cost to let the code entangled. - The estimated Debt, which means the effort to fix such issue to make sure that the first namespace doesn't rely anymore on the second one, depends on the number of types and methods used. Because both namespace are now forming a super-component that cannot be partitioned in smaller components, the cost to unfix each issue is proportional to the size of this super-component. As a consequence, the estimated Annual Interest, which means the annual cost to let both namespaces mutually dependend, is equal to an hour plus a number of minutes proportional to the size (in lines of code) of both namespaces. The obtained Annual Interest value is then divided by the number of detailled issues listed. Often the estimated Annual Interest for each listed issue is higher than the Debt, which means that leaving such issue unfixed for a year costs more than taking the time to fix issue once. -- To explore the coupling between the two namespaces mutually dependent: 1) from the becauseNamespace right-click menu choose Copy to Matrix Columns to export this low-level namespace to the horizontal header of the dependency matrix. 2) from the shouldntUseNamespace right-click menu choose Copy to Matrix Rows to export this high-level namespace to the vertical header of the dependency matrix. 3) double-click the black matrix cell (it is black because of the mutual dependency). 4) in the matrix command bar, click the button: Remove empty Row(s) and Column(s). At this point, the dependency matrix shows types involved into the coupling. • Blue cells represent types from low-level namespace using types from high-level namespace • Green cells represent types from high-level namespace using types from low-level namespace • Black cells represent types from low-level and high-level namespaces that use each other. There are more green cells than blue and black cells because green cell represents correct coupling from high-level to low-level. The goal is to eliminate incorrect dependencies represented by blue and black cells.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1400:AvoidNamespacesMutuallyDependent", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
214 members matched
- The following list of members is truncated and contains only the first 100 members of the 214 members matched.
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
214 types and methods | shouldntUse | becauseNamespace | shouldntUseNamespace | Debt | Annual Interest | Full Name |
---|---|---|---|---|---|---|
![]() | 1 type
| ![]() | ![]() | 15min | 2min 29s | NodaTime.Calendars .FixedMonthYearMonthDayCalculator |
![]() | 1 type
| ![]() | ![]() | 15min | 2min 29s | NodaTime.Calendars .GJYearMonthDayCalculator |
![]() | 1 type
| ![]() | ![]() | 15min | 2min 29s | NodaTime.Calendars .GregorianYearMonthDayCalculator |
![]() | 1 type
| ![]() | ![]() | 15min | 2min 29s | NodaTime.Calendars .HebrewYearMonthDayCalculator |
![]() | 1 type
| ![]() | ![]() | 15min | 2min 29s | NodaTime.Calendars .IslamicYearMonthDayCalculator |
![]() | 1 type
| ![]() | ![]() | 15min | 2min 29s | NodaTime.Calendars .IsoYearMonthDayCalculator |
![]() | 1 type
| ![]() | ![]() | 15min | 2min 29s | NodaTime.Calendars .PersianYearMonthDayCalculator |
![]() | 1 type
| ![]() | ![]() | 15min | 2min 29s | NodaTime.Calendars .RegularYearMonthDayCalculator |
![]() | 1 type
| ![]() | ![]() | 15min | 2min 29s | NodaTime.Calendars .TimeOfDayCalculator |
![]() | 2 types
| ![]() | ![]() | 20min | 2min 29s | NodaTime.Calendars .WeekYearCalculator |
![]() | 1 type
| ![]() | ![]() | 15min | 2min 29s | NodaTime.Calendars .YearMonthDayCalculator |
![]() | 1 method
| ![]() | ![]() | 15min | 2min 29s | NodaTime.Calendars .FixedMonthYearMonthDayCalculator .SetYear(LocalInstant,Int32) |
![]() | 1 method
| ![]() | ![]() | 15min | 2min 29s | NodaTime.Calendars .FixedMonthYearMonthDayCalculator .GetLocalInstant(Int32,Int32,Int32 ) |
![]() | 1 method
| ![]() | ![]() | 15min | 2min 29s | NodaTime.Calendars .FixedMonthYearMonthDayCalculator .GetMonthOfYear(LocalInstant,Int32 ) |
![]() | 1 method
| ![]() | ![]() | 15min | 2min 29s | NodaTime.Calendars .GJYearMonthDayCalculator .GetMonthOfYear(LocalInstant,Int32 ) |
![]() | 1 method
| ![]() | ![]() | 15min | 2min 29s | NodaTime.Calendars .GJYearMonthDayCalculator.SetYear (LocalInstant,Int32) |
![]() | 1 method
| ![]() | ![]() | 15min | 2min 29s | NodaTime.Calendars .GJYearMonthDayCalculator.GetEra (LocalInstant) |
![]() | 1 method
| ![]() | ![]() | 15min | 2min 29s | NodaTime.Calendars .GregorianYearMonthDayCalculator .GetLocalInstant(Int32,Int32,Int32 ) |
![]() | 4 methods
| ![]() | ![]() | 30min | 2min 29s | NodaTime.Calendars .HebrewYearMonthDayCalculator .MonthsBetween(LocalInstant ,LocalInstant) |
![]() | 1 method
| ![]() | ![]() | 15min | 2min 29s | NodaTime.Calendars .HebrewYearMonthDayCalculator .AbsoluteDayFromLocalInstant (LocalInstant) |
![]() | 1 method
| ![]() | ![]() | 15min | 2min 29s | NodaTime.Calendars .HebrewYearMonthDayCalculator .LocalInstantFromAbsoluteDay(Int32 ,Int64) |
![]() | 1 method
| ![]() | ![]() | 15min | 2min 29s | NodaTime.Calendars .IslamicYearMonthDayCalculator .SetYear(LocalInstant,Int32) |
![]() | 1 method
| ![]() | ![]() | 15min | 2min 29s | NodaTime.Calendars .IslamicYearMonthDayCalculator .GetMonthOfYear(LocalInstant,Int32 ) |
![]() | 1 method
| ![]() | ![]() | 15min | 2min 29s | NodaTime.Calendars .PersianYearMonthDayCalculator .GetMonthOfYear(LocalInstant,Int32 ) |
![]() | 1 method
| ![]() | ![]() | 15min | 2min 29s | NodaTime.Calendars .PersianYearMonthDayCalculator .SetYear(LocalInstant,Int32) |
![]() | 1 method
| ![]() | ![]() | 15min | 2min 29s | NodaTime.Calendars .RegularYearMonthDayCalculator .AddMonths(LocalInstant,Int32) |
![]() | 2 methods
| ![]() | ![]() | 20min | 2min 29s | NodaTime.Calendars .RegularYearMonthDayCalculator .MonthsBetween(LocalInstant ,LocalInstant) |
![]() | 1 method
| ![]() | ![]() | 15min | 2min 29s | NodaTime.Calendars .TimeOfDayCalculator.GetTickOfDay (LocalInstant) |
![]() | 1 method 1 field
| ![]() | ![]() | 20min | 2min 29s | NodaTime.Calendars .WeekYearCalculator .GetLocalInstant(Int32,Int32 ,IsoDayOfWeek) |
![]() | 1 method
| ![]() | ![]() | 15min | 2min 29s | NodaTime.Calendars .WeekYearCalculator.GetDayOfWeek (LocalInstant) |
![]() | 1 method
| ![]() | ![]() | 15min | 2min 29s | NodaTime.Calendars .WeekYearCalculator .GetWeekOfWeekYear(LocalInstant) |
![]() | 1 method
| ![]() | ![]() | 15min | 2min 29s | NodaTime.Calendars .WeekYearCalculator .GetWeekYearTicks(Int32) |
![]() | 1 method
| ![]() | ![]() | 15min | 2min 29s | NodaTime.Calendars .WeekYearCalculator.GetWeekYear (LocalInstant) |
![]() | 1 method
| ![]() | ![]() | 15min | 2min 29s | NodaTime.Calendars .YearMonthDayCalculator .GetDayOfMonth(LocalInstant,Int32 ,Int32) |
![]() | 1 method
| ![]() | ![]() | 15min | 2min 29s | NodaTime.Calendars .YearMonthDayCalculator .GetDayOfYear(LocalInstant,Int32) |
![]() | 1 method
| ![]() | ![]() | 15min | 2min 29s | NodaTime.Calendars .YearMonthDayCalculator .GetLocalInstant(Int32,Int32,Int32 ) |
![]() | 1 method
| ![]() | ![]() | 15min | 2min 29s | NodaTime.Calendars .YearMonthDayCalculator.GetYear (LocalInstant) |
![]() | 1 type
| ![]() | ![]() | 15min | 27min | NodaTime.Utility.BclConversions |
![]() | 1 field
| ![]() | ![]() | 15min | 27min | NodaTime.Utility.BclConversions .ToDayOfWeek(IsoDayOfWeek) |
![]() | 1 field
| ![]() | ![]() | 15min | 27min | NodaTime.Utility.BclConversions .ToIsoDayOfWeek(DayOfWeek) |
![]() | 1 type
| ![]() | ![]() | 15min | 11min | NodaTime.Fields.MonthsPeriodField |
![]() | 1 type
| ![]() | ![]() | 15min | 11min | NodaTime.Fields .FixedDurationPeriodField |
![]() | 1 type
| ![]() | ![]() | 15min | 11min | NodaTime.Fields.IPeriodField |
![]() | 1 type
| ![]() | ![]() | 15min | 11min | NodaTime.Fields.YearsPeriodField |
![]() | 2 methods
| ![]() | ![]() | 20min | 11min | NodaTime.Fields .FixedDurationPeriodField.Add (LocalInstant,Int64) |
![]() | 2 methods
| ![]() | ![]() | 20min | 11min | NodaTime.Fields .FixedDurationPeriodField.Subtract (LocalInstant,LocalInstant) |
![]() | 2 methods
| ![]() | ![]() | 20min | 11min | NodaTime.Fields.YearsPeriodField .Subtract(LocalInstant ,LocalInstant) |
![]() | 1 type
| ![]() | ![]() | 15min | 3min 58s | NodaTime.DateTimeZoneProviders |
![]() | 3 types
| ![]() | ![]() | 25min | 3min 58s | NodaTime .DateTimeZoneProviders+TzdbHolder |
![]() | 3 types
| ![]() | ![]() | 25min | 3min 58s | NodaTime .DateTimeZoneProviders+BclHolder |
![]() | 1 type
| ![]() | ![]() | 15min | 3min 58s | NodaTime.LocalDateTime |
![]() | First 5 of 7 types
| ![]() | ![]() | 45min | 3min 58s | NodaTime.DateTimeZone |
![]() | 2 types
| ![]() | ![]() | 20min | 3min 58s | NodaTime.ZonedDateTime |
![]() | 2 methods
| ![]() | ![]() | 20min | 3min 58s | NodaTime .DateTimeZoneProviders+TzdbHolder. .cctor() |
![]() | 2 methods
| ![]() | ![]() | 20min | 3min 58s | NodaTime .DateTimeZoneProviders+BclHolder. .cctor() |
![]() | 1 method
| ![]() | ![]() | 15min | 3min 58s | NodaTime.DateTimeZone.ForOffset (Offset) |
![]() | 1 method
| ![]() | ![]() | 15min | 3min 58s | NodaTime.DateTimeZone.GetUtcOffset (Instant) |
![]() | 3 methods 1 field
| ![]() | ![]() | 30min | 3min 58s | NodaTime.DateTimeZone .GetZoneIntervalPair(LocalInstant) |
![]() | 4 methods
| ![]() | ![]() | 30min | 3min 58s | NodaTime.DateTimeZone.AtStartOfDay (LocalDate) |
![]() | 2 methods
| ![]() | ![]() | 20min | 3min 58s | NodaTime.DateTimeZone.MapLocal (LocalDateTime) |
![]() | 1 method
| ![]() | ![]() | 15min | 3min 58s | NodaTime.DateTimeZone.ResolveLocal (LocalDateTime ,ZoneLocalMappingResolver) |
![]() | 1 method
| ![]() | ![]() | 15min | 3min 58s | NodaTime.DateTimeZone.AtStrictly (LocalDateTime) |
![]() | 1 field
| ![]() | ![]() | 15min | 3min 58s | NodaTime.DateTimeZone.AtLeniently (LocalDateTime) |
![]() | 2 methods
| ![]() | ![]() | 20min | 3min 58s | NodaTime.DateTimeZone .GetEarlierMatchingInterval (ZoneInterval,LocalInstant) |
![]() | 2 methods
| ![]() | ![]() | 20min | 3min 58s | NodaTime.DateTimeZone .GetLaterMatchingInterval (ZoneInterval,LocalInstant) |
![]() | 2 methods
| ![]() | ![]() | 20min | 3min 58s | NodaTime.DateTimeZone .GetIntervalBeforeGap(LocalInstant ) |
![]() | 3 methods
| ![]() | ![]() | 25min | 3min 58s | NodaTime.DateTimeZone .GetIntervalAfterGap(LocalInstant) |
![]() | 1 method
| ![]() | ![]() | 15min | 3min 58s | NodaTime.DateTimeZone .BuildFixedZoneCache() |
![]() | 1 method
| ![]() | ![]() | 15min | 3min 58s | NodaTime.DateTimeZone .GetZoneIntervals(Interval) |
![]() | 1 method
| ![]() | ![]() | 15min | 3min 58s | NodaTime.DateTimeZone..cctor() |
![]() | 1 method
| ![]() | ![]() | 15min | 3min 58s | NodaTime.ZonedDateTime .IsDaylightSavingTime() |
![]() | 1 method
| ![]() | ![]() | 15min | 3min 58s | NodaTime.ZonedDateTime .FromDateTimeOffset(DateTimeOffset ) |
![]() | 1 type
| ![]() | ![]() | 15min | 45min | NodaTime.Text.Patterns .DatePatternHelper |
![]() | 3 methods
| ![]() | ![]() | 25min | 45min | NodaTime.Text.Patterns .DatePatternHelper .CreateCalendarHandler<TResult ,TBucket>(Func<TResult ,CalendarSystem>,Action<TBucket ,CalendarSystem>) |
![]() | 3 types
| ![]() | ![]() | 25min | 2min 4s | NodaTime.OffsetDateTime |
![]() | 2 types
| ![]() | ![]() | 20min | 2min 4s | NodaTime.PeriodBuilder |
![]() | 2 types
| ![]() | ![]() | 20min | 2min 4s | NodaTime.LocalDate |
![]() | 2 types
| ![]() | ![]() | 20min | 2min 4s | NodaTime.LocalTime |
![]() | 2 types
| ![]() | ![]() | 20min | 2min 4s | NodaTime.Offset |
![]() | 1 type
| ![]() | ![]() | 15min | 2min 4s | NodaTime.LocalInstant |
![]() | 1 type
| ![]() | ![]() | 15min | 2min 4s | NodaTime.Period |
![]() | 2 types
| ![]() | ![]() | 20min | 2min 4s | NodaTime.LocalDateTime |
![]() | 2 types
| ![]() | ![]() | 20min | 2min 4s | NodaTime.Duration |
![]() | 2 types
| ![]() | ![]() | 20min | 2min 4s | NodaTime.Instant |
![]() | 2 types
| ![]() | ![]() | 20min | 2min 4s | NodaTime.Interval |
![]() | 3 types
| ![]() | ![]() | 25min | 2min 4s | NodaTime.ZonedDateTime |
![]() | 1 field
| ![]() | ![]() | 15min | 2min 4s | NodaTime.OffsetDateTime.ToString() |
![]() | 1 field
| ![]() | ![]() | 15min | 2min 4s | NodaTime.OffsetDateTime.ToString (String,IFormatProvider) |
![]() | 5 methods
| ![]() | ![]() | 35min | 2min 4s | NodaTime.OffsetDateTime.System.Xml .Serialization.IXmlSerializable .ReadXml(XmlReader) |
![]() | 2 methods
| ![]() | ![]() | 20min | 2min 4s | NodaTime.OffsetDateTime.System.Xml .Serialization.IXmlSerializable .WriteXml(XmlWriter) |
![]() | 2 methods 1 field
| ![]() | ![]() | 25min | 2min 4s | NodaTime.PeriodBuilder.System.Xml .Serialization.IXmlSerializable .ReadXml(XmlReader) |
![]() | 1 method 1 field
| ![]() | ![]() | 20min | 2min 4s | NodaTime.PeriodBuilder.System.Xml .Serialization.IXmlSerializable .WriteXml(XmlWriter) |
![]() | 1 field
| ![]() | ![]() | 15min | 2min 4s | NodaTime.LocalDate.ToString() |
![]() | 1 field
| ![]() | ![]() | 15min | 2min 4s | NodaTime.LocalDate.ToString(String ,IFormatProvider) |
![]() | 5 methods
| ![]() | ![]() | 35min | 2min 4s | NodaTime.LocalDate.System.Xml .Serialization.IXmlSerializable .ReadXml(XmlReader) |
![]() | 2 methods
| ![]() | ![]() | 20min | 2min 4s | NodaTime.LocalDate.System.Xml .Serialization.IXmlSerializable .WriteXml(XmlWriter) |
![]() | 1 field
| ![]() | ![]() | 15min | 2min 4s | NodaTime.LocalTime.ToString() |
![]() | 1 field
| ![]() | ![]() | 15min | 2min 4s | NodaTime.LocalTime.ToString(String ,IFormatProvider) |
![]() | 3 methods
| ![]() | ![]() | 25min | 2min 4s | NodaTime.LocalTime.System.Xml .Serialization.IXmlSerializable .ReadXml(XmlReader) |
![]() | 2 methods
| ![]() | ![]() | 20min | 2min 4s | NodaTime.LocalTime.System.Xml .Serialization.IXmlSerializable .WriteXml(XmlWriter) |
![]() | Rule Violated: Avoid namespaces dependency cycles |
• How to Fix Issues of this Rule: Removing first pairs of mutually dependent namespaces will eliminate most namespaces dependency cycles. This is why it is recommended focusing on matches of the default rule Avoid namespaces mutually dependent before dealing with the present rule. Once solving all mutually dependent namespaces, remaining cycles matched by the present rule necessarily involve 3 or more namespaces like in: A is using B is using C is using A. Such cycle can be broken by identifying which namespace should be at the lower-level. For example if B should be at the lower-level, then it means C should be at the higher-level and to break the cycle, you just have to remove the dependency from B to C, with a pattern described in the HowToFix section of the rule Avoid namespaces mutually dependent. The estimated Debt, which means the effort to fix such issue, doesn't depend on the cycle length. First because fixing the rule Avoid namespaces mutually dependent will fix most cycle reported here, second because even a long cycle can be broken by removing a few dependency.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1401:AvoidNamespacesDependencyCycles", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
1 namespace matched
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
1 namespace | cycle | Debt | Severity | Full Name |
---|---|---|---|---|
![]() | First 5 of 10 namespaces
| 2h 0min | High | NodaTime |
![]() | Rule Violated: Assemblies with poor cohesion (RelationalCohesion) |
• How to Fix Issues of this Rule: Matches of this present rule might reveal either assemblies 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 Low 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 Smells default rules will necessarily increase the Relational Cohesion scores.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1405:AssembliesWithPoorRelationalCohesion", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
1 assembly matched
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
1 assembly | ChildTypes | relationalCohesion | Relational cohesion | Debt | Severity | Full Name |
---|---|---|---|---|---|---|
![]() | First 5 of 211 types
| 6.33 | 5.96 | 10min | Low | NodaTime |
API Breaking Changes 501 |
|
![]() | Critical Rule Violated: API Breaking Changes: Fields |
• How to Fix Issues of this Rule: Make sure that public fields that used to be presented to clients, still remain public now, and in the future. If a public field must really be removed, you can tag it with System.ObsoleteAttribute with a workaround message during a few public releases, until it gets removed definitely. Notice that this rule doesn't match fields removed that were tagged as obsolete. Issues of this rule have a severity equal to High because an API Breaking change can provoque significant friction with consumers of the API.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1502:APIBreakingChangesFields", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
8 fields matched
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
8 fields | NewVisibility | Debt | Severity | Full Name |
---|---|---|---|---|
![]() | Private | 10min | High | NodaTime.Utility.Cache<TKey,TValue >.valueFactory |
![]() | Private | 10min | High | NodaTime.Text.ParseResult<T> .exceptionProvider |
![]() | Private | 10min | High | NodaTime.Text.Patterns .DatePatternHelper+MonthFormatActi onHolder<TResult,TBucket>.getter |
![]() | Private | 10min | High | NodaTime.Text.Patterns .PatternBclSupport<T> .patternParser |
![]() | Private | 10min | High | NodaTime.Text.Patterns .CompositePattern<T> .formatPatternPicker |
![]() | Private | 10min | High | NodaTime.Text.Patterns .SteppedPatternBuilder<TResult ,TBucket>.bucketProvider |
![]() | Private | 10min | High | NodaTime.Text.Patterns .SteppedPatternBuilder<TResult ,TBucket>+SteppedPattern .formatActions |
![]() | Private | 10min | High | NodaTime.Text.Patterns .SteppedPatternBuilder<TResult ,TBucket>+SteppedPattern .bucketProvider |
Code Coverage 190 |
|
![]() | Rule Violated: Code should be tested |
• How to Fix Issues of this Rule: Write unit tests to test and cover the methods and their parent classes matched by this rule.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1600:CodeShouldBeTested", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
263 methods matched
- The following list of methods is truncated and contains only the first 100 methods of the 263 methods matched.
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
263 methods | Percentage Coverage | # lines of code (LOC) | # lines of code not covered | Cyclomatic Complexity (CC) | Debt | Annual Interest | Full Name |
---|---|---|---|---|---|---|---|
![]() ![]() | 0% | 3 | 3 | 1 | 4min 35s | 7min | JetBrains.Annotations .ContractAnnotationAttribute..ctor (String,Boolean) |
![]() ![]() | 0% | 3 | 3 | 1 | 4min 35s | 7min | JetBrains.Annotations .UsedImplicitlyAttribute..ctor (ImplicitUseKindFlags ,ImplicitUseTargetFlags) |
![]() ![]() | 0% | 3 | 3 | 1 | 4min 35s | 7min | JetBrains.Annotations .MeansImplicitUseAttribute..ctor (ImplicitUseKindFlags ,ImplicitUseTargetFlags) |
![]() ![]() | 0% | 2 | 2 | 1 | 3min 26s | 5min | JetBrains.Annotations .LocalizationRequiredAttribute. .ctor(Boolean) |
![]() ![]() | 0% | 1 | 1 | 1 | 2min 17s | 2min 23s | NodaTime.Text.ParseResult<T> .NoMatchingZoneId(ValueCursor) |
![]() ![]() | 0% | 6 | 6 | 3 | 19min | 2min 11s | NodaTime.Calendars .PersianYearMonthDayCalculator .SetYear(LocalInstant,Int32) |
![]() ![]() | 0% | 2 | 2 | 1 | 3min 26s | 2min 0s | JetBrains.Annotations .StringFormatMethodAttribute..ctor (String) |
![]() ![]() | 0% | 1 | 1 | 1 | 2min 17s | 2min 0s | JetBrains.Annotations .ContractAnnotationAttribute..ctor (String) |
![]() ![]() | 0% | 1 | 1 | 1 | 2min 17s | 2min 0s | JetBrains.Annotations .LocalizationRequiredAttribute. .ctor() |
![]() ![]() | 0% | 1 | 1 | 1 | 2min 17s | 2min 0s | JetBrains.Annotations .UsedImplicitlyAttribute..ctor() |
![]() ![]() | 0% | 1 | 1 | 1 | 2min 17s | 2min 0s | JetBrains.Annotations .UsedImplicitlyAttribute..ctor (ImplicitUseKindFlags) |
![]() ![]() | 0% | 1 | 1 | 1 | 2min 17s | 2min 0s | JetBrains.Annotations .UsedImplicitlyAttribute..ctor (ImplicitUseTargetFlags) |
![]() ![]() | 0% | 1 | 1 | 1 | 2min 17s | 2min 0s | JetBrains.Annotations .MeansImplicitUseAttribute..ctor() |
![]() ![]() | 0% | 1 | 1 | 1 | 2min 17s | 2min 0s | JetBrains.Annotations .MeansImplicitUseAttribute..ctor (ImplicitUseKindFlags) |
![]() ![]() | 0% | 1 | 1 | 1 | 2min 17s | 2min 0s | JetBrains.Annotations .MeansImplicitUseAttribute..ctor (ImplicitUseTargetFlags) |
![]() ![]() | 0% | 1 | 1 | 1 | 2min 31s | 2min 0s | NodaTime.Calendars .HebrewYearMonthDayCalculator .GetMonthOfYear(LocalInstant,Int32 ) |
![]() ![]() | 83.33% | 6 | 1 | 3 | 3min 34s | 2min 0s | NodaTime.Calendars .PersianYearMonthDayCalculator .GetMonthOfYear(LocalInstant,Int32 ) |
![]() ![]() | 90.91% | 22 | 2 | 5 | 8min | 2min 0s | NodaTime.Calendars .RegularYearMonthDayCalculator .AddMonths(LocalInstant,Int32) |
![]() ![]() | 90% | 10 | 1 | 3 | 3min 40s | 2min 0s | NodaTime.TimeZones .BclDateTimeZone+BclAdjustmentRule .ConvertTransition (TimeZoneInfo+TransitionTime) |
![]() ![]() | 71.43% | 7 | 2 | 3 | 7min | 2min 0s | NodaTime.TimeZones .PartialZoneIntervalMap+CombinedPa rtialZoneIntervalMap .GetZoneInterval(Instant) |
![]() ![]() | 0% | 1 | 1 | 1 | 2min 17s | 2min 0s | NodaTime.TimeZones.ZoneYearOffset .get_AdvanceDayOfWeek() |
![]() ![]() | 0% | 1 | 1 | 1 | 2min 17s | 2min 0s | NodaTime.TimeZones.ZoneRecurrence .get_ToYear() |
![]() ![]() | 0% | 1 | 1 | 2 | 4min 28s | 2min 0s | NodaTime.TimeZones.ZoneRecurrence .ToInfinity() |
![]() ![]() | 0% | 1 | 1 | 1 | 2min 17s | 2min 0s | NodaTime.Text .OffsetDateTimePattern .CreateWithInvariantCulture(String ) |
![]() ![]() | 0% | 1 | 1 | 1 | 2min 17s | 2min 0s | NodaTime.Text .OffsetDateTimePattern .CreateWithCurrentCulture(String) |
![]() ![]() | 0% | 1 | 1 | 1 | 2min 17s | 2min 0s | NodaTime.Text.ZonedDateTimePattern .CreateWithCurrentCulture(String ,IDateTimeZoneProvider) |
![]() ![]() | 98.15% | 54 | 1 | 19 | 6min | 2min 0s | NodaTime.Text.FormatHelper.LeftPad (Int32,Int32,StringBuilder) |
![]() ![]() | 75% | 12 | 3 | 7 | 23min | 2min 0s | NodaTime.Text .LocalDatePatternParser+LocalDateP arseBucket.DetermineMonth (PatternFields,String) |
![]() ![]() | 0% | 1 | 1 | 1 | 2min 17s | 2min 0s | NodaTime.Text.ParseResult<T> .ForException(Func<Exception>) |
![]() ![]() | 0% | 1 | 1 | 1 | 2min 17s | 2min 0s | NodaTime.Text.ParseResult<T> .CannotParseValue(ValueCursor ,String) |
![]() ![]() | 0% | 1 | 1 | 1 | 2min 17s | 2min 0s | NodaTime.Text.ParseResult<T> .MissingAmPmDesignator(ValueCursor ) |
![]() ![]() | 0% | 1 | 1 | 1 | 2min 17s | 2min 0s | NodaTime.Text.ParseResult<T> .InconsistentMonthValues(String) |
![]() ![]() | 95.24% | 21 | 1 | 11 | 6min | 2min 0s | NodaTime.Text .ZonedDateTimePatternParser+ZonedD ateTimeParseBucket.CalculateValue (PatternFields,String) |
![]() | 0% | 28 | 28 | 12 | 3h 30min | 36min | NodaTime.TimeZones.IO .LegacyDateTimeZoneWriter .WriteTicks(Int64) |
![]() | 0% | 26 | 26 | 6 | 1h 59min | 31min | NodaTime.TimeZones.IO .LegacyDateTimeZoneWriter .WriteCount(Int32) |
![]() | 56.52% | 23 | 10 | 7 | 51min | 19min | NodaTime.TimeZones.IO .LegacyDateTimeZoneReader .ReadCount() |
![]() | 0% | 30 | 30 | 6 | 2h 33min | 18min | NodaTime.TimeZones .PrecalculatedDateTimeZone .WriteLegacy (LegacyDateTimeZoneWriter) |
![]() | 0% | 16 | 16 | 7 | 1h 33min | 18min | NodaTime.TimeZones.IO .LegacyDateTimeZoneWriter .WriteOffset(Offset) |
![]() | 0% | 16 | 16 | 6 | 1h 15min | 18min | NodaTime.TimeZones.IO .LegacyDateTimeZoneWriter .WriteTimeZone(DateTimeZone) |
![]() | 0% | 2 | 2 | 1 | 4min 8s | 13min | NodaTime.TimeZones.IO .LegacyDateTimeZoneWriter .WriteInt16(Int16) |
![]() | 0% | 39 | 39 | 15 | 4h 1min | 12min | NodaTime.TimeZones .TzdbDateTimeZoneSource.Validate() |
![]() | 0% | 1 | 1 | 1 | 2min 17s | 11min | NodaTime.TimeZones.IO .LegacyDateTimeZoneWriter .WriteByte(Byte) |
![]() | 0% | 2 | 2 | 1 | 3min 26s | 10min | NodaTime.TimeZones.IO .LegacyDateTimeZoneWriter .WriteInt32(Int32) |
![]() | 0% | 10 | 10 | 3 | 30min | 8min | NodaTime.TimeZones.IO .LegacyDateTimeZoneWriter .WriteString(String) |
![]() | 0% | 1 | 1 | 1 | 2min 17s | 7min | NodaTime.Globalization .NodaFormatInfo.get_CurrentInfo() |
![]() | 0% | 1 | 1 | 1 | 2min 17s | 7min | NodaTime.ZonedDateTime+Comparer. .ctor() |
![]() | 75% | 4 | 1 | 2 | 2min 47s | 7min | NodaTime.TimeZones.IO .LegacyDateTimeZoneReader.ReadByte () |
![]() | 75% | 4 | 1 | 2 | 2min 47s | 6min | NodaTime.TimeZones.IO .DateTimeZoneReader.ReadByte() |
![]() | 0% | 16 | 16 | 4 | 56min | 5min | NodaTime.TimeZones .PrecalculatedDateTimeZone.Write (IDateTimeZoneWriter) |
![]() | 95.24% | 21 | 1 | 11 | 7min | 5min | NodaTime.Period..ctor(PeriodUnits ,Int64) |
![]() | 50% | 4 | 2 | 2 | 5min | 4min 55s | NodaTime.TimeZones .BclDateTimeZoneSource.ForId (String) |
![]() | 0% | 3 | 3 | 1 | 5min | 4min 50s | NodaTime.TimeZones.IO .LegacyDateTimeZoneReader .ReadInt64() |
![]() | 75% | 12 | 3 | 4 | 14min | 4min 32s | NodaTime.TimeZones.IO .LegacyDateTimeZoneReader .ReadString() |
![]() | 0% | 7 | 7 | 1 | 9min | 4min 21s | NodaTime.TimeZones.ZoneYearOffset .WriteLegacy (LegacyDateTimeZoneWriter) |
![]() | 0% | 8 | 8 | 2 | 25min | 4min 19s | NodaTime.TimeZones.Cldr.MapZone .Write(IDateTimeZoneWriter) |
![]() | 0% | 5 | 5 | 1 | 6min | 4min 6s | NodaTime.TimeZones.ZoneRecurrence .WriteLegacy (LegacyDateTimeZoneWriter) |
![]() | 0% | 1 | 1 | 1 | 2min 17s | 3min 56s | NodaTime.Calendars .TimeOfDayCalculator .GetTickOfMillisecond(LocalInstant ) |
![]() | 0% | 1 | 1 | 1 | 2min 17s | 3min 56s | NodaTime.Calendars .TimeOfDayCalculator .GetMillisecondOfDay(LocalInstant) |
![]() | 0% | 1 | 1 | 1 | 2min 17s | 3min 56s | NodaTime.Calendars .TimeOfDayCalculator .GetSecondOfDay(LocalInstant) |
![]() | 0% | 1 | 1 | 1 | 2min 17s | 3min 56s | NodaTime.Calendars .TimeOfDayCalculator .GetMinuteOfDay(LocalInstant) |
![]() | 0% | 1 | 1 | 1 | 2min 17s | 3min 56s | NodaTime.TimeZones.Transition .op_Equality(Transition,Transition ) |
![]() | 0% | 1 | 1 | 1 | 2min 17s | 3min 56s | NodaTime.Text.InstantPattern .Create(String,CultureInfo) |
![]() | 66.67% | 6 | 2 | 3 | 9min | 3min 39s | NodaTime.TimeZones.IO .TzdbResourceData.FromResource (String,Assembly) |
![]() | 57.14% | 7 | 3 | 2 | 7min | 3min 37s | NodaTime.Text.TextCursor .MovePrevious() |
![]() | 83.33% | 12 | 2 | 4 | 8min | 3min 34s | NodaTime.TimeZones.IO .TzdbStreamData.FromStream(Stream) |
![]() | 84.62% | 13 | 2 | 8 | 13min | 3min 32s | NodaTime.Text .OffsetDateTimePatternParser .ParsePattern(String ,NodaFormatInfo) |
![]() | 0% | 7 | 7 | 1 | 9min | 3min 30s | NodaTime.TimeZones .DaylightSavingsDateTimeZone.Write (IDateTimeZoneWriter) |
![]() | 0% | 2 | 2 | 2 | 6min | 3min 18s | NodaTime.Text.ParseResult<T> .ArgumentNull(String) |
![]() | 85.71% | 14 | 2 | 8 | 12min | 3min 13s | NodaTime.Text .ZonedDateTimePatternParser .ParsePattern(String ,NodaFormatInfo) |
![]() | 83.33% | 18 | 3 | 9 | 19min | 3min 13s | NodaTime.Text .LocalDateTimePatternParser .ParsePattern(String ,NodaFormatInfo) |
![]() | 0% | 9 | 9 | 2 | 27min | 3min 7s | NodaTime.TimeZones.Cldr .WindowsZones.Write (IDateTimeZoneWriter) |
![]() | 0% | 4 | 4 | 1 | 5min | 3min 3s | NodaTime.TimeZones .DaylightSavingsDateTimeZone .WriteLegacy (LegacyDateTimeZoneWriter) |
![]() | 0% | 2 | 2 | 1 | 4min 8s | 2min 59s | NodaTime.TimeZones.IO .LegacyDateTimeZoneWriter .WriteInt64(Int64) |
![]() | 0% | 8 | 8 | 3 | 29min | 2min 48s | NodaTime.Calendars .FixedMonthYearMonthDayCalculator .SetYear(LocalInstant,Int32) |
![]() | 0% | 8 | 8 | 2 | 25min | 2min 48s | NodaTime.TimeZones.IO .LegacyDateTimeZoneWriter .WriteDictionary(IDictionary <String,String>) |
![]() | 50% | 2 | 1 | 2 | 4min 1s | 2min 35s | NodaTime.TimeZones.IO .TzdbStreamData+Builder .CheckSingleField(TzdbStreamField ,Object) |
![]() | 80% | 5 | 1 | 7 | 7min | 2min 32s | NodaTime.TimeZones.ZoneInterval .Equals(ZoneInterval) |
![]() | 95.45% | 22 | 1 | 10 | 6min | 2min 31s | NodaTime.Period.AddTo(LocalInstant ,CalendarSystem,Int32) |
![]() | 80% | 5 | 1 | 3 | 3min 20s | 2min 29s | NodaTime.Text .ZonedDateTimePatternParser+ZonedD ateTimeParseBucket.ParseZone (ValueCursor) |
![]() | 0% | 1 | 1 | 1 | 2min 45s | 2min 27s | NodaTime .ZonedDateTime+LocalComparer..ctor () |
![]() | 0% | 1 | 1 | 1 | 2min 45s | 2min 27s | NodaTime .ZonedDateTime+InstantComparer. .ctor() |
![]() | 0% | 1 | 1 | 1 | 2min 45s | 2min 27s | NodaTime.Text .OffsetDateTimePattern .WithFormatInfo(NodaFormatInfo) |
![]() | 0% | 1 | 1 | 1 | 2min 45s | 2min 27s | NodaTime.Text.ZonedDateTimePattern .WithFormatInfo(NodaFormatInfo) |
![]() | 75% | 4 | 1 | 2 | 2min 47s | 2min 16s | NodaTime.TimeZones.IO .DateTimeZoneReader.ReadCount() |
![]() | 83.33% | 12 | 2 | 5 | 9min | 2min 12s | NodaTime.Text .LocalDatePatternParser .ParsePattern(String ,NodaFormatInfo) |
![]() | 83.33% | 12 | 2 | 5 | 9min | 2min 12s | NodaTime.Text .LocalTimePatternParser .ParsePattern(String ,NodaFormatInfo) |
![]() | 0% | 6 | 6 | 1 | 8min | 2min 11s | NodaTime.TimeZones .TzdbZoneLocation.Write (IDateTimeZoneWriter) |
![]() | 0% | 6 | 6 | 1 | 8min | 2min 11s | NodaTime.TimeZones.ZoneRecurrence .ToString() |
![]() | 40% | 5 | 3 | 5 | 13min | 2min 0s | NodaTime.TimeZones .ZoneLocalMapping.Last() |
![]() | 66.67% | 3 | 1 | 2 | 2min 59s | 2min 0s | NodaTime.CalendarSystem .GetIsoDayOfWeek(LocalInstant) |
![]() | 0% | 1 | 1 | 1 | 2min 17s | 2min 0s | NodaTime.CalendarSystem .GetTickOfMillisecond(LocalInstant ) |
![]() | 0% | 1 | 1 | 1 | 2min 17s | 2min 0s | NodaTime.CalendarSystem .GetMillisecondOfDay(LocalInstant) |
![]() | 0% | 1 | 1 | 1 | 2min 17s | 2min 0s | NodaTime.CalendarSystem .GetSecondOfDay(LocalInstant) |
![]() | 0% | 1 | 1 | 1 | 2min 17s | 2min 0s | NodaTime.CalendarSystem .GetMinuteOfDay(LocalInstant) |
![]() | 0% | 1 | 1 | 1 | 2min 17s | 2min 0s | NodaTime.CalendarSystem .GetHourOfHalfDay(LocalInstant) |
![]() | 0% | 1 | 1 | 1 | 2min 45s | 2min 0s | NodaTime.OffsetDateTime.System.Xml .Serialization.IXmlSerializable .GetSchema() |
![]() | 0% | 1 | 1 | 1 | 2min 45s | 2min 0s | NodaTime.PeriodBuilder.System.Xml .Serialization.IXmlSerializable .GetSchema() |
![]() | 0% | 1 | 1 | 1 | 2min 45s | 2min 0s | NodaTime.LocalDate.System.Xml .Serialization.IXmlSerializable .GetSchema() |
![]() | 0% | 1 | 1 | 1 | 2min 45s | 2min 0s | NodaTime.LocalDate..ctor (SerializationInfo ,StreamingContext) |
![]() | 0% | 2 | 2 | 1 | 4min 8s | 2min 0s | NodaTime.LocalDate.System.Runtime .Serialization.ISerializable .GetObjectData(SerializationInfo ,StreamingContext) |
Statistics
Stat | Percentage Coverage | # lines of code (LOC) | # lines of code not covered | Cyclomatic Complexity (CC) | Debt | Annual Interest |
---|---|---|---|---|---|---|
Sum: | 6 579 | 1 397 | 589 | 731 | 4d 6h | 1d 5h |
Average: | 25.01 | 5.31 | 2.24 | 2.78 | 8min | 3min 3s |
Minimum: | 0 | 1 | 1 | 1 | 2min 17s | 2min 0s |
Maximum: | 98.15 | 65 | 39 | 31 | 4h 1min | 36min |
Standard deviation: | 37.67 | 8.29 | 4.19 | 3.56 | 24min | 3min 45s |
Variance: | 1 419 | 68.66 | 17.58 | 12.7 | 73d | 1d 6h |
![]() | Rule Violated: New Methods should be tested |
• How to Fix Issues of this Rule: Write unit-tests to cover the code of most methods and classes added.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1601:NewMethodsShouldBeTested", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
23 methods matched
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
23 methods | Percentage Coverage | # lines of code (LOC) | # lines of code not covered | Debt | Severity | Full Name |
---|---|---|---|---|---|---|
![]() | 0% | 6 | 6 | 6min | High | NodaTime.Calendars .PersianYearMonthDayCalculator .SetYear(LocalInstant,Int32) |
![]() | 0% | 3 | 3 | 3min 46s | High | JetBrains.Annotations .ContractAnnotationAttribute..ctor (String,Boolean) |
![]() | 0% | 3 | 3 | 3min 46s | High | JetBrains.Annotations .UsedImplicitlyAttribute..ctor (ImplicitUseKindFlags ,ImplicitUseTargetFlags) |
![]() | 0% | 3 | 3 | 3min 46s | High | JetBrains.Annotations .MeansImplicitUseAttribute..ctor (ImplicitUseKindFlags ,ImplicitUseTargetFlags) |
![]() | 0% | 2 | 2 | 2min 53s | High | JetBrains.Annotations .StringFormatMethodAttribute..ctor (String) |
![]() | 0% | 2 | 2 | 2min 53s | High | JetBrains.Annotations .LocalizationRequiredAttribute. .ctor(Boolean) |
![]() | 0% | 1 | 1 | 2min 0s | High | JetBrains.Annotations .ContractAnnotationAttribute..ctor (String) |
![]() | 0% | 1 | 1 | 2min 0s | High | JetBrains.Annotations .LocalizationRequiredAttribute. .ctor() |
![]() | 0% | 1 | 1 | 2min 0s | High | JetBrains.Annotations .UsedImplicitlyAttribute..ctor() |
![]() | 0% | 1 | 1 | 2min 0s | High | JetBrains.Annotations .UsedImplicitlyAttribute..ctor (ImplicitUseKindFlags) |
![]() | 0% | 1 | 1 | 2min 0s | High | JetBrains.Annotations .UsedImplicitlyAttribute..ctor (ImplicitUseTargetFlags) |
![]() | 0% | 1 | 1 | 2min 0s | High | JetBrains.Annotations .MeansImplicitUseAttribute..ctor() |
![]() | 0% | 1 | 1 | 2min 0s | High | JetBrains.Annotations .MeansImplicitUseAttribute..ctor (ImplicitUseKindFlags) |
![]() | 0% | 1 | 1 | 2min 0s | High | JetBrains.Annotations .MeansImplicitUseAttribute..ctor (ImplicitUseTargetFlags) |
![]() | 0% | 1 | 1 | 2min 0s | High | NodaTime.Calendars .HebrewYearMonthDayCalculator .GetMonthOfYear(LocalInstant,Int32 ) |
![]() | 0% | 1 | 1 | 2min 0s | High | NodaTime.Text .OffsetDateTimePattern .CreateWithInvariantCulture(String ) |
![]() | 0% | 1 | 1 | 2min 0s | High | NodaTime.Text .OffsetDateTimePattern .CreateWithCurrentCulture(String) |
![]() | 0% | 1 | 1 | 2min 0s | High | NodaTime.Text.ZonedDateTimePattern .CreateWithCurrentCulture(String ,IDateTimeZoneProvider) |
![]() | 0% | 1 | 1 | 2min 0s | High | NodaTime.Text.ParseResult<T> .ForException(Func<Exception>) |
![]() | 0% | 1 | 1 | 2min 0s | High | NodaTime.Text.ParseResult<T> .CannotParseValue(ValueCursor ,String) |
![]() | 0% | 1 | 1 | 2min 0s | High | NodaTime.Text.ParseResult<T> .MissingAmPmDesignator(ValueCursor ) |
![]() | 0% | 1 | 1 | 2min 0s | High | NodaTime.Text.ParseResult<T> .NoMatchingZoneId(ValueCursor) |
![]() | 0% | 1 | 1 | 2min 0s | High | NodaTime.Text.ParseResult<T> .InconsistentMonthValues(String) |
![]() | Rule Violated: Methods refactored should be tested |
• How to Fix Issues of this Rule: Write unit-tests to cover the code of most methods and classes refactored.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1602:MethodsRefactoredShouldBeTested", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
13 methods matched
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
13 methods | Percentage Coverage | # lines of code (LOC) | # lines of code not covered | Debt | Severity | Full Name |
---|---|---|---|---|---|---|
![]() | 0% | 8 | 8 | 8min | High | NodaTime.Calendars .FixedMonthYearMonthDayCalculator .SetYear(LocalInstant,Int32) |
![]() | 0% | 7 | 7 | 7min | High | NodaTime.TimeZones.ZoneYearOffset .WriteLegacy (LegacyDateTimeZoneWriter) |
![]() | 0% | 6 | 6 | 6min | High | NodaTime.TimeZones.ZoneRecurrence .ToString() |
![]() | 0% | 3 | 3 | 3min 46s | High | NodaTime.LocalInstant.ToString() |
![]() | 0% | 3 | 3 | 3min 46s | High | NodaTime.Text .InstantPatternParser+NumberPatter n.ParseImpl(String) |
![]() | 0% | 2 | 2 | 2min 53s | High | NodaTime.Calendars .FixedMonthYearMonthDayCalculator .GetMonthOfYear(LocalInstant,Int32 ) |
![]() | 0% | 2 | 2 | 2min 53s | High | NodaTime.Text.ParseResult<T> .ArgumentNull(String) |
![]() | 0% | 1 | 1 | 2min 0s | High | NodaTime.LocalTime.get_Millisecond () |
![]() | 0% | 1 | 1 | 2min 0s | High | NodaTime.Calendars .TimeOfDayCalculator .GetTickOfMillisecond(LocalInstant ) |
![]() | 0% | 1 | 1 | 2min 0s | High | NodaTime.Calendars .TimeOfDayCalculator .GetMillisecondOfDay(LocalInstant) |
![]() | 0% | 1 | 1 | 2min 0s | High | NodaTime.Calendars .TimeOfDayCalculator .GetSecondOfDay(LocalInstant) |
![]() | 0% | 1 | 1 | 2min 0s | High | NodaTime.Calendars .TimeOfDayCalculator .GetMinuteOfDay(LocalInstant) |
![]() | 0% | 1 | 1 | 2min 0s | High | NodaTime.Text.ZonedDateTimePattern .WithTemplateValue(ZonedDateTime) |
![]() | Rule Violated: Assemblies Namespaces and Types should be tested |
• How to Fix Issues of this Rule: Write unit and integration tests to cover, even partially, code elements matched by this rule. Then use issues of the rules Code should be tested, New Methods should be tested and Methods refactored should be tested to write more tests where it matters most, and eventually refactor some code to make it more testable.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1603:AssembliesNamespacesAndTypesShouldBeTested", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
5 code elements parent matched
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
5 code elements parent | # lines of code not covered | Debt | Severity | Full Name |
---|---|---|---|---|
![]() ![]() | 21 | 4min 0s | Low | JetBrains.Annotations |
![]() | 117 | 4min 0s | Low | NodaTime.TimeZones.IO .LegacyDateTimeZoneWriter |
![]() | 3 | 4min 0s | Low | NodaTime.ZonedDateTime+Comparer |
![]() | 3 | 4min 0s | Low | NodaTime .ZonedDateTime+LocalComparer |
![]() | 3 | 4min 0s | Low | NodaTime .ZonedDateTime+InstantComparer |
Statistics
Stat | # lines of code not covered | Debt | Severity |
---|---|---|---|
Sum: | 147 | 20min | - |
Average: | 29.4 | 4min 0s | - |
Minimum: | 3 | 4min 0s | - |
Maximum: | 117 | 4min 0s | - |
Standard deviation: | 44.35 | 0min 0s | - |
Variance: | 1 967 | 0min 0s | - |
![]() | Rule Violated: Types almost 100% tested should be 100% tested |
• How to Fix Issues of this Rule: Write more unit-tests dedicated to cover code not covered yet. If you find some hard-to-test code, it is certainly a sign that this code is not well designed and hence, needs refactoring.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1604:TypesAlmost100PercentTestedShouldBe100PercentTested", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
25 types matched
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
25 types | Percentage Coverage | # lines of code (LOC) | # lines of code not covered | methodsCulprit | Debt | Severity | Full Name |
---|---|---|---|---|---|---|---|
![]() ![]() | 98.85% | 87 | 1 | 1 method
| 2min 0s | High | NodaTime.Calendars .HebrewYearMonthDayCalculator |
![]() ![]() | 96.15% | 52 | 2 | 2 methods
| 2min 56s | High | NodaTime.Calendars .IslamicYearMonthDayCalculator |
![]() ![]() | 97.06% | 34 | 1 | 1 method
| 2min 0s | High | NodaTime.TimeZones .BclDateTimeZone+BclAdjustmentRule |
![]() | 97.71% | 218 | 5 | 4 methods
| 5min | High | NodaTime.Period |
![]() | 95.92% | 147 | 6 | First 5 of 6 methods
| 6min | High | NodaTime.CalendarSystem |
![]() | 97.06% | 136 | 4 | 4 methods
| 4min 50s | High | NodaTime.LocalDateTime |
![]() | 97.39% | 115 | 3 | 3 methods
| 3min 53s | High | NodaTime.DateTimeZone |
![]() | 98.11% | 106 | 2 | 2 methods
| 2min 56s | High | NodaTime.Globalization .NodaFormatInfo |
![]() | 98.04% | 102 | 2 | 2 methods
| 2min 56s | High | NodaTime.Text.ValueCursor |
![]() | 97.8% | 91 | 2 | 1 method
| 2min 56s | High | NodaTime.Text .PeriodPattern+NormalizingIsoPatte rnImpl |
![]() | 96.39% | 83 | 3 | 3 methods
| 3min 53s | High | NodaTime.LocalTime |
![]() | 97.4% | 77 | 2 | 1 method
| 2min 56s | High | NodaTime.Text .ZonedDateTimePatternParser |
![]() | 98.25% | 75 | 1 | 1 method
| 2min 0s | High | NodaTime.PeriodBuilder |
![]() | 98.51% | 67 | 1 | 1 method
| 2min 0s | High | NodaTime.Instant |
![]() | 96.92% | 65 | 2 | 1 method
| 2min 56s | High | NodaTime.Text .OffsetDateTimePatternParser |
![]() | 98.41% | 63 | 1 | 1 method
| 2min 0s | High | NodaTime.OffsetDateTime |
![]() | 98.36% | 61 | 1 | 1 method
| 2min 0s | High | NodaTime.Text .PeriodPattern+RoundtripPatternImp l |
![]() | 96.67% | 60 | 2 | 2 methods
| 2min 56s | High | NodaTime.Duration |
![]() | 98.11% | 53 | 1 | 1 method
| 2min 0s | High | NodaTime.Offset |
![]() | 97.83% | 46 | 1 | 1 method
| 2min 0s | High | NodaTime.TimeZones.BclDateTimeZone |
![]() | 95.45% | 44 | 2 | 1 method
| 2min 56s | High | NodaTime.Text .DurationPatternParser |
![]() | 97.5% | 40 | 1 | 1 method
| 2min 0s | High | NodaTime.TimeZones.ZoneInterval |
![]() | 97.37% | 38 | 1 | 1 method
| 2min 0s | High | NodaTime.Interval |
![]() | 97.3% | 37 | 1 | 1 method
| 2min 0s | High | NodaTime.Text.Patterns .PatternCursor |
![]() | 96.88% | 32 | 1 | 1 method
| 2min 0s | High | NodaTime.Text.Patterns .SteppedPatternBuilder<TResult ,TBucket>+SteppedPattern |
![]() | Rule Violated: Namespaces almost 100% tested should be 100% tested |
• How to Fix Issues of this Rule: Write more unit-tests dedicated to cover code not covered yet in the namespace. If you find some hard-to-test code, it is certainly a sign that this code is not well designed and hence, needs refactoring.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1605:NamespacesAlmost100PercentTestedShouldBe100PercentTested", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
5 namespaces matched
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
5 namespaces | Percentage Coverage | # lines of code (LOC) | # lines of code not covered | methodsCulprit | Debt | Severity | Full Name |
---|---|---|---|---|---|---|---|
![]() ![]() | 95.44% | 592 | 27 | First 5 of 13 methods
| 32min | High | NodaTime.Calendars |
![]() | 96.37% | 1 341 | 48 | First 5 of 45 methods
| 57min | High | NodaTime |
![]() | 98.29% | 467 | 8 | 4 methods
| 10min | High | NodaTime.Text.Patterns |
![]() | 98.33% | 120 | 2 | 2 methods
| 3min 11s | High | NodaTime.Globalization |
![]() | 98.7% | 97 | 1 | 1 method
| 2min 0s | High | NodaTime.Fields |
![]() | Rule Violated: Types that used to be 100% covered by tests should still be 100% covered |
• How to Fix Issues of this Rule: Write more unit-tests dedicated to cover code not covered anymore. If you find some hard-to-test code, it is certainly a sign that this code is not well designed and hence, needs refactoring. You'll find code impossible to cover by unit-tests, like calls to MessageBox.Show(). An infrastructure must be defined to be able to mock such code at test-time.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1606:TypesThatUsedToBe100PercentCoveredByTestsShouldStillBe100PercentCovered", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
1 method matched
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
1 method | Percentage Coverage | Debt | Severity | Full Name |
---|---|---|---|---|
![]() | 98.15% | 2min 0s | High | NodaTime.Text.FormatHelper.LeftPad (Int32,Int32,StringBuilder) |
![]() | Rule Violated: Types 100% covered should be tagged with FullCoveredAttribute |
• How to Fix Issues of this Rule: Just tag types 100% covered by tests with the FullCoveredAttribute that can be found in NDepend.API.dll, or by an attribute of yours defined in your own code (in which case this rule must be adapted).
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1608:Types100PercentCoveredShouldBeTaggedWithFullCoveredAttribute", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
69 types matched
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
69 types | # lines of code (LOC) | Debt | Severity | Full Name |
---|---|---|---|---|
![]() ![]() | 13 | 3min 0s | Low | NodaTime.Calendars.Era |
![]() ![]() | 37 | 3min 0s | Low | NodaTime.Calendars .GJYearMonthDayCalculator |
![]() ![]() | 69 | 3min 0s | Low | NodaTime.Calendars .HebrewScripturalCalculator |
![]() ![]() | 9 | 3min 0s | Low | NodaTime.Calendars .HebrewMonthConverter |
![]() ![]() | 2 | 3min 0s | Low | NodaTime.Calendars.TickArithmetic |
![]() ![]() | 6 | 3min 0s | Low | NodaTime.Calendars.YearMonthDay |
![]() ![]() | 82 | 3min 0s | Low | NodaTime.Calendars .YearMonthDayCalculator |
![]() ![]() | 12 | 3min 0s | Low | NodaTime.Calendars .YearStartCacheEntry |
![]() ![]() | 44 | 3min 0s | Low | NodaTime.TimeZones .PartialZoneIntervalMap |
![]() ![]() | 3 | 3min 0s | Low | NodaTime.TimeZones .SingleZoneIntervalMap |
![]() ![]() | 72 | 3min 0s | Low | NodaTime.TimeZones.IO .DateTimeZoneWriter |
![]() | 9 | 3min 0s | Low | NodaTime.AmbiguousTimeException |
![]() | 8 | 3min 0s | Low | NodaTime.DateTimeZoneProviders |
![]() | 1 | 3min 0s | Low | NodaTime .DateTimeZoneProviders+TzdbHolder |
![]() | 1 | 3min 0s | Low | NodaTime .DateTimeZoneProviders+BclHolder |
![]() | 3 | 3min 0s | Low | NodaTime.OffsetDateTime+Comparer |
![]() | 3 | 3min 0s | Low | NodaTime .OffsetDateTime+LocalComparer |
![]() | 3 | 3min 0s | Low | NodaTime .OffsetDateTime+InstantComparer |
![]() | 8 | 3min 0s | Low | NodaTime .Period+NormalizingPeriodEqualityC omparer |
![]() | 11 | 3min 0s | Low | NodaTime.Period+PeriodComparer |
![]() | 5 | 3min 0s | Low | NodaTime.SkippedTimeException |
![]() | 3 | 3min 0s | Low | NodaTime.SystemClock |
![]() | 2 | 3min 0s | Low | NodaTime.NodaConstants |
![]() | 6 | 3min 0s | Low | NodaTime.Utility.BclConversions |
![]() | 7 | 3min 0s | Low | NodaTime.Utility.HashCodeHelper |
![]() | 24 | 3min 0s | Low | NodaTime.Utility.Cache<TKey,TValue > |
![]() | 2 | 3min 0s | Low | NodaTime.Utility .ReferenceEqualityComparer<T> |
![]() | 14 | 3min 0s | Low | NodaTime.Globalization .NodaFormatInfo+EraDescription |
![]() | 26 | 3min 0s | Low | NodaTime.Fields .FixedDurationPeriodField |
![]() | 13 | 3min 0s | Low | NodaTime.Fields.YearsPeriodField |
![]() | 19 | 3min 0s | Low | NodaTime.Fields.PeriodFieldSet |
![]() | 33 | 3min 0s | Low | NodaTime.Fields .PeriodFieldSet+Builder |
![]() | 9 | 3min 0s | Low | NodaTime.Calendars .CopticYearMonthDayCalculator |
![]() | 32 | 3min 0s | Low | NodaTime.Calendars .GregorianYearMonthDayCalculator |
![]() | 2 | 3min 0s | Low | NodaTime.Calendars .IsoYearMonthDayCalculator |
![]() | 9 | 3min 0s | Low | NodaTime.Calendars .JulianYearMonthDayCalculator |
![]() | 37 | 3min 0s | Low | NodaTime.Calendars .WeekYearCalculator |
![]() | 12 | 3min 0s | Low | NodaTime.TimeZones .CachingZoneIntervalMap+HashArrayC ache |
![]() | 15 | 3min 0s | Low | NodaTime.TimeZones .CachingZoneIntervalMap+HashArrayC ache+HashCacheNode |
![]() | 1 | 3min 0s | Low | NodaTime.TimeZones .DateTimeZoneNotFoundException |
![]() | 31 | 3min 0s | Low | NodaTime.TimeZones.Resolvers |
![]() | 1 | 3min 0s | Low | NodaTime.TimeZones .InvalidDateTimeZoneSourceExceptio n |
![]() | 25 | 3min 0s | Low | NodaTime.TimeZones .ZoneEqualityComparer+ZoneInterval EqualityComparer |
![]() | 4 | 3min 0s | Low | NodaTime.TimeZones .TzdbDateTimeZoneSource+DefaultHol der |
![]() | 1 | 3min 0s | Low | NodaTime.TimeZones.IO .DateTimeZoneWriter+ZoneIntervalCo nstants |
![]() | 21 | 3min 0s | Low | NodaTime.TimeZones.IO .TzdbStreamField |
![]() | 1 | 3min 0s | Low | NodaTime.Text .DurationPattern+Patterns |
![]() | 1 | 3min 0s | Low | NodaTime.Text .DurationPatternParser+DurationPar seBucket |
![]() | 6 | 3min 0s | Low | NodaTime.Text .OffsetDateTimePattern+Patterns |
![]() | 9 | 3min 0s | Low | NodaTime.Text .OffsetDateTimePatternParser+Offse tDateTimeParseBucket |
![]() | 4 | 3min 0s | Low | NodaTime.Text .ZonedDateTimePattern+Patterns |
![]() | 21 | 3min 0s | Low | NodaTime.Text .LocalDateTimePatternParser+LocalD ateTimeParseBucket |
![]() | 4 | 3min 0s | Low | NodaTime.Text .FixedFormatInfoPatternParser<T> |
![]() | 2 | 3min 0s | Low | NodaTime.Text .InstantPattern+Patterns |
![]() | 19 | 3min 0s | Low | NodaTime.Text .InstantPatternParser+LocalDateTim ePatternAdapter |
![]() | 1 | 3min 0s | Low | NodaTime.Text .LocalDatePattern+Patterns |
![]() | 4 | 3min 0s | Low | NodaTime.Text .LocalDateTimePattern+Patterns |
![]() | 1 | 3min 0s | Low | NodaTime.Text .LocalTimePattern+Patterns |
![]() | 31 | 3min 0s | Low | NodaTime.Text .LocalTimePatternParser+LocalTimeP arseBucket |
![]() | 68 | 3min 0s | Low | NodaTime.Text.OffsetPatternParser |
![]() | 11 | 3min 0s | Low | NodaTime.Text .OffsetPatternParser+ZPrefixPatter n |
![]() | 4 | 3min 0s | Low | NodaTime.Text .OffsetPatternParser+OffsetParseBu cket |
![]() | 13 | 3min 0s | Low | NodaTime.Text.PeriodPattern |
![]() | 2 | 3min 0s | Low | NodaTime.Text.ParseBucket<T> |
![]() | 103 | 3min 0s | Low | NodaTime.Text.Patterns .DatePatternHelper |
![]() | 8 | 3min 0s | Low | NodaTime.Text.Patterns .PatternBclSupport<T> |
![]() | 109 | 3min 0s | Low | NodaTime.Text.Patterns .TimePatternHelper |
![]() | 24 | 3min 0s | Low | NodaTime.Text.Patterns .CompositePattern<T> |
![]() | 137 | 3min 0s | Low | NodaTime.Text.Patterns .SteppedPatternBuilder<TResult ,TBucket> |
![]() | Rule Violated: Methods should have a low C.R.A.P score |
• How to Fix Issues of this Rule: In such situation, it is recommended to both refactor the complex method logic into several smaller and less complex methods (that might belong to some new types especially created), and also write unit-tests to full cover the refactored logic. You'll find code impossible to cover by unit-tests, like calls to MessageBox.Show(). An infrastructure must be defined to be able to mock such code at test-time.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1609:MethodsShouldHaveALowCRAPScore", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
11 methods matched
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
11 methods | CRAP | CC | Percentage Coverage | # lines of code (LOC) | Debt | Severity | Full Name |
---|---|---|---|---|---|---|---|
![]() | 240 | 15 | 0% | 39 | 22min | High | NodaTime.TimeZones .TzdbDateTimeZoneSource.Validate() |
![]() | 156 | 12 | 0% | 28 | 17min | High | NodaTime.TimeZones.IO .LegacyDateTimeZoneWriter .WriteTicks(Int64) |
![]() | 56 | 7 | 0% | 16 | 11min | High | NodaTime.TimeZones.IO .LegacyDateTimeZoneWriter .WriteOffset(Offset) |
![]() | 42 | 6 | 0% | 30 | 10min | High | NodaTime.TimeZones .PrecalculatedDateTimeZone .WriteLegacy (LegacyDateTimeZoneWriter) |
![]() | 42 | 6 | 0% | 26 | 10min | High | NodaTime.TimeZones.IO .LegacyDateTimeZoneWriter .WriteCount(Int32) |
![]() | 42 | 6 | 0% | 16 | 10min | High | NodaTime.TimeZones.IO .LegacyDateTimeZoneWriter .WriteTimeZone(DateTimeZone) |
![]() | 37 | 37 | 100% | 37 | 10min | High | NodaTime.Text .OffsetDateTimePatternParser. .cctor() |
![]() | 37 | 37 | 100% | 37 | 10min | High | NodaTime.Text .LocalDateTimePatternParser..cctor () |
![]() | 37 | 37 | 100% | 37 | 10min | High | NodaTime.Text .ZonedDateTimePatternParser..cctor () |
![]() | 36 | 36 | 100% | 57 | 10min | High | NodaTime.CalendarSystem..cctor() |
![]() | 31.03 | 31 | 96.92% | 65 | 10min | High | NodaTime.Text .PeriodPattern+NormalizingIsoPatte rnImpl.Parse(String) |
Dead Code 220 |
|
![]() | Rule Violated: Potentially Dead Types |
• How to Fix Issues of this Rule: Static analysis cannot provide an exact list of dead types, because there are several ways to use a type dynamically (like through reflection). For each type matched by this query, first investigate if the type is used somehow (like through reflection). If the type is really never used, it is important to remove it to avoid maintaining useless code. If you estimate the code of the type might be used in the future, at least comment it, and provide an explanatory comment about the future intentions. If a type is used somehow, but still is matched by this rule, you can tag it with the attribute IsNotDeadCodeAttribute found in NDepend.API.dll to avoid matching the type again. You can also provide your own attribute for this need, but then you'll need to adapt this code rule. Issues of this rule have a Debt equal to 15 minutes because it only takes a short while to investigate if a type can be safely discarded. The Annual Interest of issues of this rule, the annual cost to not fix such issue, is proportional to the type #lines of code, because the bigger the type is, the more it slows down maintenance.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1700:PotentiallyDeadTypes", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
6 types matched
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
6 types | depth | TypesUsingMe | Debt | Annual Interest | Full Name |
---|---|---|---|---|---|
![]() ![]() | 0 | no type | 15min | 10min | JetBrains.Annotations .CanBeNullAttribute |
![]() ![]() | 0 | no type | 15min | 15min | JetBrains.Annotations .LocalizationRequiredAttribute |
![]() ![]() | 0 | no type | 15min | 20min | JetBrains.Annotations .MeansImplicitUseAttribute |
![]() ![]() | 0 | no type | 15min | 10min | JetBrains.Annotations .InstantHandleAttribute |
![]() ![]() | 1 | 1 type
| 15min | 20min | JetBrains.Annotations .UsedImplicitlyAttribute |
![]() | 0 | no type | 15min | 1h 22min | NodaTime.TimeZones.IO .DateTimeZoneWriter |
![]() | Rule Violated: Potentially Dead Methods |
• How to Fix Issues of this Rule: Static analysis cannot provide an exact list of dead methods, because there are several ways to invoke a method dynamically (like through reflection). For each method matched by this query, first investigate if the method is invoked somehow (like through reflection). If the method is really never invoked, it is important to remove it to avoid maintaining useless code. If you estimate the code of the method might be used in the future, at least comment it, and provide an explanatory comment about the future intentions. If a method is invoked somehow, but still is matched by this rule, you can tag it with the attribute IsNotDeadCodeAttribute found in NDepend.API.dll to avoid matching the method again. You can also provide your own attribute for this need, but then you'll need to adapt this code rule. Issues of this rule have a Debt equal to 10 minutes because it only takes a short while to investigate if a method can be safely discarded. On top of these 10 minutes, the depth of usage of such method adds up 3 minutes per unity because dead method only called by dead code takes a bit more time to be investigated. The Annual Interest of issues of this rule, the annual cost to not fix such issue, is proportional to the type #lines of code, because the bigger the method is, the more it slows down maintenance.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1701:PotentiallyDeadMethods", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
84 methods matched
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
84 methods | depth | MethodsCallingMe | Debt | Annual Interest | Full Name |
---|---|---|---|---|---|
![]() ![]() | 0 | no method | 10min | 10min | JetBrains.Annotations .StringFormatMethodAttribute..ctor (String) |
![]() ![]() | 0 | no method | 10min | 9min | JetBrains.Annotations .ContractAnnotationAttribute..ctor (String) |
![]() ![]() | 1 | 1 method
| 13min | 11min | JetBrains.Annotations .ContractAnnotationAttribute..ctor (String,Boolean) |
![]() ![]() | 0 | no method | 10min | 9min | JetBrains.Annotations .LocalizationRequiredAttribute. .ctor() |
![]() ![]() | 1 | 1 method
| 13min | 10min | JetBrains.Annotations .LocalizationRequiredAttribute. .ctor(Boolean) |
![]() ![]() | 0 | no method | 10min | 9min | JetBrains.Annotations .UsedImplicitlyAttribute..ctor() |
![]() ![]() | 0 | no method | 10min | 9min | JetBrains.Annotations .UsedImplicitlyAttribute..ctor (ImplicitUseKindFlags) |
![]() ![]() | 0 | no method | 10min | 9min | JetBrains.Annotations .UsedImplicitlyAttribute..ctor (ImplicitUseTargetFlags) |
![]() ![]() | 1 | 3 methods
| 13min | 11min | JetBrains.Annotations .UsedImplicitlyAttribute..ctor (ImplicitUseKindFlags ,ImplicitUseTargetFlags) |
![]() ![]() | 0 | no method | 10min | 9min | JetBrains.Annotations .MeansImplicitUseAttribute..ctor() |
![]() ![]() | 0 | no method | 10min | 9min | JetBrains.Annotations .MeansImplicitUseAttribute..ctor (ImplicitUseKindFlags) |
![]() ![]() | 0 | no method | 10min | 9min | JetBrains.Annotations .MeansImplicitUseAttribute..ctor (ImplicitUseTargetFlags) |
![]() ![]() | 1 | 3 methods
| 13min | 11min | JetBrains.Annotations .MeansImplicitUseAttribute..ctor (ImplicitUseKindFlags ,ImplicitUseTargetFlags) |
![]() ![]() | 0 | no method | 10min | 9min | NodaTime.LocalInstant .op_Inequality(LocalInstant ,LocalInstant) |
![]() ![]() | 0 | no method | 10min | 9min | NodaTime.TimeZones.ZoneYearOffset .get_Mode() |
![]() ![]() | 0 | no method | 10min | 9min | NodaTime.TimeZones.ZoneYearOffset .get_AdvanceDayOfWeek() |
![]() ![]() | 0 | no method | 10min | 9min | NodaTime.TimeZones.ZoneRecurrence .get_FromYear() |
![]() ![]() | 0 | no method | 10min | 9min | NodaTime.TimeZones.ZoneRecurrence .get_ToYear() |
![]() ![]() | 0 | no method | 10min | 9min | NodaTime.TimeZones.ZoneRecurrence .ToInfinity() |
![]() ![]() | 0 | no method | 10min | 9min | NodaTime.Text.ParseResult<T> .ForException(Func<Exception>) |
![]() | 0 | no method | 10min | 9min | NodaTime.CalendarSystem .GetTickOfMillisecond(LocalInstant ) |
![]() | 0 | no method | 10min | 9min | NodaTime.CalendarSystem .GetMillisecondOfDay(LocalInstant) |
![]() | 0 | no method | 10min | 9min | NodaTime.CalendarSystem .GetSecondOfDay(LocalInstant) |
![]() | 0 | no method | 10min | 9min | NodaTime.CalendarSystem .GetMinuteOfDay(LocalInstant) |
![]() | 0 | no method | 10min | 9min | NodaTime.CalendarSystem .GetHourOfHalfDay(LocalInstant) |
![]() | 0 | no method | 10min | 9min | NodaTime.AmbiguousTimeException .get_LocalDateTime() |
![]() | 0 | no method | 10min | 9min | NodaTime.OffsetDateTime..ctor (SerializationInfo ,StreamingContext) |
![]() | 0 | no method | 10min | 9min | NodaTime.LocalDate..ctor (SerializationInfo ,StreamingContext) |
![]() | 0 | no method | 10min | 9min | NodaTime.LocalTime..ctor (SerializationInfo ,StreamingContext) |
![]() | 0 | no method | 10min | 9min | NodaTime.Offset..ctor (SerializationInfo ,StreamingContext) |
![]() | 0 | no method | 10min | 9min | NodaTime.LocalInstant..ctor(Int32 ,Int32,Int32,Int32,Int32) |
![]() | 1 | 1 method
| 13min | 9min | NodaTime.LocalInstant.op_Addition (LocalInstant,Duration) |
![]() | 0 | no method | 10min | 9min | NodaTime.LocalInstant.Add (LocalInstant,Duration) |
![]() | 1 | 1 method
| 13min | 9min | NodaTime.LocalInstant .op_Subtraction(LocalInstant ,LocalInstant) |
![]() | 0 | no method | 10min | 9min | NodaTime.LocalInstant.Subtract (LocalInstant,LocalInstant) |
![]() | 0 | no method | 10min | 9min | NodaTime.LocalInstant.Subtract (LocalInstant,Duration) |
![]() | 0 | no method | 10min | 9min | NodaTime.Period..ctor (SerializationInfo ,StreamingContext) |
![]() | 0 | no method | 10min | 9min | NodaTime.LocalDateTime..ctor (SerializationInfo ,StreamingContext) |
![]() | 0 | no method | 10min | 9min | NodaTime.Duration..ctor (SerializationInfo ,StreamingContext) |
![]() | 0 | no method | 10min | 9min | NodaTime.Instant..ctor (SerializationInfo ,StreamingContext) |
![]() | 0 | no method | 10min | 9min | NodaTime.Interval..ctor (SerializationInfo ,StreamingContext) |
![]() | 0 | no method | 10min | 9min | NodaTime.ZonedDateTime..ctor (SerializationInfo ,StreamingContext) |
![]() | 0 | no method | 10min | 10min | NodaTime.Utility.Cache<TKey,TValue >.get_Count() |
![]() | 0 | no method | 10min | 10min | NodaTime.Utility.Cache<TKey,TValue >.get_Keys() |
![]() | 1 | 1 method
| 13min | 11min | NodaTime.Utility.Cache<TKey,TValue >.Clear() |
![]() | 0 | no method | 10min | 11min | NodaTime.Utility.Preconditions .CheckArgument<T1,T2>(Boolean ,String,String,T1,T2) |
![]() | 0 | no method | 10min | 11min | NodaTime.Utility.Preconditions .CheckArgument(Boolean,String ,String,Object[]) |
![]() | 0 | no method | 10min | 9min | NodaTime.Globalization .NodaFormatInfo.get_CultureInfo() |
![]() | 0 | no method | 10min | 9min | NodaTime.Globalization .NodaFormatInfo.ClearCache() |
![]() | 1 | 1 method
| 13min | 9min | NodaTime.Calendars .TimeOfDayCalculator .GetTickOfMillisecond(LocalInstant ) |
![]() | 1 | 1 method
| 13min | 9min | NodaTime.Calendars .TimeOfDayCalculator .GetMillisecondOfDay(LocalInstant) |
![]() | 1 | 1 method
| 13min | 9min | NodaTime.Calendars .TimeOfDayCalculator .GetSecondOfDay(LocalInstant) |
![]() | 1 | 1 method
| 13min | 9min | NodaTime.Calendars .TimeOfDayCalculator .GetMinuteOfDay(LocalInstant) |
![]() | 0 | no method | 10min | 14min | NodaTime.TimeZones .TzdbZoneLocation.Write (IDateTimeZoneWriter) |
![]() | 1 | 1 method
| 13min | 9min | NodaTime.TimeZones.Transition .op_Equality(Transition,Transition ) |
![]() | 0 | no method | 10min | 9min | NodaTime.TimeZones.Transition .op_Inequality(Transition ,Transition) |
![]() | 1 | 1 method
| 13min | 15min | NodaTime.TimeZones .DaylightSavingsDateTimeZone.Write (IDateTimeZoneWriter) |
![]() | 0 | no method | 10min | 9min | NodaTime.TimeZones .FixedDateTimeZone.get_Offset() |
![]() | 0 | no method | 10min | 9min | NodaTime.TimeZones .ZoneEqualityComparer .get_IntervalForTest() |
![]() | 0 | no method | 10min | 9min | NodaTime.TimeZones .ZoneEqualityComparer .get_OptionsForTest() |
![]() | 0 | no method | 10min | 9min | NodaTime.TimeZones .ZoneIntervalPair.get_LateInterval () |
![]() | 0 | no method | 10min | 9min | NodaTime.TimeZones.ZoneYearOffset .get_TimeOfDay() |
![]() | 0 | no method | 10min | 12min | NodaTime.TimeZones.ZoneYearOffset .NormalizeModeCharacter(Char) |
![]() | 0 | no method | 10min | 9min | NodaTime.TimeZones .PrecalculatedDateTimeZone .IsCachable() |
![]() | 0 | no method | 10min | 24min | NodaTime.TimeZones .PrecalculatedDateTimeZone.Write (IDateTimeZoneWriter) |
![]() | 0 | no method | 10min | 9min | NodaTime.TimeZones.ZoneRecurrence .WithName(String) |
![]() | 0 | no method | 10min | 13min | NodaTime.TimeZones.ZoneRecurrence .Write(IDateTimeZoneWriter) |
![]() | 0 | no method | 10min | 17min | NodaTime.TimeZones.ZoneRecurrence .Read(IDateTimeZoneReader) |
![]() | 0 | no method | 10min | 27min | NodaTime.TimeZones .TzdbDateTimeZoneSource .GuessZoneIdByTransitionsUncached (TimeZoneInfo) |
![]() | 0 | no method | 10min | 11min | NodaTime.TimeZones.IO .LegacyDateTimeZoneWriter..ctor (Stream,IList<String>) |
![]() | 0 | no method | 10min | 11min | NodaTime.TimeZones.IO .DateTimeZoneWriter..ctor(Stream ,IList<String>) |
![]() | 1 | 1 method
| 13min | 16min | NodaTime.TimeZones.Cldr.MapZone .Write(IDateTimeZoneWriter) |
![]() | 0 | no method | 10min | 9min | NodaTime.TimeZones.Cldr .WindowsZones..ctor(String,String ,String,IList<MapZone>) |
![]() | 0 | no method | 10min | 17min | NodaTime.TimeZones.Cldr .WindowsZones.Write (IDateTimeZoneWriter) |
![]() | 0 | no method | 10min | 9min | NodaTime.Text.DurationPattern .get_FormatInfo() |
![]() | 0 | no method | 10min | 9min | NodaTime.Text .OffsetDateTimePattern .get_FormatInfo() |
![]() | 0 | no method | 10min | 9min | NodaTime.Text.ZonedDateTimePattern .get_FormatInfo() |
![]() | 0 | no method | 10min | 9min | NodaTime.Text.InstantPattern .get_FormatInfo() |
![]() | 0 | no method | 10min | 9min | NodaTime.Text .InvalidPatternException..ctor (SerializationInfo ,StreamingContext) |
![]() | 0 | no method | 10min | 9min | NodaTime.Text.LocalDatePattern .get_FormatInfo() |
![]() | 0 | no method | 10min | 9min | NodaTime.Text.LocalDateTimePattern .get_FormatInfo() |
![]() | 0 | no method | 10min | 9min | NodaTime.Text.LocalTimePattern .get_FormatInfo() |
![]() | 0 | no method | 10min | 9min | NodaTime.Text.OffsetPattern .get_FormatInfo() |
![]() | 0 | no method | 10min | 9min | NodaTime.Text .UnparsableValueException..ctor (SerializationInfo ,StreamingContext) |
Security 810 |
|
![]() | Rule Violated: Seal methods that satisfy non-public interfaces |
• How to Fix Issues of this Rule: You can: - seal the parent class, - or change the accessibility of the parent class to non-public, - or implement the method without using the virtual modifier, - or change the accessibility of the method to non-public. If after a careful check such situation doesn't represent a security threat, you can suppress the issue.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND3106:SealMethodsThatSatisfyNonPublicInterfaces", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
1 method matched
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
1 method | overridenInterface | Debt | Severity | Full Name |
---|---|---|---|---|
![]() | ![]() | 30min | High | NodaTime.DateTimeZone .GetZoneInterval(Instant) |
Statistics
Stat | overridenInterface | Debt | Severity |
---|---|---|---|
Sum: | - | 30min | - |
Average: | - | 30min | - |
Minimum: | - | 30min | - |
Maximum: | - | 30min | - |
Standard deviation: | - | 0min 0s | - |
Variance: | - | 0min 0s | - |
Visibility 370 |
|
![]() | Rule Violated: Methods that could have a lower visibility |
• How to Fix Issues of this Rule: Declare each matched method with the specified optimal visibility in the CouldBeDeclared rule result column. By default, this rule matches public methods. If you are publishing an API many public methods matched should remain public. In such situation, you can opt for the coarse solution to this problem by adding in the rule source code && !m.IsPubliclyVisible or you can prefer the finer solution by tagging each concerned method with CannotDecreaseVisibilityAttribute.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1800:MethodsThatCouldHaveALowerVisibility", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
87 methods matched
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
87 methods | Visibility | CouldBeDeclared | MethodsCallingMe | Debt | Severity | Full Name |
---|---|---|---|---|---|---|
![]() ![]() | Public | Private | no method | 0min 30s | Medium | JetBrains.Annotations .StringFormatMethodAttribute..ctor (String) |
![]() ![]() | Public | Private | no method | 0min 30s | Medium | JetBrains.Annotations .StringFormatMethodAttribute .get_FormatParameterName() |
![]() ![]() | Public | Private | no method | 0min 30s | Medium | JetBrains.Annotations .ContractAnnotationAttribute..ctor (String) |
![]() ![]() | Public | Private | 1 method
| 0min 30s | Medium | JetBrains.Annotations .ContractAnnotationAttribute..ctor (String,Boolean) |
![]() ![]() | Public | Private | no method | 0min 30s | Medium | JetBrains.Annotations .ContractAnnotationAttribute .get_Contract() |
![]() ![]() | Public | Private | no method | 0min 30s | Medium | JetBrains.Annotations .ContractAnnotationAttribute .get_ForceFullStates() |
![]() ![]() | Public | Private | 1 method
| 0min 30s | Medium | JetBrains.Annotations .LocalizationRequiredAttribute. .ctor(Boolean) |
![]() ![]() | Public | Private | no method | 0min 30s | Medium | JetBrains.Annotations .LocalizationRequiredAttribute .get_Required() |
![]() ![]() | Public | Private | no method | 0min 30s | Medium | JetBrains.Annotations .UsedImplicitlyAttribute..ctor (ImplicitUseKindFlags) |
![]() ![]() | Public | Private | no method | 0min 30s | Medium | JetBrains.Annotations .UsedImplicitlyAttribute..ctor (ImplicitUseTargetFlags) |
![]() ![]() | Public | Private | 3 methods
| 0min 30s | Medium | JetBrains.Annotations .UsedImplicitlyAttribute..ctor (ImplicitUseKindFlags ,ImplicitUseTargetFlags) |
![]() ![]() | Public | Private | no method | 0min 30s | Medium | JetBrains.Annotations .UsedImplicitlyAttribute .get_UseKindFlags() |
![]() ![]() | Public | Private | no method | 0min 30s | Medium | JetBrains.Annotations .UsedImplicitlyAttribute .get_TargetFlags() |
![]() ![]() | Public | Private | no method | 0min 30s | Medium | JetBrains.Annotations .MeansImplicitUseAttribute..ctor (ImplicitUseKindFlags) |
![]() ![]() | Public | Private | no method | 0min 30s | Medium | JetBrains.Annotations .MeansImplicitUseAttribute..ctor (ImplicitUseTargetFlags) |
![]() ![]() | Public | Private | 3 methods
| 0min 30s | Medium | JetBrains.Annotations .MeansImplicitUseAttribute..ctor (ImplicitUseKindFlags ,ImplicitUseTargetFlags) |
![]() ![]() | Public | Private | no method | 0min 30s | Medium | JetBrains.Annotations .MeansImplicitUseAttribute .get_UseKindFlags() |
![]() ![]() | Public | Private | no method | 0min 30s | Medium | JetBrains.Annotations .MeansImplicitUseAttribute .get_TargetFlags() |
![]() ![]() | Internal | Private | 4 methods
| 0min 30s | Medium | NodaTime.TimeZones .PartialZoneIntervalMap.get_Start( ) |
![]() ![]() | Internal | Private | 2 methods
| 0min 30s | Medium | NodaTime.TimeZones .PartialZoneIntervalMap .ForZoneInterval(ZoneInterval) |
![]() ![]() | Internal | Private | 1 method
| 0min 30s | Medium | NodaTime.TimeZones .PartialZoneIntervalMap.WithStart (Instant) |
![]() ![]() | Internal | Private | 1 method
| 0min 30s | Medium | NodaTime.TimeZones .PartialZoneIntervalMap.WithEnd (Instant) |
![]() ![]() | Internal | Private | 1 method
| 0min 30s | Medium | NodaTime.TimeZones.Transition .get_NewOffset() |
![]() ![]() | Internal | Private | no method | 0min 30s | Medium | NodaTime.TimeZones.ZoneRecurrence .ToInfinity() |
![]() ![]() | Internal | Private | no method | 0min 30s | Medium | NodaTime.Text.ParseResult<T> .ForException(Func<Exception>) |
![]() ![]() | Internal | Private | First 5 of 11 methods
| 0min 30s | Medium | NodaTime.Text.ParseResult<T> .ForInvalidValuePostParse(String ,String,Object[]) |
![]() | Internal | Private | no method | 0min 30s | Medium | NodaTime.CalendarSystem .GetTickOfMillisecond(LocalInstant ) |
![]() | Internal | Private | no method | 0min 30s | Medium | NodaTime.CalendarSystem .GetMillisecondOfDay(LocalInstant) |
![]() | Internal | Private | no method | 0min 30s | Medium | NodaTime.CalendarSystem .GetSecondOfDay(LocalInstant) |
![]() | Internal | Private | no method | 0min 30s | Medium | NodaTime.CalendarSystem .GetMinuteOfDay(LocalInstant) |
![]() | Internal | Private | no method | 0min 30s | Medium | NodaTime.CalendarSystem .GetHourOfHalfDay(LocalInstant) |
![]() | Internal | Private | no method | 0min 30s | Medium | NodaTime.AmbiguousTimeException .get_LocalDateTime() |
![]() | Internal | Private | no method | 0min 30s | Medium | NodaTime.LocalInstant..ctor(Int32 ,Int32,Int32,Int32,Int32) |
![]() | Public | Private | no method | 0min 30s | Medium | NodaTime.LocalInstant.Add (LocalInstant,Duration) |
![]() | Public | Private | no method | 0min 30s | Medium | NodaTime.LocalInstant.Subtract (LocalInstant,LocalInstant) |
![]() | Public | Private | no method | 0min 30s | Medium | NodaTime.LocalInstant.Subtract (LocalInstant,Duration) |
![]() | Internal | Private | 3 methods
| 0min 30s | Medium | NodaTime.ZonedDateTime .get_LocalInstant() |
![]() | Internal | Private | no method | 0min 30s | Medium | NodaTime.Utility.Cache<TKey,TValue >.get_Count() |
![]() | Internal | Private | no method | 0min 30s | Medium | NodaTime.Utility.Cache<TKey,TValue >.get_Keys() |
![]() | Internal | Private | no method | 0min 30s | Medium | NodaTime.Utility.Preconditions .CheckArgument<T1,T2>(Boolean ,String,String,T1,T2) |
![]() | Internal | Private | no method | 0min 30s | Medium | NodaTime.Utility.Preconditions .CheckArgument(Boolean,String ,String,Object[]) |
![]() | Internal | Private | 2 methods
| 0min 30s | Medium | NodaTime.Globalization .NodaFormatInfo..ctor(CultureInfo) |
![]() | Public | Private | no method | 0min 30s | Medium | NodaTime.Globalization .NodaFormatInfo.get_CultureInfo() |
![]() | Internal | Private | no method | 0min 30s | Medium | NodaTime.Globalization .NodaFormatInfo.ClearCache() |
![]() | Internal | Private | no method | 0min 30s | Medium | NodaTime.Fields .PeriodFieldSet+Builder .get_HalfDays() |
![]() | Internal | Private | no method | 0min 30s | Medium | NodaTime.Fields .PeriodFieldSet+Builder .set_HalfDays(IPeriodField) |
![]() | Internal | Private | 1 method
| 0min 30s | Medium | NodaTime.Calendars.Era..ctor (String,String) |
![]() | Internal | Private | 2 methods
| 0min 30s | Medium | NodaTime.TimeZones .CachedDateTimeZone.get_TimeZone() |
![]() | Internal | Private | no method | 0min 30s | Medium | NodaTime.TimeZones .TzdbZoneLocation.Write (IDateTimeZoneWriter) |
![]() | Public | Private | 2 methods
| 0min 30s | Medium | NodaTime.TimeZones .FixedDateTimeZone..ctor(String ,Offset) |
![]() | Public | Private | no method | 0min 30s | Medium | NodaTime.TimeZones .FixedDateTimeZone.get_Offset() |
![]() | Internal | Private | no method | 0min 30s | Medium | NodaTime.TimeZones .ZoneEqualityComparer .get_IntervalForTest() |
![]() | Internal | Private | no method | 0min 30s | Medium | NodaTime.TimeZones .ZoneEqualityComparer .get_OptionsForTest() |
![]() | Internal | Private | no method | 0min 30s | Medium | NodaTime.TimeZones .ZoneIntervalPair.get_LateInterval () |
![]() | Internal | Private | 3 methods
| 0min 30s | Medium | NodaTime.TimeZones.ZoneYearOffset. .ctor(TransitionMode,Int32,Int32 ,Int32,Boolean,LocalTime,Boolean) |
![]() | Public | Private | no method | 0min 30s | Medium | NodaTime.TimeZones.ZoneYearOffset .get_Mode() |
![]() | Public | Private | no method | 0min 30s | Medium | NodaTime.TimeZones.ZoneYearOffset .get_AdvanceDayOfWeek() |
![]() | Public | Private | no method | 0min 30s | Medium | NodaTime.TimeZones.ZoneYearOffset .get_TimeOfDay() |
![]() | Public | Private | no method | 0min 30s | Medium | NodaTime.TimeZones.ZoneYearOffset .NormalizeModeCharacter(Char) |
![]() | Internal | Private | 2 methods
| 0min 30s | Medium | NodaTime.TimeZones.ZoneYearOffset .MakeInstant(Int32,Offset,Offset) |
![]() | Internal | Private | 2 methods
| 0min 30s | Medium | NodaTime.TimeZones .PrecalculatedDateTimeZone..ctor (String,ZoneInterval[] ,DateTimeZone) |
![]() | Internal | Private | 1 method
| 0min 30s | Medium | NodaTime.TimeZones .PrecalculatedDateTimeZone .ValidatePeriods(ZoneInterval[] ,DateTimeZone) |
![]() | Public | Private | no method | 0min 30s | Medium | NodaTime.TimeZones .PrecalculatedDateTimeZone .IsCachable() |
![]() | Internal | Private | no method | 0min 30s | Medium | NodaTime.TimeZones .PrecalculatedDateTimeZone.Write (IDateTimeZoneWriter) |
![]() | Public | Private | no method | 0min 30s | Medium | NodaTime.TimeZones.ZoneRecurrence .get_FromYear() |
![]() | Public | Private | no method | 0min 30s | Medium | NodaTime.TimeZones.ZoneRecurrence .get_ToYear() |
![]() | Internal | Private | no method | 0min 30s | Medium | NodaTime.TimeZones.ZoneRecurrence .WithName(String) |
![]() | Internal | Private | 1 method
| 0min 30s | Medium | NodaTime.TimeZones.ZoneRecurrence .Next(Instant,Offset,Offset) |
![]() | Internal | Private | 1 method
| 0min 30s | Medium | NodaTime.TimeZones.ZoneRecurrence .Previous(Instant,Offset,Offset) |
![]() | Internal | Private | no method | 0min 30s | Medium | NodaTime.TimeZones.ZoneRecurrence .Write(IDateTimeZoneWriter) |
![]() | Public | Private | no method | 0min 30s | Medium | NodaTime.TimeZones.ZoneRecurrence .Read(IDateTimeZoneReader) |
![]() | Internal | Private | no method | 0min 30s | Medium | NodaTime.TimeZones .TzdbDateTimeZoneSource .GuessZoneIdByTransitionsUncached (TimeZoneInfo) |
![]() | Internal | Private | no method | 0min 30s | Medium | NodaTime.TimeZones.IO .LegacyDateTimeZoneWriter..ctor (Stream,IList<String>) |
![]() | Internal | Private | no method | 0min 30s | Medium | NodaTime.TimeZones.IO .DateTimeZoneWriter..ctor(Stream ,IList<String>) |
![]() | Internal | Private | 1 method
| 0min 30s | Medium | NodaTime.TimeZones.IO .TzdbResourceData .NormalizeAsResourceName(String) |
![]() | Internal | Private | no method | 0min 30s | Medium | NodaTime.TimeZones.Cldr .WindowsZones..ctor(String,String ,String,IList<MapZone>) |
![]() | Internal | Private | no method | 0min 30s | Medium | NodaTime.TimeZones.Cldr .WindowsZones.Write (IDateTimeZoneWriter) |
![]() | Internal | Private | no method | 0min 30s | Medium | NodaTime.Text.DurationPattern .get_FormatInfo() |
![]() | Internal | Private | no method | 0min 30s | Medium | NodaTime.Text .OffsetDateTimePattern .get_FormatInfo() |
![]() | Internal | Private | no method | 0min 30s | Medium | NodaTime.Text.ZonedDateTimePattern .get_FormatInfo() |
![]() | Internal | Private | no method | 0min 30s | Medium | NodaTime.Text.InstantPattern .get_FormatInfo() |
![]() | Internal | Private | no method | 0min 30s | Medium | NodaTime.Text.LocalDatePattern .get_FormatInfo() |
![]() | Internal | Private | no method | 0min 30s | Medium | NodaTime.Text.LocalDateTimePattern .get_FormatInfo() |
![]() | Internal | Private | no method | 0min 30s | Medium | NodaTime.Text.LocalTimePattern .get_FormatInfo() |
![]() | Internal | Private | no method | 0min 30s | Medium | NodaTime.Text.OffsetPattern .get_FormatInfo() |
![]() | Internal | Protected | 4 methods
| 0min 30s | Medium | NodaTime.Text.ParseBucket<T> .IsFieldUsed(PatternFields ,PatternFields) |
![]() | Internal | Protected | 1 method
| 0min 30s | Medium | NodaTime.Text.ParseBucket<T> .AreAllFieldsUsed(PatternFields ,PatternFields) |
![]() | Rule Violated: Fields that could have a lower visibility |
• How to Fix Issues of this Rule: Declare each matched field with the specified optimal visibility in the CouldBeDeclared rule result column. By default, this rule matches public fields. If you are publishing an API some public fields matched should remain public. In such situation, you can opt for the coarse solution to this problem by adding in the rule source code && !m.IsPubliclyVisible or you can prefer the finer solution by tagging eah concerned field with CannotDecreaseVisibilityAttribute.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1802:FieldsThatCouldHaveALowerVisibility", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
9 fields matched
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
9 fields | Visibility | CouldBeDeclared | MethodsUsingMe | Debt | Severity | Full Name |
---|---|---|---|---|---|---|
![]() | Public | Private | 1 method
| 0min 30s | Medium | NodaTime.LocalInstant .LocalUnixEpoch |
![]() | Public | Internal | 2 methods
| 0min 30s | Medium | NodaTime.LocalInstant.MinValue |
![]() | Public | Internal | 2 methods
| 0min 30s | Medium | NodaTime.LocalInstant.MaxValue |
![]() | Internal | Private | 2 methods
| 0min 30s | Medium | NodaTime.Duration.OneStandardWeek |
![]() | Public | Internal | First 5 of 12 methods
| 0min 30s | Medium | NodaTime.Globalization .NodaFormatInfo.InvariantInfo |
![]() | Internal | Private | 1 method
| 0min 30s | Medium | NodaTime.Fields .FixedDurationPeriodField.HalfDays |
![]() | Public | Private | 1 method
| 0min 30s | Medium | NodaTime.TimeZones.ZoneYearOffset .StartOfYear |
![]() | Public | Internal | 3 methods
| 0min 30s | Medium | NodaTime.Text .DurationPatternParser+DurationPar seBucket.IsNegative |
![]() | Public | Internal | 3 methods
| 0min 30s | Medium | NodaTime.Text .OffsetPatternParser+OffsetParseBu cket.IsNegative |
![]() | Rule Violated: Types that could be declared as private, nested in a parent type |
• How to Fix Issues of this Rule: Nest each matched type into the specified parent type and declare it as private. However nested private types are hardly testable. Hence this rule might not be applied to types consumed directly by tests.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1803:TypesThatCouldBeDeclaredAsPrivateNestedInAParentType", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
2 types matched
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
2 types | couldBeNestedIn | Debt | Severity | Full Name |
---|---|---|---|---|
![]() ![]() | ![]() | 3min 0s | Low | JetBrains.Annotations .UsedImplicitlyAttribute |
![]() ![]() | ![]() | 3min 0s | Low | NodaTime.Calendars .HebrewMonthConverter |
![]() | Rule Violated: Avoid publicly visible constant fields |
• How to Fix Issues of this Rule: Declare matched fields as static readonly instead of constant. This way, the field value is safely changeable without the need to recompile client assemblies. Notice that enumeration value fields suffer from the same potential pitfall. But enumeration values cannot be declared as static readonly hence the rule comes with the condition && !f.IsEnumValue to avoid matching these. Unless you decide to banish public enumerations, just let the rule as is.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1804:AvoidPubliclyVisibleConstantFields", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
23 fields matched
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
23 fields | Debt | Severity | Full Name |
---|---|---|---|
![]() | 0min 30s | Medium | NodaTime.NodaConstants .TicksPerMillisecond |
![]() | 0min 30s | Medium | NodaTime.NodaConstants .TicksPerSecond |
![]() | 0min 30s | Medium | NodaTime.NodaConstants .TicksPerMinute |
![]() | 0min 30s | Medium | NodaTime.NodaConstants .TicksPerHour |
![]() | 0min 30s | Medium | NodaTime.NodaConstants .TicksPerStandardDay |
![]() | 0min 30s | Medium | NodaTime.NodaConstants .TicksPerStandardWeek |
![]() | 0min 30s | Medium | NodaTime.NodaConstants .MillisecondsPerSecond |
![]() | 0min 30s | Medium | NodaTime.NodaConstants .MillisecondsPerMinute |
![]() | 0min 30s | Medium | NodaTime.NodaConstants .MillisecondsPerHour |