It is recommended to use the JArchitect interactive UI capabilities
to make the most of JArchitect by mastering all aspects of your code.
Diagrams
Application Metrics
Note: Further Application Statistics are available.
|
Rules summary
39390This section lists all Rules violated, and Rules or Queries with Error- Number of Rules or Queries with Error (syntax error, exception thrown, time-out): 0
- Number of Rules violated: 50
Summary of Rules violated

development-time, from within
JArchitect. Online documentation.

existing code base? Use the option
Recent Violations Only!

can be used to break the build process if
violated. Online documentation.
Application Statistics
Stat | # Occurences | Avg | StdDev | Max |
---|---|---|---|---|
Properties on interfaces | 71 interfaces | 0 | 0 | 0 properties on org.apache.logging.log4j.Logger |
Methods on interfaces | 71 interfaces | 6.28 | 15.07 | 126 methods on org.apache.logging.log4j.Logger |
Arguments on methods on interfaces | 446 methods | 1.06 | 1.18 | 7 arguments on org.apache.logging.log4j.core.impl.LogEventFactory.createEvent(String,Marker,String,Level,Message,List,Throwable) |
Public properties on classes | 942 Classes | 0 | 0 | 0 public properties on org.apache.logging.log4j.EventLogger |
Public methods on classes | 942 classes | 5.26 | 7.04 | 133 public methods on org.apache.logging.log4j.spi.AbstractLogger |
Arguments on public methods on classes | 4,952 methods | 0.82 | 1.62 | 29 arguments on org.apache.logging.log4j.core.appender.SyslogAppender.createAppender(String,String,String,String,String,String,String,String,String,String,String,String,String,String,String,String,String,String,String,String,String,String,String,Filter,Configuration,String,String,LoggerFields[],String) |
BC instructions in non-abstract methods | 6,360 methods | 21.58 | 41.12 | 801 BC instructions in org.apache.logging.log4j.core.config.BaseConfiguration.createPluginObject(PluginType,Node,LogEvent)<T> |
Cyclomatic complexity on non abstract Methods | 6,360 Methods | 1.86 | 2.56 | CC = 52 for org.apache.logging.log4j.core.config.BaseConfiguration.createPluginObject(PluginType,Node,LogEvent)<T> |
Types Metrics : Code Quality
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 Members and Inheritance
Type Name | # Instance Methods | Nb Static Methods | Nb Properties | # Fields | # Children Classes | Depth Of Inheritance Tree | Type Package |
---|
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 Package |
---|
Packages Metrics
Clicking column header arrows sorts values.
Clicking column header title text redirect to the online Code Metric definition.
Packages | # lines of code | # BC instruction | # Types | # lines of comment | % Comment | % Coverage | Afferent Coupling | Efferent Coupling |
---|---|---|---|---|---|---|---|---|
pom.xml::org.apache.logging.log4j | 1341 | 7042 | 28 | 0 | 0 | - | 44 | 13 |
org.apache.logging.log4j.message | 1274 | 5951 | 46 | 0 | 0 | - | 29 | 14 |
org.apache.logging.log4j.simple | 96 | 461 | 3 | 0 | 0 | - | 2 | 10 |
org.apache.logging.log4j.spi | 1228 | 6278 | 19 | 0 | 0 | - | 27 | 12 |
org.apache.logging.log4j.status | 151 | 711 | 6 | 0 | 0 | - | 33 | 11 |
org.apache.logging.log4j.util | 72 | 363 | 4 | 0 | 0 | - | 12 | 8 |
org.apache.logging.log4j.osgi | 55 | 221 | 2 | 0 | 0 | - | 2 | 7 |
org.apache.logging.log4j.osgi.equinox | 9 | 29 | 2 | 0 | 0 | - | 2 | 6 |
org.apache.logging.log4j.osgi.felix | 9 | 29 | 2 | 0 | 0 | - | 2 | 6 |
pom.xml::org.apache.logging.log4j | 436 | 2043 | 11 | 0 | 0 | - | 0 | 15 |
org.apache.logging.log4j.core | 1149 | 5139 | 44 | 0 | 0 | - | 30 | 23 |
org.apache.logging.log4j.core.filter | 774 | 3943 | 23 | 0 | 0 | - | 13 | 15 |
org.apache.logging.log4j.core.helpers | 673 | 3117 | 34 | 0 | 0 | - | 31 | 18 |
org.apache.logging.log4j.core.impl | 649 | 3351 | 18 | 0 | 0 | - | 14 | 17 |
org.apache.logging.log4j.core.jmx | 377 | 1681 | 16 | 0 | 0 | - | 3 | 23 |
org.apache.logging.log4j.core.layout | 1487 | 7529 | 26 | 0 | 0 | - | 8 | 23 |
org.apache.logging.log4j.core.lookup | 584 | 2325 | 29 | 0 | 0 | - | 8 | 15 |
org.apache.logging.log4j.core.pattern | 1647 | 8059 | 78 | 0 | 0 | - | 2 | 21 |
org.apache.logging.log4j.core.selector | 167 | 653 | 7 | 0 | 0 | - | 4 | 12 |
org.apache.logging.log4j.core.web | 672 | 3520 | 12 | 0 | 0 | - | 0 | 20 |
org.apache.logging.log4j.core.util | 92 | 401 | 3 | 0 | 0 | - | 2 | 3 |
org.apache.logging.log4j.core.appender | 2084 | 8902 | 78 | 0 | 0 | - | 18 | 37 |
org.apache.logging.log4j.core.appender.rewrite | 247 | 1378 | 9 | 0 | 0 | - | 1 | 17 |
org.apache.logging.log4j.core.appender.routing | 284 | 1282 | 8 | 0 | 0 | - | 0 | 19 |
org.apache.logging.log4j.core.appender.db | 297 | 1458 | 7 | 0 | 0 | - | 3 | 10 |
org.apache.logging.log4j.core.appender.db.jdbc | 720 | 3384 | 23 | 0 | 0 | - | 0 | 22 |
org.apache.logging.log4j.core.appender.db.jpa | 344 | 1504 | 16 | 0 | 0 | - | 0 | 17 |
org.apache.logging.log4j.core.appender.db.jpa.converter | 481 | 1901 | 19 | 0 | 0 | - | 0 | 13 |
org.apache.logging.log4j.core.appender.db.nosql | 493 | 2802 | 19 | 0 | 0 | - | 2 | 16 |
org.apache.logging.log4j.core.appender.db.nosql.couchdb | 81 | 467 | 3 | 0 | 0 | - | 1 | 11 |
org.apache.logging.log4j.core.appender.db.nosql.mongo | 134 | 687 | 4 | 0 | 0 | - | 0 | 12 |
org.apache.logging.log4j.core.appender.rolling | 919 | 4114 | 33 | 0 | 0 | - | 1 | 23 |
org.apache.logging.log4j.core.appender.rolling.action | 132 | 577 | 6 | 0 | 0 | - | 2 | 7 |
org.apache.logging.log4j.core.appender.rolling.helper | 69 | 265 | 1 | 0 | 0 | - | 0 | 4 |
org.apache.logging.log4j.core.async | 622 | 2413 | 33 | 0 | 0 | - | 1 | 23 |
org.apache.logging.log4j.core.async.perftest | 504 | 2532 | 16 | 0 | 0 | - | 0 | 12 |
org.apache.logging.log4j.core.config | 1854 | 8460 | 42 | 0 | 0 | - | 22 | 35 |
org.apache.logging.log4j.core.config.plugins | 385 | 2030 | 23 | 0 | 0 | - | 23 | 18 |
org.apache.logging.log4j.core.net | 1613 | 6926 | 65 | 0 | 0 | - | 3 | 30 |
org.apache.logging.log4j.core.net.ssl | 395 | 1455 | 20 | 0 | 0 | - | 3 | 9 |
org.apache.logging.log4j.core.net.mock | 126 | 398 | 6 | 0 | 0 | - | 1 | 6 |
org.apache.logging.log4j.core.osgi.equinox | 1 | 3 | 1 | 0 | 0 | - | 0 | 2 |
org.apache.logging.log4j.core.osgi.felix | 1 | 3 | 1 | 0 | 0 | - | 0 | 2 |
org.apache.logging.log4j.test | 3 | 12 | 1 | 0 | 0 | - | 1 | 3 |
org.apache.logging.log4j.test.appender | 106 | 390 | 5 | 0 | 0 | - | 13 | 8 |
org.apache.logging.log4j.test.layout | 7 | 39 | 1 | 0 | 0 | - | 0 | 9 |
org.apache.logging.dumbster.smtp | 309 | 1278 | 6 | 0 | 0 | - | 1 | 4 |
org.apache.log4j | 770 | 2889 | 32 | 0 | 0 | - | 3 | 22 |
org.apache.log4j.config | 7 | 31 | 2 | 0 | 0 | - | 1 | 3 |
org.apache.log4j.helpers | 5 | 16 | 1 | 0 | 0 | - | 1 | 2 |
org.apache.log4j.spi | 4 | 14 | 7 | 0 | 0 | - | 2 | 4 |
org.apache.log4j.xml | 3 | 18 | 1 | 0 | 0 | - | 0 | 8 |
org.apache.log4j.util | 43 | 181 | 1 | 0 | 0 | - | 1 | 3 |
org.apache.log4j.osgi.equinox | 1 | 3 | 1 | 0 | 0 | - | 0 | 2 |
org.apache.log4j.osgi.felix | 1 | 3 | 1 | 0 | 0 | - | 0 | 2 |
pom.xml::org.apache.logging.slf4j | 132 | 618 | 4 | 0 | 0 | - | 1 | 13 |
pom.xml::org.slf4j.helpers | 87 | 390 | 6 | 0 | 0 | - | 2 | 13 |
org.slf4j.impl | 192 | 1155 | 4 | 0 | 0 | - | 1 | 7 |
pom.xml::org.apache.logging.slf4j | 181 | 860 | 6 | 0 | 0 | - | 0 | 9 |
org.apache.logging.log4j.jcl | 64 | 311 | 4 | 0 | 0 | - | 0 | 12 |
org.apache.logging.log4j.flume.appender | 1740 | 7721 | 37 | 0 | 0 | - | 0 | 43 |
org.apache.logging.log4j.flume.test | 3 | 141 | 1 | 0 | 0 | - | 0 | 5 |
org.apache.logging.log4j.taglib | 841 | 3357 | 44 | 0 | 0 | - | 0 | 18 |
org.apache.logging.log4j.jmx.gui | 216 | 997 | 8 | 0 | 0 | - | 0 | 11 |
org.apache.logging.log4j.samples.app | 226 | 773 | 7 | 0 | 0 | - | 0 | 13 |
org.apache.logging.log4j.samples.dto | 29 | 103 | 3 | 0 | 0 | - | 2 | 5 |
org.apache.logging.log4j.samples.events | 0 | 0 | 5 | 0 | 0 | - | 1 | 2 |
org.apache.logging.log4j.samples.util | 25 | 165 | 1 | 0 | 0 | - | 1 | 2 |
Code Quality | 0130 |
|
![]() | Critical Rule warning: Types too big - critical |
warnif count > 0 from t in JustMyCode.Types where
t.NbLinesOfCode > 500 ||
t.NbBCInstructions > 3000
orderby t.NbLinesOfCode descending
select new { t, t.NbLinesOfCode, t.NbBCInstructions,
t.Methods, t.Fields }
// Types where NbLinesOfCode > 500 are extremely complex
// and should be split in a smaller group of types.
// See the definition of the NbLinesOfCode metric here
// http://www.jarchitect.com/Metrics#NbLinesOfCode
// In average, a line of code is compiled to around
// 6 BC instructions. This is why the code metric
// NbBCInstructions is used here, in case the
// code metric NbLinesOfCode is un-available because
// of missing code source files.
// See the definition of the NbBCInstructions metric here
// http://www.jarchitect.com/Metrics#NbBCInstructions
1 types matched
type | # lines of code (LOC) | # ByteCode instructions | Methods | Fields | Full Name |
---|---|---|---|---|---|
AbstractLoggerTest | 514 | 3 063 | 18 methods | 13 fields | org.apache.logging.log4j.AbstractLoggerTest |
Statistics
Stat | # lines of code (LOC) | # ByteCode instructions | Methods | Fields |
---|---|---|---|---|
Sum: | 514 | 3 063 | 0 | 0 |
Average: | 514 | 3 063 | 0 | 0 |
Minimum: | 514 | 3 063 | 0 | 0 |
Maximum: | 514 | 3 063 | 0 | 0 |
Standard deviation: | 0 | 0 | 0 | 0 |
Variance: | 0 | 0 | 0 | 0 |
![]() | Critical Rule warning: Methods too complex - critical |
warnif count > 0 from m in JustMyCode.Methods where
m.BCCyclomaticComplexity > 40 &&
m.BCNestingDepth > 5
orderby m.BCCyclomaticComplexity descending,
m.BCNestingDepth descending
select new { m, m.BCCyclomaticComplexity, m.BCNestingDepth }
// Methods with BCCyclomaticComplexity > 40 and BCNestingDepth > 4
// are really too complex and should be split
// in smaller methods, or even types.
// See the definition of the BCCyclomaticComplexity metric here
// http://www.jarchitect.com/Metrics#ILCC
// See the definition of the BCNestingDepth metric here
// http://www.jarchitect.com/Metrics#BCNestingDepth
2 methods matched
methods | ByteCode Cyclomatic Complexity (BCCC) | ByteCode Nesting Depth | Full Name |
---|---|---|---|
createPluginObject(PluginType,Node,LogEvent)<T> | 52 | 11 | org.apache.logging.log4j.core.config.BaseConfiguration .createPluginObject(PluginType,Node,LogEvent)<T> |
createNoSQLProvider(String,String,String,String,String,String,String ,String,String,String) | 41 | 16 | org.apache.logging.log4j.core.appender.db.nosql.mongo.MongoDBProvider .createNoSQLProvider(String,String,String,String,String,String,String ,String,String,String) |
Statistics
Stat | ByteCode Cyclomatic Complexity (BCCC) | ByteCode Nesting Depth |
---|---|---|
Sum: | 93 | 27 |
Average: | 46.5 | 13.5 |
Minimum: | 41 | 11 |
Maximum: | 52 | 16 |
Standard deviation: | 5.5 | 2.5 |
Variance: | 30.25 | 6.25 |
![]() | Critical Rule warning: Methods with too many parameters - critical |
warnif count > 0 from m in JustMyCode.Methods where
m.NbParameters > 8
orderby m.NbParameters descending
select new { m, m.NbParameters }
// Methods with more than 8 parameters might be painful to call
// and might degrade performance. You should prefer using
// additional properties/fields to the declaring type to
// handle numerous states. Another alternative is to provide
// a class or structure dedicated to handle arguments passing
// (for example see the class System.Diagnostics.ProcessStartInfo
// and the method System.Diagnostics.Process.Start(ProcessStartInfo))
// See the definition of the NbParameters metric here
// http://www.jarchitect.com/Metrics#NbParameters
43 methods matched
methods | # Parameters | Full Name |
---|---|---|
createAppender(String,String,String,String,String,String,String,String ,String,String,String,String,String,String,String,String,String,String ,String,String,String,String,String,Filter,Configuration,String,String ,LoggerFields[],String) | 29 | org.apache.logging.log4j.core.appender.SyslogAppender.createAppender (String,String,String,String,String,String,String,String,String,String ,String,String,String,String,String,String,String,String,String,String ,String,String,String,Filter,Configuration,String,String ,LoggerFields[],String) |
createAppender(String,String,SSLConfiguration,String,String,String ,String,String,String,String,String,String,String,String,String,String ,String,String,String,String,String,String,String,Filter,Configuration ,String,String,LoggerFields[],String) | 29 | org.apache.logging.log4j.core.appender.TLSSyslogAppender .createAppender(String,String,SSLConfiguration,String,String,String ,String,String,String,String,String,String,String,String,String,String ,String,String,String,String,String,String,String,Filter,Configuration ,String,String,LoggerFields[],String) |
createAppender(Agent[],Property[],String,String,String,String,String ,String,String,String,String,String,String,String,String,String,String ,String,String,FlumeEventFactory,Layout,Filter) | 22 | org.apache.logging.log4j.flume.appender.FlumeAppender.createAppender (Agent[],Property[],String,String,String,String,String,String,String ,String,String,String,String,String,String,String,String,String,String ,FlumeEventFactory,Layout,Filter) |
RFC5424Layout(Configuration,Facility,String,int,boolean,boolean,String ,String,String,String,String,String,String,String,String,Charset ,String,boolean,LoggerFields[]) | 19 | org.apache.logging.log4j.core.layout.RFC5424Layout.RFC5424Layout (Configuration,Facility,String,int,boolean,boolean,String,String ,String,String,String,String,String,String,String,Charset,String ,boolean,LoggerFields[]) |
createLayout(String,String,String,String,String,String,String,String ,String,String,String,String,String,String,String,String ,LoggerFields[],Configuration) | 18 | org.apache.logging.log4j.core.layout.RFC5424Layout.createLayout(String ,String,String,String,String,String,String,String,String,String,String ,String,String,String,String,String,LoggerFields[],Configuration) |
createAppender(String,String,String,String,String,String,String,String ,String,String,String,String,String,String,Layout,Filter,String) | 17 | org.apache.logging.log4j.core.appender.SMTPAppender.createAppender (String,String,String,String,String,String,String,String,String,String ,String,String,String,String,Layout,Filter,String) |
createAppender(String,String,String,String,String,String ,TriggeringPolicy,RolloverStrategy,Layout,Filter,String,String,String ,Configuration) | 14 | org.apache.logging.log4j.core.appender.RollingFileAppender .createAppender(String,String,String,String,String,String ,TriggeringPolicy,RolloverStrategy,Layout,Filter,String,String,String ,Configuration) |
getSMTPManager(String,String,String,String,String,String,String,String ,int,String,String,boolean,String,int) | 14 | org.apache.logging.log4j.core.net.SMTPManager.getSMTPManager(String ,String,String,String,String,String,String,String,int,String,String ,boolean,String,int) |
createAppender(String,String,String,String,String,String,String,String ,Layout,Filter,String,String,Configuration) | 13 | org.apache.logging.log4j.core.appender.FileAppender.createAppender (String,String,String,String,String,String,String,String,Layout,Filter ,String,String,Configuration) |
createAppender(String,String,String,String,String,String,String,String ,String,String,Layout,Filter,String) | 13 | org.apache.logging.log4j.core.appender.JMSQueueAppender.createAppender (String,String,String,String,String,String,String,String,String,String ,Layout,Filter,String) |
createAppender(String,String,String,String,String,String,String,String ,String,String,Layout,Filter,String) | 13 | org.apache.logging.log4j.core.appender.JMSTopicAppender.createAppender (String,String,String,String,String,String,String,String,String,String ,Layout,Filter,String) |
createAppender(String,String,String,String,String,TriggeringPolicy ,RolloverStrategy,Layout,Filter,String,String,String,Configuration) | 13 | org.apache.logging.log4j.core.appender.RollingRandomAccessFileAppender .createAppender(String,String,String,String,String,TriggeringPolicy ,RolloverStrategy,Layout,Filter,String,String,String,Configuration) |
SMTPManager$FactoryData(String,String,String,String,String,String ,String,String,int,String,String,boolean,int) | 13 | org.apache.logging.log4j.core.net.SMTPManager$FactoryData .SMTPManager$FactoryData(String,String,String,String,String,String ,String,String,int,String,String,boolean,int) |
getContext(String,ClassLoader,Object,boolean,URI,String) | 12 | org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext (String,ClassLoader,Object,boolean,URI,String) |
Log4jLogEvent(String,Marker,String,Level,Message,ThrowableProxy,Map ,ThreadContext$ContextStack,String,StackTraceElement,long ,Log4jLogEvent$1) | 12 | org.apache.logging.log4j.core.impl.Log4jLogEvent.Log4jLogEvent(String ,Marker,String,Level,Message,ThrowableProxy,Map ,ThreadContext$ContextStack,String,StackTraceElement,long ,Log4jLogEvent$1) |
createAppender(String,String,String,String,String,String,String,String ,Layout,Filter,String,Configuration) | 12 | org.apache.logging.log4j.core.appender.SocketAppender.createAppender (String,String,String,String,String,String,String,String,Layout,Filter ,String,Configuration) |
RollingRandomAccessFileManager(RandomAccessFile,String,String ,OutputStream,boolean,boolean,long,long,TriggeringPolicy ,RolloverStrategy,String,Layout) | 12 | org.apache.logging.log4j.core.appender.rolling .RollingRandomAccessFileManager.RollingRandomAccessFileManager (RandomAccessFile,String,String,OutputStream,boolean,boolean,long,long ,TriggeringPolicy,RolloverStrategy,String,Layout) |
setValues(AsyncLogger,String,Marker,String,Level,Message,Throwable,Map ,ThreadContext$ContextStack,String,StackTraceElement,long) | 12 | org.apache.logging.log4j.core.async.RingBufferLogEvent.setValues (AsyncLogger,String,Marker,String,Level,Message,Throwable,Map ,ThreadContext$ContextStack,String,StackTraceElement,long) |
setValues(AsyncLogger,String,Marker,String,Level,Message,Throwable,Map ,ThreadContext$ContextStack,String,StackTraceElement,long) | 12 | org.apache.logging.log4j.core.async.RingBufferLogEventTranslator .setValues(AsyncLogger,String,Marker,String,Level,Message,Throwable ,Map,ThreadContext$ContextStack,String,StackTraceElement,long) |
FlumeAppender(String,Filter,Layout,boolean,String,String,String,String ,String,boolean,FlumeEventFactory,AbstractFlumeManager) | 12 | org.apache.logging.log4j.flume.appender.FlumeAppender.FlumeAppender (String,Filter,Layout,boolean,String,String,String,String,String ,boolean,FlumeEventFactory,AbstractFlumeManager) |
FlumePersistentManager(String,String,Agent[],int,int,int,int,int ,Database,Environment,SecretKey,int) | 12 | org.apache.logging.log4j.flume.appender.FlumePersistentManager .FlumePersistentManager(String,String,Agent[],int,int,int,int,int ,Database,Environment,SecretKey,int) |
Log4jLogEvent(String,Marker,String,Level,Message,Throwable,Map ,ThreadContext$ContextStack,String,StackTraceElement,long) | 11 | org.apache.logging.log4j.core.impl.Log4jLogEvent.Log4jLogEvent(String ,Marker,String,Level,Message,Throwable,Map,ThreadContext$ContextStack ,String,StackTraceElement,long) |
createEvent(String,Marker,String,Level,Message,ThrowableProxy,Map ,ThreadContext$ContextStack,String,StackTraceElement,long) | 11 | org.apache.logging.log4j.core.impl.Log4jLogEvent.createEvent(String ,Marker,String,Level,Message,ThrowableProxy,Map ,ThreadContext$ContextStack,String,StackTraceElement,long) |
Log4jLogEvent(String,Marker,String,Level,Message,ThrowableProxy,Map ,ThreadContext$ContextStack,String,StackTraceElement,long) | 11 | org.apache.logging.log4j.core.impl.Log4jLogEvent.Log4jLogEvent(String ,Marker,String,Level,Message,ThrowableProxy,Map ,ThreadContext$ContextStack,String,StackTraceElement,long) |
createAppender(String,String,String,String,String,String,Layout,Filter ,String,String,Configuration) | 11 | org.apache.logging.log4j.core.appender.RandomAccessFileAppender .createAppender(String,String,String,String,String,String,Layout ,Filter,String,String,Configuration) |
SimpleLogger(String,Level,boolean,boolean,boolean,boolean,String ,MessageFactory,PropertiesUtil,PrintStream) | 10 | org.apache.logging.log4j.simple.SimpleLogger.SimpleLogger(String,Level ,boolean,boolean,boolean,boolean,String,MessageFactory,PropertiesUtil ,PrintStream) |
createNoSQLProvider(String,String,String,String,String,String,String ,String,String,String) | 10 | org.apache.logging.log4j.core.appender.db.nosql.mongo.MongoDBProvider .createNoSQLProvider(String,String,String,String,String,String,String ,String,String,String) |
RollingFileManager(String,String,OutputStream,boolean,long,long ,TriggeringPolicy,RolloverStrategy,String,Layout) | 10 | org.apache.logging.log4j.core.appender.rolling.RollingFileManager .RollingFileManager(String,String,OutputStream,boolean,long,long ,TriggeringPolicy,RolloverStrategy,String,Layout) |
createManager(String,OutputStream,Socket,SSLConfiguration,InetAddress ,String,int,int,boolean,Layout) | 10 | org.apache.logging.log4j.core.net .TLSSocketManager$TLSSocketManagerFactory.createManager(String ,OutputStream,Socket,SSLConfiguration,InetAddress,String,int,int ,boolean,Layout) |
TLSSocketManager(String,OutputStream,Socket,SSLConfiguration ,InetAddress,String,int,int,boolean,Layout) | 10 | org.apache.logging.log4j.core.net.TLSSocketManager.TLSSocketManager (String,OutputStream,Socket,SSLConfiguration,InetAddress,String,int ,int,boolean,Layout) |
FlumePersistentManager$FactoryData(String,Agent[],int,int,int,int,int ,int,String,Property[]) | 10 | org.apache.logging.log4j.flume.appender .FlumePersistentManager$FactoryData.FlumePersistentManager$FactoryData (String,Agent[],int,int,int,int,int,int,String,Property[]) |
getManager(String,Agent[],Property[],int,int,int,int,int,int,String) | 10 | org.apache.logging.log4j.flume.appender.FlumePersistentManager .getManager(String,Agent[],Property[],int,int,int,int,int,int,String) |
append(CharSequence,int,int) | 9 | org.apache.logging.log4j.spi.LoggerStream.append(CharSequence,int,int) |
finalizeConverter(char,String,int,StringBuilder,FormattingInfo,Map ,List,List,boolean) | 9 | org.apache.logging.log4j.core.pattern.PatternParser.finalizeConverter (char,String,int,StringBuilder,FormattingInfo,Map,List,List,boolean) |
AsyncAppender(String,Filter,AppenderRef[],String,int,boolean,boolean ,Configuration,boolean) | 9 | org.apache.logging.log4j.core.appender.AsyncAppender.AsyncAppender (String,Filter,AppenderRef[],String,int,boolean,boolean,Configuration ,boolean) |
createAppender(AppenderRef[],String,String,String,String,String,Filter ,Configuration,String) | 9 | org.apache.logging.log4j.core.appender.AsyncAppender.createAppender (AppenderRef[],String,String,String,String,String,Filter,Configuration ,String) |
RollingFileAppender(String,Layout,Filter,RollingFileManager,String ,String,boolean,boolean,Advertiser) | 9 | org.apache.logging.log4j.core.appender.RollingFileAppender .RollingFileAppender(String,Layout,Filter,RollingFileManager,String ,String,boolean,boolean,Advertiser) |
RollingRandomAccessFileAppender(String,Layout,Filter ,RollingFileManager,String,String,boolean,boolean,Advertiser) | 9 | org.apache.logging.log4j.core.appender.RollingRandomAccessFileAppender .RollingRandomAccessFileAppender(String,Layout,Filter ,RollingFileManager,String,String,boolean,boolean,Advertiser) |
JMSQueueManager$FactoryData(String,String,String,String,String,String ,String,String,String) | 9 | org.apache.logging.log4j.core.net.JMSQueueManager$FactoryData .JMSQueueManager$FactoryData(String,String,String,String,String,String ,String,String,String) |
getJMSQueueManager(String,String,String,String,String,String,String ,String,String) | 9 | org.apache.logging.log4j.core.net.JMSQueueManager.getJMSQueueManager (String,String,String,String,String,String,String,String,String) |
JMSTopicManager$FactoryData(String,String,String,String,String,String ,String,String,String) | 9 | org.apache.logging.log4j.core.net.JMSTopicManager$FactoryData .JMSTopicManager$FactoryData(String,String,String,String,String,String ,String,String,String) |
getJMSTopicManager(String,String,String,String,String,String,String ,String,String) | 9 | org.apache.logging.log4j.core.net.JMSTopicManager.getJMSTopicManager (String,String,String,String,String,String,String,String,String) |
TCPSocketManager(String,OutputStream,Socket,InetAddress,String,int,int ,boolean,Layout) | 9 | org.apache.logging.log4j.core.net.TCPSocketManager.TCPSocketManager (String,OutputStream,Socket,InetAddress,String,int,int,boolean,Layout) |
Statistics
Stat | # Parameters |
---|---|
Sum: | 536 |
Average: | 12.47 |
Minimum: | 9 |
Maximum: | 29 |
Standard deviation: | 4.63 |
Variance: | 21.46 |
![]() | Rule warning: Quick summary of methods to refactor |
warnif count > 0 from m in JustMyCode.Methods where
// Code Metrics' definitions
m.NbLinesOfCode > 30 || // http://www.jarchitect.com/Metrics#NbLinesOfCode
m.NbBCInstructions > 200 || // http://www.jarchitect.com/Metrics#NbBCInstructions
m.CyclomaticComplexity > 20 || // http://www.jarchitect.com/Metrics#CC
m.BCCyclomaticComplexity > 50 || // http://www.jarchitect.com/Metrics#ILCC
m.BCNestingDepth > 5 || // http://www.jarchitect.com/Metrics#BCNestingDepth
m.NbParameters > 5 || // http://www.jarchitect.com/Metrics#NbParameters
m.NbVariables > 8 || // http://www.jarchitect.com/Metrics#NbVariables
m.NbOverloads > 6 // http://www.jarchitect.com/Metrics#NbOverloads
select new { m, m.NbLinesOfCode, m.NbBCInstructions, m.CyclomaticComplexity,
m.BCCyclomaticComplexity, m.BCNestingDepth,
m.NbParameters, m.NbVariables, m.NbOverloads }
659 methods matched
methods | # lines of code (LOC) | # ByteCode instructions | Cyclomatic Complexity (CC) | ByteCode Cyclomatic Complexity (BCCC) | ByteCode Nesting Depth | # Parameters | # Variables | # Overloads | Full Name |
---|---|---|---|---|---|---|---|---|---|
getContext() | 1 | 8 | N/A | 1 | 0 | 0 | 0 | 9 | org.apache.logging.log4j.LogManager.getContext() |
getContext(boolean) | 1 | 10 | 1 | 1 | 0 | 1 | 0 | 9 | org.apache.logging.log4j.LogManager.getContext(boolean) |
getContext(ClassLoader,boolean) | 1 | 8 | 1 | 1 | 0 | 2 | 0 | 9 | org.apache.logging.log4j.LogManager.getContext(ClassLoader,boolean) |
getContext(ClassLoader,boolean,Object) | 1 | 8 | 1 | 1 | 0 | 3 | 0 | 9 | org.apache.logging.log4j.LogManager.getContext(ClassLoader,boolean ,Object) |
getContext(ClassLoader,boolean,URI) | 1 | 10 | 1 | 1 | 0 | 3 | 0 | 9 | org.apache.logging.log4j.LogManager.getContext(ClassLoader,boolean,URI ) |
getContext(ClassLoader,boolean,Object,URI) | 1 | 10 | 1 | 1 | 0 | 4 | 0 | 9 | org.apache.logging.log4j.LogManager.getContext(ClassLoader,boolean ,Object,URI) |
getContext(ClassLoader,boolean,Object,URI,String) | 1 | 10 | 1 | 1 | 0 | 5 | 0 | 9 | org.apache.logging.log4j.LogManager.getContext(ClassLoader,boolean ,Object,URI,String) |
getContext(String,boolean) | 1 | 7 | 1 | 1 | 0 | 2 | 0 | 9 | org.apache.logging.log4j.LogManager.getContext(String,boolean) |
getContext(String,ClassLoader,boolean) | 1 | 7 | 1 | 1 | 0 | 3 | 0 | 9 | org.apache.logging.log4j.LogManager.getContext(String,ClassLoader ,boolean) |
getLogger() | 1 | 4 | N/A | 1 | 0 | 0 | 0 | 9 | org.apache.logging.log4j.LogManager.getLogger() |
getLogger(Class) | 1 | 9 | 2 | 2 | 0 | 1 | 0 | 9 | org.apache.logging.log4j.LogManager.getLogger(Class) |
getLogger(Class,MessageFactory) | 1 | 10 | 2 | 2 | 0 | 2 | 0 | 9 | org.apache.logging.log4j.LogManager.getLogger(Class,MessageFactory) |
getLogger(MessageFactory) | 1 | 5 | 1 | 1 | 0 | 1 | 0 | 9 | org.apache.logging.log4j.LogManager.getLogger(MessageFactory) |
getLogger(Object) | 1 | 10 | 2 | 2 | 0 | 1 | 0 | 9 | org.apache.logging.log4j.LogManager.getLogger(Object) |
getLogger(Object,MessageFactory) | 1 | 11 | 2 | 2 | 0 | 2 | 0 | 9 | org.apache.logging.log4j.LogManager.getLogger(Object,MessageFactory) |
getLogger(String) | 2 | 17 | 2 | 2 | 0 | 1 | 1 | 9 | org.apache.logging.log4j.LogManager.getLogger(String) |
getLogger(String,MessageFactory) | 2 | 18 | 2 | 2 | 0 | 2 | 1 | 9 | org.apache.logging.log4j.LogManager.getLogger(String,MessageFactory) |
getLogger(String,String) | 1 | 9 | 1 | 1 | 0 | 2 | 0 | 9 | org.apache.logging.log4j.LogManager.getLogger(String,String) |
LogManager() | 0 | 234 | 1 | 15 | 0 | 0 | 17 | 2 | org.apache.logging.log4j.LogManager.LogManager() |
debug(Marker,Message) | 0 | 0 | 1 | 1 | 0 | 2 | 0 | 14 | org.apache.logging.log4j.Logger.debug(Marker,Message) |
debug(Marker,Message,Throwable) | 0 | 0 | 1 | 1 | 0 | 3 | 0 | 14 | org.apache.logging.log4j.Logger.debug(Marker,Message,Throwable) |
debug(Marker,Object) | 0 | 0 | 1 | 1 | 0 | 2 | 0 | 14 | org.apache.logging.log4j.Logger.debug(Marker,Object) |
debug(Marker,Object,Throwable) | 0 | 0 | 1 | 1 | 0 | 3 | 0 | 14 | org.apache.logging.log4j.Logger.debug(Marker,Object,Throwable) |
debug(Marker,String) | 0 | 0 | 1 | 1 | 0 | 2 | 0 | 14 | org.apache.logging.log4j.Logger.debug(Marker,String) |
debug(Marker,String,Object[]) | 0 | 0 | 1 | 1 | 0 | 3 | 0 | 14 | org.apache.logging.log4j.Logger.debug(Marker,String,Object[]) |
debug(Marker,String,Throwable) | 0 | 0 | 1 | 1 | 0 | 3 | 0 | 14 | org.apache.logging.log4j.Logger.debug(Marker,String,Throwable) |
debug(Message) | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 14 | org.apache.logging.log4j.Logger.debug(Message) |
debug(Message,Throwable) | 0 | 0 | 1 | 1 | 0 | 2 | 0 | 14 | org.apache.logging.log4j.Logger.debug(Message,Throwable) |
debug(Object) | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 14 | org.apache.logging.log4j.Logger.debug(Object) |
debug(Object,Throwable) | 0 | 0 | 1 | 1 | 0 | 2 | 0 | 14 | org.apache.logging.log4j.Logger.debug(Object,Throwable) |
debug(String) | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 14 | org.apache.logging.log4j.Logger.debug(String) |
debug(String,Object[]) | 0 | 0 | 1 | 1 | 0 | 2 | 0 | 14 | org.apache.logging.log4j.Logger.debug(String,Object[]) |
debug(String,Throwable) | 0 | 0 | 1 | 1 | 0 | 2 | 0 | 14 | org.apache.logging.log4j.Logger.debug(String,Throwable) |
error(Marker,Message) | 0 | 0 | 1 | 1 | 0 | 2 | 0 | 14 | org.apache.logging.log4j.Logger.error(Marker,Message) |
error(Marker,Message,Throwable) | 0 | 0 | 1 | 1 | 0 | 3 | 0 | 14 | org.apache.logging.log4j.Logger.error(Marker,Message,Throwable) |
error(Marker,Object) | 0 | 0 | 1 | 1 | 0 | 2 | 0 | 14 | org.apache.logging.log4j.Logger.error(Marker,Object) |
error(Marker,Object,Throwable) | 0 | 0 | 1 | 1 | 0 | 3 | 0 | 14 | org.apache.logging.log4j.Logger.error(Marker,Object,Throwable) |
error(Marker,String) | 0 | 0 | 1 | 1 | 0 | 2 | 0 | 14 | org.apache.logging.log4j.Logger.error(Marker,String) |
error(Marker,String,Object[]) | 0 | 0 | 1 | 1 | 0 | 3 | 0 | 14 | org.apache.logging.log4j.Logger.error(Marker,String,Object[]) |
error(Marker,String,Throwable) | 0 | 0 | 1 | 1 | 0 | 3 | 0 | 14 | org.apache.logging.log4j.Logger.error(Marker,String,Throwable) |
error(Message) | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 14 | org.apache.logging.log4j.Logger.error(Message) |
error(Message,Throwable) | 0 | 0 | 1 | 1 | 0 | 2 | 0 | 14 | org.apache.logging.log4j.Logger.error(Message,Throwable) |
error(Object) | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 14 | org.apache.logging.log4j.Logger.error(Object) |
error(Object,Throwable) | 0 | 0 | 1 | 1 | 0 | 2 | 0 | 14 | org.apache.logging.log4j.Logger.error(Object,Throwable) |
error(String) | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 14 | org.apache.logging.log4j.Logger.error(String) |
error(String,Object[]) | 0 | 0 | 1 | 1 | 0 | 2 | 0 | 14 | org.apache.logging.log4j.Logger.error(String,Object[]) |
error(String,Throwable) | 0 | 0 | 1 | 1 | 0 | 2 | 0 | 14 | org.apache.logging.log4j.Logger.error(String,Throwable) |
fatal(Marker,Message) | 0 | 0 | 1 | 1 | 0 | 2 | 0 | 14 | org.apache.logging.log4j.Logger.fatal(Marker,Message) |
fatal(Marker,Message,Throwable) | 0 | 0 | 1 | 1 | 0 | 3 | 0 | 14 | org.apache.logging.log4j.Logger.fatal(Marker,Message,Throwable) |
fatal(Marker,Object) | 0 | 0 | 1 | 1 | 0 | 2 | 0 | 14 | org.apache.logging.log4j.Logger.fatal(Marker,Object) |
fatal(Marker,Object,Throwable) | 0 | 0 | 1 | 1 | 0 | 3 | 0 | 14 | org.apache.logging.log4j.Logger.fatal(Marker,Object,Throwable) |
fatal(Marker,String) | 0 | 0 | 1 | 1 | 0 | 2 | 0 | 14 | org.apache.logging.log4j.Logger.fatal(Marker,String) |
fatal(Marker,String,Object[]) | 0 | 0 | 1 | 1 | 0 | 3 | 0 | 14 | org.apache.logging.log4j.Logger.fatal(Marker,String,Object[]) |
fatal(Marker,String,Throwable) | 0 | 0 | 1 | 1 | 0 | 3 | 0 | 14 | org.apache.logging.log4j.Logger.fatal(Marker,String,Throwable) |
fatal(Message) | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 14 | org.apache.logging.log4j.Logger.fatal(Message) |
fatal(Message,Throwable) | 0 | 0 | 1 | 1 | 0 | 2 | 0 | 14 | org.apache.logging.log4j.Logger.fatal(Message,Throwable) |
fatal(Object) | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 14 | org.apache.logging.log4j.Logger.fatal(Object) |
fatal(Object,Throwable) | 0 | 0 | 1 | 1 | 0 | 2 | 0 | 14 | org.apache.logging.log4j.Logger.fatal(Object,Throwable) |
fatal(String) | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 14 | org.apache.logging.log4j.Logger.fatal(String) |
fatal(String,Object[]) | 0 | 0 | 1 | 1 | 0 | 2 | 0 | 14 | org.apache.logging.log4j.Logger.fatal(String,Object[]) |
fatal(String,Throwable) | 0 | 0 | 1 | 1 | 0 | 2 | 0 | 14 | org.apache.logging.log4j.Logger.fatal(String,Throwable) |
info(Marker,Message) | 0 | 0 | 1 | 1 | 0 | 2 | 0 | 14 | org.apache.logging.log4j.Logger.info(Marker,Message) |
info(Marker,Message,Throwable) | 0 | 0 | 1 | 1 | 0 | 3 | 0 | 14 | org.apache.logging.log4j.Logger.info(Marker,Message,Throwable) |
info(Marker,Object) | 0 | 0 | 1 | 1 | 0 | 2 | 0 | 14 | org.apache.logging.log4j.Logger.info(Marker,Object) |
info(Marker,Object,Throwable) | 0 | 0 | 1 | 1 | 0 | 3 | 0 | 14 | org.apache.logging.log4j.Logger.info(Marker,Object,Throwable) |
info(Marker,String) | 0 | 0 | 1 | 1 | 0 | 2 | 0 | 14 | org.apache.logging.log4j.Logger.info(Marker,String) |
info(Marker,String,Object[]) | 0 | 0 | 1 | 1 | 0 | 3 | 0 | 14 | org.apache.logging.log4j.Logger.info(Marker,String,Object[]) |
info(Marker,String,Throwable) | 0 | 0 | 1 | 1 | 0 | 3 | 0 | 14 | org.apache.logging.log4j.Logger.info(Marker,String,Throwable) |
info(Message) | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 14 | org.apache.logging.log4j.Logger.info(Message) |
info(Message,Throwable) | 0 | 0 | 1 | 1 | 0 | 2 | 0 | 14 | org.apache.logging.log4j.Logger.info(Message,Throwable) |
info(Object) | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 14 | org.apache.logging.log4j.Logger.info(Object) |
info(Object,Throwable) | 0 | 0 | 1 | 1 | 0 | 2 | 0 | 14 | org.apache.logging.log4j.Logger.info(Object,Throwable) |
info(String) | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 14 | org.apache.logging.log4j.Logger.info(String) |
info(String,Object[]) | 0 | 0 | 1 | 1 | 0 | 2 | 0 | 14 | org.apache.logging.log4j.Logger.info(String,Object[]) |
info(String,Throwable) | 0 | 0 | 1 | 1 | 0 | 2 | 0 | 14 | org.apache.logging.log4j.Logger.info(String,Throwable) |
log(Level,Marker,Message) | 0 | 0 | 1 | 1 | 0 | 3 | 0 | 14 | org.apache.logging.log4j.Logger.log(Level,Marker,Message) |
log(Level,Marker,Message,Throwable) | 0 | 0 | 1 | 1 | 0 | 4 | 0 | 14 | org.apache.logging.log4j.Logger.log(Level,Marker,Message,Throwable) |
log(Level,Marker,Object) | 0 | 0 | 1 | 1 | 0 | 3 | 0 | 14 | org.apache.logging.log4j.Logger.log(Level,Marker,Object) |
log(Level,Marker,Object,Throwable) | 0 | 0 | 1 | 1 | 0 | 4 | 0 | 14 | org.apache.logging.log4j.Logger.log(Level,Marker,Object,Throwable) |
log(Level,Marker,String) | 0 | 0 | 1 | 1 | 0 | 3 | 0 | 14 | org.apache.logging.log4j.Logger.log(Level,Marker,String) |
log(Level,Marker,String,Object[]) | 0 | 0 | 1 | 1 | 0 | 4 | 0 | 14 | org.apache.logging.log4j.Logger.log(Level,Marker,String,Object[]) |
log(Level,Marker,String,Throwable) | 0 | 0 | 1 | 1 | 0 | 4 | 0 | 14 | org.apache.logging.log4j.Logger.log(Level,Marker,String,Throwable) |
log(Level,Message) | 0 | 0 | 1 | 1 | 0 | 2 | 0 | 14 | org.apache.logging.log4j.Logger.log(Level,Message) |
log(Level,Message,Throwable) | 0 | 0 | 1 | 1 | 0 | 3 | 0 | 14 | org.apache.logging.log4j.Logger.log(Level,Message,Throwable) |
log(Level,Object) | 0 | 0 | 1 | 1 | 0 | 2 | 0 | 14 | org.apache.logging.log4j.Logger.log(Level,Object) |
log(Level,Object,Throwable) | 0 | 0 | 1 | 1 | 0 | 3 | 0 | 14 | org.apache.logging.log4j.Logger.log(Level,Object,Throwable) |
log(Level,String) | 0 | 0 | 1 | 1 | 0 | 2 | 0 | 14 | org.apache.logging.log4j.Logger.log(Level,String) |
log(Level,String,Object[]) | 0 | 0 | 1 | 1 | 0 | 3 | 0 | 14 | org.apache.logging.log4j.Logger.log(Level,String,Object[]) |
log(Level,String,Throwable) | 0 | 0 | 1 | 1 | 0 | 3 | 0 | 14 | org.apache.logging.log4j.Logger.log(Level,String,Throwable) |
trace(Marker,Message) | 0 | 0 | 1 | 1 | 0 | 2 | 0 | 14 | org.apache.logging.log4j.Logger.trace(Marker,Message) |
trace(Marker,Message,Throwable) | 0 | 0 | 1 | 1 | 0 | 3 | 0 | 14 | org.apache.logging.log4j.Logger.trace(Marker,Message,Throwable) |
trace(Marker,Object) | 0 | 0 | 1 | 1 | 0 | 2 | 0 | 14 | org.apache.logging.log4j.Logger.trace(Marker,Object) |
trace(Marker,Object,Throwable) | 0 | 0 | 1 | 1 | 0 | 3 | 0 | 14 | org.apache.logging.log4j.Logger.trace(Marker,Object,Throwable) |
trace(Marker,String) | 0 | 0 | 1 | 1 | 0 | 2 | 0 | 14 | org.apache.logging.log4j.Logger.trace(Marker,String) |
trace(Marker,String,Object[]) | 0 | 0 | 1 | 1 | 0 | 3 | 0 | 14 | org.apache.logging.log4j.Logger.trace(Marker,String,Object[]) |
trace(Marker,String,Throwable) | 0 | 0 | 1 | 1 | 0 | 3 | 0 | 14 | org.apache.logging.log4j.Logger.trace(Marker,String,Throwable) |
trace(Message) | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 14 | org.apache.logging.log4j.Logger.trace(Message) |
trace(Message,Throwable) | 0 | 0 | 1 | 1 | 0 | 2 | 0 | 14 | org.apache.logging.log4j.Logger.trace(Message,Throwable) |
trace(Object) | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 14 | org.apache.logging.log4j.Logger.trace(Object) |
trace(Object,Throwable) | 0 | 0 | 1 | 1 | 0 | 2 | 0 | 14 | org.apache.logging.log4j.Logger.trace(Object,Throwable) |
Statistics
Stat | # lines of code (LOC) | # ByteCode instructions | Cyclomatic Complexity (CC) | ByteCode Cyclomatic Complexity (BCCC) | ByteCode Nesting Depth | # Parameters | # Variables | # Overloads |
---|---|---|---|---|---|---|---|---|
Sum: | 8 450 | 42 659 | 2 232 | 2 761 | 416 | 2 048 | 2 367 | 5 006 |
Average: | 12.82 | 64.73 | 4.39 | 4.19 | 0.63 | 3.11 | 3.59 | 7.6 |
Minimum: | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 1 |
Maximum: | 156 | 801 | 56 | 52 | 21 | 29 | 68 | 21 |
Standard deviation: | 19.73 | 98.41 | 6.58 | 6.23 | 2.09 | 3.36 | 6.42 | 6.36 |
Variance: | 389.28 | 9 684 | 43.34 | 38.86 | 4.37 | 11.28 | 41.16 | 40.42 |
![]() | Rule warning: Methods too big |
warnif count > 0 from m in JustMyCode.Methods where
m.NbLinesOfCode > 30 ||
m.NbBCInstructions > 200
orderby m.NbLinesOfCode descending,
m.NbBCInstructions descending
select new { m, m.NbLinesOfCode, m.NbBCInstructions }
// Methods where NbLinesOfCode > 30 or NbBCInstructions > 200
// are extremely complex and should be split in smaller methods.
// See the definition of the NbLinesOfCode metric here
// http://www.jarchitect.com/Metrics#NbLinesOfCode
109 methods matched
methods | # lines of code (LOC) | # ByteCode instructions | Full Name |
---|---|---|---|
createPluginObject(PluginType,Node,LogEvent)<T> | 156 | 801 | org.apache.logging.log4j.core.config.BaseConfiguration .createPluginObject(PluginType,Node,LogEvent)<T> |
toSerializable(LogEvent) | 135 | 606 | org.apache.logging.log4j.core.layout.JSONLayout.toSerializable (LogEvent) |
toSerializable(LogEvent) | 135 | 593 | org.apache.logging.log4j.core.layout.XMLLayout.toSerializable(LogEvent ) |
testWriteInternal03() | 116 | 774 | org.apache.logging.log4j.core.appender.db.nosql .NoSQLDatabaseManagerTest.testWriteInternal03() |
XMLConfiguration(ConfigurationFactory$ConfigurationSource) | 104 | 518 | org.apache.logging.log4j.core.config.XMLConfiguration.XMLConfiguration (ConfigurationFactory$ConfigurationSource) |
recursiveDeepToString(Object,StringBuilder,Set) | 104 | 389 | org.apache.logging.log4j.message.ParameterizedMessage .recursiveDeepToString(Object,StringBuilder,Set) |
run() | 95 | 345 | org.apache.logging.log4j.flume.appender .FlumePersistentManager$WriterThread.run() |
testWriteInternal02() | 92 | 581 | org.apache.logging.log4j.core.appender.db.nosql .NoSQLDatabaseManagerTest.testWriteInternal02() |
parse(String,List,List,boolean) | 86 | 312 | org.apache.logging.log4j.core.pattern.PatternParser.parse(String,List ,List,boolean) |
JSONConfiguration(ConfigurationFactory$ConfigurationSource) | 78 | 390 | org.apache.logging.log4j.core.config.JSONConfiguration .JSONConfiguration(ConfigurationFactory$ConfigurationSource) |
sendBatch(DatabaseEntry,DatabaseEntry) | 76 | 279 | org.apache.logging.log4j.flume.appender .FlumePersistentManager$WriterThread.sendBatch(DatabaseEntry ,DatabaseEntry) |
createNoSQLProvider(String,String,String,String,String,String,String ,String,String,String) | 74 | 443 | org.apache.logging.log4j.core.appender.db.nosql.mongo.MongoDBProvider .createNoSQLProvider(String,String,String,String,String,String,String ,String,String,String) |
substitute(LogEvent,StringBuilder,int,int,List) | 66 | 251 | org.apache.logging.log4j.core.lookup.StrSubstitutor.substitute (LogEvent,StringBuilder,int,int,List) |
getNextTime(long,int,boolean) | 64 | 260 | org.apache.logging.log4j.core.appender.rolling.PatternProcessor .getNextTime(long,int,boolean) |
testWriteInternal01() | 62 | 374 | org.apache.logging.log4j.core.appender.db.nosql .NoSQLDatabaseManagerTest.testWriteInternal01() |
createProperties(String,Agent[],Property[],int,String) | 59 | 345 | org.apache.logging.log4j.flume.appender .FlumeEmbeddedManager$FlumeManagerFactory.createProperties(String ,Agent[],Property[],int,String) |
writeInternal(LogEvent) | 59 | 258 | org.apache.logging.log4j.core.appender.db.nosql.NoSQLDatabaseManager .writeInternal(LogEvent) |
test() | 58 | 365 | org.apache.logging.log4j.core.filter.BurstFilterTest.test() |
toSerializable(LogEvent) | 58 | 293 | org.apache.logging.log4j.core.layout.HTMLLayout.toSerializable (LogEvent) |
createAppender(Agent[],Property[],String,String,String,String,String ,String,String,String,String,String,String,String,String,String,String ,String,String,FlumeEventFactory,Layout,Filter) | 58 | 257 | org.apache.logging.log4j.flume.appender.FlumeAppender.createAppender (Agent[],Property[],String,String,String,String,String,String,String ,String,String,String,String,String,String,String,String,String,String ,FlumeEventFactory,Layout,Filter) |
purgeAscending(int,int,RollingFileManager) | 55 | 199 | org.apache.logging.log4j.core.appender.rolling.DefaultRolloverStrategy .purgeAscending(int,int,RollingFileManager) |
testReconnect() | 55 | 152 | org.apache.logging.log4j.core.net.SocketReconnectTest.testReconnect() |
main(String[]) | 54 | 331 | org.apache.logging.log4j.core.async.perftest.PerfTestDriver.main (String[]) |
RFC5424Layout(Configuration,Facility,String,int,boolean,boolean,String ,String,String,String,String,String,String,String,String,Charset ,String,boolean,LoggerFields[]) | 54 | 270 | org.apache.logging.log4j.core.layout.RFC5424Layout.RFC5424Layout (Configuration,Facility,String,int,boolean,boolean,String,String ,String,String,String,String,String,String,String,Charset,String ,boolean,LoggerFields[]) |
execute() | 53 | 409 | org.apache.logging.dumbster.smtp.SmtpRequest.execute() |
createNoSQLProvider(String,String,String,String,String,String,String ,String) | 53 | 301 | org.apache.logging.log4j.core.appender.db.nosql.couchdb .CouchDBProvider.createNoSQLProvider(String,String,String,String ,String,String,String,String) |
createConverter(String,StringBuilder,Map,List,boolean) | 53 | 282 | org.apache.logging.log4j.core.pattern.PatternParser.createConverter (String,StringBuilder,Map,List,boolean) |
collectPlugins(boolean,String) | 52 | 289 | org.apache.logging.log4j.core.config.plugins.PluginManager .collectPlugins(boolean,String) |
formatState(StringBuilder,ThreadInfo) | 52 | 221 | org.apache.logging.log4j.message.ExtendedThreadInformation.formatState (StringBuilder,ThreadInfo) |
doConfigure() | 51 | 243 | org.apache.logging.log4j.core.config.BaseConfiguration.doConfigure() |
constructNode(String,Node,JsonNode) | 50 | 334 | org.apache.logging.log4j.core.config.JSONConfiguration.constructNode (String,Node,JsonNode) |
testLayout() | 50 | 272 | org.apache.logging.log4j.core.layout.RFC5424LayoutTest.testLayout() |
createManager(String,FlumePersistentManager$FactoryData) | 49 | 235 | org.apache.logging.log4j.flume.appender .FlumePersistentManager$BDBManagerFactory.createManager(String ,FlumePersistentManager$FactoryData) |
getAllEvents(String) | 48 | 154 | org.apache.logging.log4j.samples.app.MockEventsSupplier.getAllEvents (String) |
toString() | 47 | 273 | org.apache.logging.log4j.Timer.toString() |
toString() | 47 | 273 | org.apache.logging.log4j.core.Timer.toString() |
testPerformance() | 47 | 207 | org.apache.logging.log4j.DebugDisabledPerformanceComparison .testPerformance() |
run() | 47 | 161 | org.apache.logging.log4j.core.net.SocketReconnectTest$TestSocketServer .run() |
run() | 47 | 145 | org.apache.logging.dumbster.smtp.SimpleSmtpServer.run() |
getContext(String,ClassLoader,boolean,URI) | 46 | 140 | org.apache.logging.log4j.core.selector.ClassLoaderContextSelector .getContext(String,ClassLoader,boolean,URI) |
startLogging(String,String,String,HttpServletRequest) | 46 | 86 | org.apache.logging.log4j.samples.app.LoggingController.startLogging (String,String,String,HttpServletRequest) |
FlumeEvent(LogEvent,String,String,String,String,String,boolean) | 45 | 229 | org.apache.logging.log4j.flume.appender.FlumeEvent.FlumeEvent(LogEvent ,String,String,String,String,String,boolean) |
tearDown() | 45 | 105 | org.apache.logging.log4j.core.appender.db.jdbc .AbstractJdbcAppenderTest.tearDown() |
tearDown() | 45 | 105 | org.apache.logging.log4j.core.appender.db.jpa.AbstractJpaAppenderTest .tearDown() |
createConnectionSource(String,String) | 45 | 101 | org.apache.logging.log4j.core.appender.db.jdbc .FactoryMethodConnectionSource.createConnectionSource(String,String) |
testBaseJpaEntityAppender() | 44 | 249 | org.apache.logging.log4j.core.appender.db.jpa.AbstractJpaAppenderTest .testBaseJpaEntityAppender() |
testBasicJpaEntityAppender() | 44 | 246 | org.apache.logging.log4j.core.appender.db.jpa.AbstractJpaAppenderTest .testBasicJpaEntityAppender() |
purgeDescending(int,int,RollingFileManager) | 44 | 157 | org.apache.logging.log4j.core.appender.rolling.DefaultRolloverStrategy .purgeDescending(int,int,RollingFileManager) |
testFailover() | 43 | 216 | org.apache.logging.log4j.flume.appender.FlumePersistentAppenderTest .testFailover() |
testRollover() | 43 | 163 | org.apache.logging.log4j.core.appender .RollingRandomAccessFileAppenderRolloverTest.testRollover() |
escapeJsonControlCharacters(String) | 43 | 150 | org.apache.logging.log4j.core.helpers.Transform .escapeJsonControlCharacters(String) |
createRequest(String,SmtpState) | 43 | 148 | org.apache.logging.dumbster.smtp.SmtpRequest.createRequest(String ,SmtpState) |
computeTimeStampString(long) | 42 | 198 | org.apache.logging.log4j.core.layout.RFC5424Layout .computeTimeStampString(long) |
mdcPattern() | 41 | 170 | org.apache.logging.log4j.core.layout.PatternLayoutTest.mdcPattern() |
getThrowable(String,String,Throwable,StackTraceElement[]) | 41 | 116 | org.apache.logging.log4j.core.appender.db.jpa.converter .ThrowableAttributeConverter.getThrowable(String,String,Throwable ,StackTraceElement[]) |
newInstance(String[]) | 40 | 235 | org.apache.logging.log4j.core.impl.ThrowableFormatOptions.newInstance (String[]) |
testInitializeWithClassLoaderNoParametersThenSetLoggerContextThenDeini tialize() | 39 | 198 | org.apache.logging.log4j.core.web.Log4jWebInitializerImplTest .testInitializeWithClassLoaderNoParametersThenSetLoggerContextThenDein itialize() |
appendStructuredElements(StringBuilder,LogEvent) | 39 | 191 | org.apache.logging.log4j.core.layout.RFC5424Layout .appendStructuredElements(StringBuilder,LogEvent) |
testEscape() | 38 | 228 | org.apache.logging.log4j.core.layout.RFC5424LayoutTest.testEscape() |
testLogDebug() | 38 | 213 | org.apache.logging.log4j.AbstractLoggerTest.testLogDebug() |
testLogError() | 38 | 213 | org.apache.logging.log4j.AbstractLoggerTest.testLogError() |
testLogFatal() | 38 | 213 | org.apache.logging.log4j.AbstractLoggerTest.testLogFatal() |
testLogInfo() | 38 | 213 | org.apache.logging.log4j.AbstractLoggerTest.testLogInfo() |
testLogTrace() | 38 | 213 | org.apache.logging.log4j.AbstractLoggerTest.testLogTrace() |
testLogWarn() | 38 | 213 | org.apache.logging.log4j.AbstractLoggerTest.testLogWarn() |
testDebug() | 38 | 192 | org.apache.logging.log4j.AbstractLoggerTest.testDebug() |
testError() | 38 | 192 | org.apache.logging.log4j.AbstractLoggerTest.testError() |
testFatal() | 38 | 192 | org.apache.logging.log4j.AbstractLoggerTest.testFatal() |
testInfo() | 38 | 192 | org.apache.logging.log4j.AbstractLoggerTest.testInfo() |
testTrace() | 38 | 192 | org.apache.logging.log4j.AbstractLoggerTest.testTrace() |
testWarn() | 38 | 192 | org.apache.logging.log4j.AbstractLoggerTest.testWarn() |
testInitializeWithNoParametersThenSetLoggerContextThenDeinitialize() | 38 | 189 | org.apache.logging.log4j.core.web.Log4jWebInitializerImplTest .testInitializeWithNoParametersThenSetLoggerContextThenDeinitialize() |
testDataSourceConfig() | 38 | 178 | org.apache.logging.log4j.core.appender.db.jdbc .AbstractJdbcAppenderTest.testDataSourceConfig() |
testDelivery() | 38 | 159 | org.apache.logging.log4j.core.appender.SMTPAppenderTest.testDelivery() |
AnsiEscape() | 37 | 399 | org.apache.logging.log4j.core.pattern.AnsiEscape.AnsiEscape() |
testThreads() | 37 | 198 | org.apache.logging.log4j.FilterPerformanceComparison.testThreads() |
testWrapExecutionWithNoParameters() | 37 | 198 | org.apache.logging.log4j.core.web.Log4jWebInitializerImplTest .testWrapExecutionWithNoParameters() |
testFlushAtEndOfBatch() | 37 | 196 | org.apache.logging.log4j.core.appender.JSONCompleteFileAppenderTest .testFlushAtEndOfBatch() |
testAdditivity3() | 37 | 135 | org.apache.log4j.LoggerTest.testAdditivity3() |
DatePatternConverter(String[]) | 37 | 126 | org.apache.logging.log4j.core.pattern.DatePatternConverter .DatePatternConverter(String[]) |
printStack(StringBuilder,StackTraceElement[]) | 36 | 169 | org.apache.logging.log4j.message.ExtendedThreadInformation.printStack (StringBuilder,StackTraceElement[]) |
resolvePackageData(Stack,Map,StackTraceElement[],StackTraceElement[]) | 36 | 152 | org.apache.logging.log4j.core.impl.ThrowableProxy.resolvePackageData (Stack,Map,StackTraceElement[],StackTraceElement[]) |
lookup(String) | 36 | 147 | org.apache.logging.log4j.core.lookup.WebLookup.lookup(String) |
getAbbreviator(String) | 36 | 124 | org.apache.logging.log4j.core.pattern.NameAbbreviator.getAbbreviator (String) |
getConfiguration(String,URI) | 35 | 166 | org.apache.logging.log4j.core.config.ConfigurationFactory$Factory .getConfiguration(String,URI) |
decode(ClassLoader) | 35 | 143 | org.apache.logging.log4j.core.config.plugins.PluginManager.decode (ClassLoader) |
testLookup() | 34 | 147 | org.apache.logging.log4j.core.web.WebLookupTest.testLookup() |
format(String,Object[]) | 34 | 123 | org.apache.logging.log4j.message.ParameterizedMessage.format(String ,Object[]) |
call() | 34 | 114 | org.apache.logging.log4j.flume.appender .FlumePersistentManager$BDBWriter.call() |
testDriverManagerConfig() | 33 | 192 | org.apache.logging.log4j.core.appender.db.jdbc .AbstractJdbcAppenderTest.testDriverManagerConfig() |
testFactoryMethodConfig() | 33 | 192 | org.apache.logging.log4j.core.appender.db.jdbc .AbstractJdbcAppenderTest.testFactoryMethodConfig() |
locateContext(ClassLoader,URI) | 33 | 149 | org.apache.logging.log4j.core.selector.ClassLoaderContextSelector .locateContext(ClassLoader,URI) |
convertSpecialChars(String) | 33 | 81 | org.apache.logging.log4j.core.helpers.OptionConverter .convertSpecialChars(String) |
getHeader() | 32 | 204 | org.apache.logging.log4j.core.layout.HTMLLayout.getHeader() |
testReconnect() | 32 | 150 | org.apache.logging.log4j.flume.appender.FlumeAppenderTest .testReconnect() |
log(Marker,String,Level,Message,Throwable) | 32 | 141 | org.apache.logging.log4j.simple.SimpleLogger.log(Marker,String,Level ,Message,Throwable) |
testLayout() | 32 | 130 | org.apache.logging.log4j.core.layout.SerializedLayoutTest.testLayout() |
testFilter() | 31 | 201 | org.apache.logging.log4j.core.filter.ThreadContextMapFilterTest .testFilter() |
testInitializeUsingJndiSelector() | 31 | 160 | org.apache.logging.log4j.core.web.Log4jWebInitializerImplTest .testInitializeUsingJndiSelector() |
testFlushAtEndOfBatch() | 31 | 158 | org.apache.logging.log4j.core.appender.XmlCompleteFileAppenderTest .testFlushAtEndOfBatch() |
Statistics
Stat | # lines of code (LOC) | # ByteCode instructions |
---|---|---|
Sum: | 5 207 | 25 675 |
Average: | 47.77 | 235.55 |
Minimum: | 0 | 81 |
Maximum: | 156 | 801 |
Standard deviation: | 23.88 | 126.2 |
Variance: | 570.47 | 15 926 |
![]() | Rule warning: Methods too complex |
warnif count > 0 from m in JustMyCode.Methods where
m.CyclomaticComplexity > 20 ||
m.BCCyclomaticComplexity > 40 ||
m.BCNestingDepth > 5
orderby m.CyclomaticComplexity descending,
m.BCCyclomaticComplexity descending,
m.BCNestingDepth descending
select new { m, m.CyclomaticComplexity,
m.BCCyclomaticComplexity,
m.BCNestingDepth }
// Methods where CyclomaticComplexity > 20
// or BCCyclomaticComplexity > 40
// or BCNestingDepth > 4
// are hard to understand and maintain
// and should be split in smaller methods.
// See the definition of the complexity metrics here:
// http://www.jarchitect.com/Metrics#CC
// http://www.jarchitect.com/Metrics#ILCC
// http://www.jarchitect.com/Metrics#BCNestingDepth
37 methods matched
methods | Cyclomatic Complexity (CC) | ByteCode Cyclomatic Complexity (BCCC) | ByteCode Nesting Depth | Full Name |
---|---|---|---|---|
createPluginObject(PluginType,Node,LogEvent)<T> | 56 | 52 | 11 | org.apache.logging.log4j.core.config.BaseConfiguration .createPluginObject(PluginType,Node,LogEvent)<T> |
XMLConfiguration(ConfigurationFactory$ConfigurationSource) | 39 | 40 | 11 | org.apache.logging.log4j.core.config.XMLConfiguration.XMLConfiguration (ConfigurationFactory$ConfigurationSource) |
run() | 32 | 45 | 4 | org.apache.logging.log4j.flume.appender .FlumePersistentManager$WriterThread.run() |
newInstance(String[]) | 32 | 31 | 21 | org.apache.logging.log4j.core.impl.ThrowableFormatOptions.newInstance (String[]) |
toSerializable(LogEvent) | 30 | 30 | 3 | org.apache.logging.log4j.core.layout.XMLLayout.toSerializable(LogEvent ) |
lookup(String) | 30 | 16 | 0 | org.apache.logging.log4j.core.lookup.WebLookup.lookup(String) |
sendBatch(DatabaseEntry,DatabaseEntry) | 29 | 42 | 5 | org.apache.logging.log4j.flume.appender .FlumePersistentManager$WriterThread.sendBatch(DatabaseEntry ,DatabaseEntry) |
createNoSQLProvider(String,String,String,String,String,String,String ,String) | 29 | 24 | 9 | org.apache.logging.log4j.core.appender.db.nosql.couchdb .CouchDBProvider.createNoSQLProvider(String,String,String,String ,String,String,String,String) |
createProperties(String,Agent[],Property[],int,String) | 29 | 23 | 10 | org.apache.logging.log4j.flume.appender .FlumeEmbeddedManager$FlumeManagerFactory.createProperties(String ,Agent[],Property[],int,String) |
recursiveDeepToString(Object,StringBuilder,Set) | 28 | 26 | 0 | org.apache.logging.log4j.message.ParameterizedMessage .recursiveDeepToString(Object,StringBuilder,Set) |
createConverter(String,StringBuilder,Map,List,boolean) | 28 | 23 | 8 | org.apache.logging.log4j.core.pattern.PatternParser.createConverter (String,StringBuilder,Map,List,boolean) |
JSONConfiguration(ConfigurationFactory$ConfigurationSource) | 27 | 28 | 9 | org.apache.logging.log4j.core.config.JSONConfiguration .JSONConfiguration(ConfigurationFactory$ConfigurationSource) |
getContext(String,ClassLoader,boolean,URI) | 27 | 20 | 1 | org.apache.logging.log4j.core.selector.ClassLoaderContextSelector .getContext(String,ClassLoader,boolean,URI) |
createAppender(Agent[],Property[],String,String,String,String,String ,String,String,String,String,String,String,String,String,String,String ,String,String,FlumeEventFactory,Layout,Filter) | 25 | 24 | 8 | org.apache.logging.log4j.flume.appender.FlumeAppender.createAppender (Agent[],Property[],String,String,String,String,String,String,String ,String,String,String,String,String,String,String,String,String,String ,FlumeEventFactory,Layout,Filter) |
parse(String,List,List,boolean) | 25 | 24 | 5 | org.apache.logging.log4j.core.pattern.PatternParser.parse(String,List ,List,boolean) |
getConfiguration(String,URI) | 24 | 22 | 15 | org.apache.logging.log4j.core.config.ConfigurationFactory$Factory .getConfiguration(String,URI) |
purgeAscending(int,int,RollingFileManager) | 22 | 19 | 7 | org.apache.logging.log4j.core.appender.rolling.DefaultRolloverStrategy .purgeAscending(int,int,RollingFileManager) |
callAppender(LogEvent) | 21 | 17 | 4 | org.apache.logging.log4j.core.config.AppenderControl.callAppender (LogEvent) |
toLevel(String,Level) | 21 | 11 | 0 | org.apache.log4j.Level.toLevel(String,Level) |
escapeJsonControlCharacters(String) | 20 | 19 | 8 | org.apache.logging.log4j.core.helpers.Transform .escapeJsonControlCharacters(String) |
getInputFromURI(URI) | 20 | 19 | 8 | org.apache.logging.log4j.core.config.ConfigurationFactory .getInputFromURI(URI) |
getThrowable(String,String,Throwable,StackTraceElement[]) | 19 | 18 | 11 | org.apache.logging.log4j.core.appender.db.jpa.converter .ThrowableAttributeConverter.getThrowable(String,String,Throwable ,StackTraceElement[]) |
FlumeEvent(LogEvent,String,String,String,String,String,boolean) | 19 | 18 | 6 | org.apache.logging.log4j.flume.appender.FlumeEvent.FlumeEvent(LogEvent ,String,String,String,String,String,boolean) |
getAbbreviator(String) | 18 | 15 | 7 | org.apache.logging.log4j.core.pattern.NameAbbreviator.getAbbreviator (String) |
collectPlugins(boolean,String) | 17 | 17 | 6 | org.apache.logging.log4j.core.config.plugins.PluginManager .collectPlugins(boolean,String) |
getManager(String,Agent[],Property[],int,String) | 17 | 15 | 7 | org.apache.logging.log4j.flume.appender.FlumeEmbeddedManager .getManager(String,Agent[],Property[],int,String) |
equals(Object) | 17 | 14 | 7 | org.apache.logging.log4j.message.StructuredDataMessage.equals(Object) |
locateContext(ClassLoader,URI) | 16 | 13 | 8 | org.apache.logging.log4j.core.selector.ClassLoaderContextSelector .locateContext(ClassLoader,URI) |
constructNode(String,Node,JsonNode) | 15 | 15 | 7 | org.apache.logging.log4j.core.config.JSONConfiguration.constructNode (String,Node,JsonNode) |
main(String[]) | 14 | 11 | 6 | org.apache.logging.log4j.core.net.SocketServer.main(String[]) |
main(String[]) | 14 | 11 | 6 | org.apache.logging.log4j.core.net.UDPSocketServer.main(String[]) |
getConfiguration(ConfigurationFactory$ConfigurationSource) | 11 | 9 | 6 | org.apache.logging.log4j.core.config.ConfigurationFactory$Factory .getConfiguration(ConfigurationFactory$ConfigurationSource) |
constructHierarchy(Node,Element) | 10 | 10 | 6 | org.apache.logging.log4j.core.config.XMLConfiguration .constructHierarchy(Node,Element) |
UUIDUtil() | 1 | 31 | 12 | org.apache.logging.log4j.core.helpers.UUIDUtil.UUIDUtil() |
ThreadContext() | 1 | 18 | 6 | org.apache.logging.log4j.ThreadContext.ThreadContext() |
createNoSQLProvider(String,String,String,String,String,String,String ,String,String,String) | N/A | 41 | 16 | org.apache.logging.log4j.core.appender.db.nosql.mongo.MongoDBProvider .createNoSQLProvider(String,String,String,String,String,String,String ,String,String,String) |
execute() | N/A | 30 | 8 | org.apache.logging.dumbster.smtp.SmtpRequest.execute() |
Statistics
Stat | Cyclomatic Complexity (CC) | ByteCode Cyclomatic Complexity (BCCC) | ByteCode Nesting Depth |
---|---|---|---|
Sum: | 783 | 841 | 272 |
Average: | 22.37 | 22.73 | 7.35 |
Minimum: | 1 | 9 | 0 |
Maximum: | 56 | 52 | 21 |
Standard deviation: | 10.05 | 10.38 | 4.24 |
Variance: | 101.09 | 107.66 | 17.96 |
![]() | Rule warning: Methods potentially poorly commented |
warnif count > 0 from m in JustMyCode.Methods where
m.PercentageComment < 20 &&
m.NbLinesOfCode > 20
orderby m.PercentageComment ascending
select new { m, m.PercentageComment, m.NbLinesOfCode, m.NbLinesOfComment }
// Methods where %Comment < 20 and that have
// at least 20 lines of code might need to be more commented.
// See the definition of the Comments metric here
// http://www.jarchitect.com/Metrics#PercentageComment
// http://www.jarchitect.com/Metrics#NbLinesOfComment
67 methods matched
methods | Percentage Comment | # lines of code (LOC) | # lines of comment | Full Name |
---|---|---|---|---|
printStack(StringBuilder,StackTraceElement[]) | 0 | 36 | 0 | org.apache.logging.log4j.message.ExtendedThreadInformation.printStack (StringBuilder,StackTraceElement[]) |
formatState(StringBuilder,ThreadInfo) | 0 | 52 | 0 | org.apache.logging.log4j.message.ExtendedThreadInformation.formatState (StringBuilder,ThreadInfo) |
SimpleLoggerContext() | 0 | 21 | 0 | org.apache.logging.log4j.simple.SimpleLoggerContext .SimpleLoggerContext() |
createFilter(KeyValuePair[],String,String,String) | 0 | 27 | 0 | org.apache.logging.log4j.core.filter.MapFilter.createFilter (KeyValuePair[],String,String,String) |
createFilter(KeyValuePair[],String,String,String) | 0 | 27 | 0 | org.apache.logging.log4j.core.filter.ThreadContextMapFilter .createFilter(KeyValuePair[],String,String,String) |
convertSpecialChars(String) | 0 | 33 | 0 | org.apache.logging.log4j.core.helpers.OptionConverter .convertSpecialChars(String) |
formatElements(StringBuilder,int,StackTraceElement[] ,StackTracePackageElement[],List) | 0 | 23 | 0 | org.apache.logging.log4j.core.impl.ThrowableProxy.formatElements (StringBuilder,int,StackTraceElement[],StackTracePackageElement[],List ) |
RFC5424Layout(Configuration,Facility,String,int,boolean,boolean,String ,String,String,String,String,String,String,String,String,Charset ,String,boolean,LoggerFields[]) | 0 | 54 | 0 | org.apache.logging.log4j.core.layout.RFC5424Layout.RFC5424Layout (Configuration,Facility,String,int,boolean,boolean,String,String ,String,String,String,String,String,String,String,Charset,String ,boolean,LoggerFields[]) |
appendStructuredElements(StringBuilder,LogEvent) | 0 | 39 | 0 | org.apache.logging.log4j.core.layout.RFC5424Layout .appendStructuredElements(StringBuilder,LogEvent) |
computeTimeStampString(long) | 0 | 42 | 0 | org.apache.logging.log4j.core.layout.RFC5424Layout .computeTimeStampString(long) |
lookup(String) | 0 | 36 | 0 | org.apache.logging.log4j.core.lookup.WebLookup.lookup(String) |
parse(String,boolean,boolean) | 0 | 23 | 0 | org.apache.logging.log4j.core.pattern.PatternParser.parse(String ,boolean,boolean) |
formatSubShortOption(Throwable,StringBuilder) | 0 | 30 | 0 | org.apache.logging.log4j.core.pattern.ThrowablePatternConverter .formatSubShortOption(Throwable,StringBuilder) |
initializeJndi(String) | 0 | 26 | 0 | org.apache.logging.log4j.core.web.Log4jWebInitializerImpl .initializeJndi(String) |
writeInternal(LogEvent) | 0 | 25 | 0 | org.apache.logging.log4j.core.appender.db.jdbc.JDBCDatabaseManager .writeInternal(LogEvent) |
convertString(ListIterator,boolean) | 0 | 22 | 0 | org.apache.logging.log4j.core.appender.db.jpa.converter .ThrowableAttributeConverter.convertString(ListIterator,boolean) |
getThrowable(String,String,Throwable,StackTraceElement[]) | 0 | 41 | 0 | org.apache.logging.log4j.core.appender.db.jpa.converter .ThrowableAttributeConverter.getThrowable(String,String,Throwable ,StackTraceElement[]) |
JSONConfiguration(ConfigurationFactory$ConfigurationSource) | 0 | 78 | 0 | org.apache.logging.log4j.core.config.JSONConfiguration .JSONConfiguration(ConfigurationFactory$ConfigurationSource) |
constructNode(String,Node,JsonNode) | 0 | 50 | 0 | org.apache.logging.log4j.core.config.JSONConfiguration.constructNode (String,Node,JsonNode) |
XMLConfiguration(ConfigurationFactory$ConfigurationSource) | 0 | 104 | 0 | org.apache.logging.log4j.core.config.XMLConfiguration.XMLConfiguration (ConfigurationFactory$ConfigurationSource) |
constructHierarchy(Node,Element) | 0 | 27 | 0 | org.apache.logging.log4j.core.config.XMLConfiguration .constructHierarchy(Node,Element) |
decode(ClassLoader) | 0 | 35 | 0 | org.apache.logging.log4j.core.config.plugins.PluginManager.decode (ClassLoader) |
encode(ConcurrentMap) | 0 | 22 | 0 | org.apache.logging.log4j.core.config.plugins.PluginManager.encode (ConcurrentMap) |
getSMTPManager(String,String,String,String,String,String,String,String ,int,String,String,boolean,String,int) | 0 | 31 | 0 | org.apache.logging.log4j.core.net.SMTPManager.getSMTPManager(String ,String,String,String,String,String,String,String,int,String,String ,boolean,String,int) |
load() | 0 | 28 | 0 | org.apache.logging.log4j.core.net.ssl.KeyStoreConfiguration.load() |
load() | 0 | 30 | 0 | org.apache.logging.log4j.core.net.ssl.TrustStoreConfiguration.load() |
log(Marker,String,Level,Message,Throwable) | 0 | 24 | 0 | org.apache.logging.slf4j.SLF4JLogger.log(Marker,String,Level,Message ,Throwable) |
createProperties(String,Agent[],Property[],int,String) | 0 | 59 | 0 | org.apache.logging.log4j.flume.appender .FlumeEmbeddedManager$FlumeManagerFactory.createProperties(String ,Agent[],Property[],int,String) |
createEvent(DatabaseEntry) | 0 | 23 | 0 | org.apache.logging.log4j.flume.appender .FlumePersistentManager$WriterThread.createEvent(DatabaseEntry) |
send(Event) | 0 | 27 | 0 | org.apache.logging.log4j.flume.appender.FlumePersistentManager.send (Event) |
doConfigure() | 1 | 51 | 1 | org.apache.logging.log4j.core.config.BaseConfiguration.doConfigure() |
log(Marker,String,Level,Message,Throwable) | 3 | 32 | 1 | org.apache.logging.log4j.simple.SimpleLogger.log(Marker,String,Level ,Message,Throwable) |
SimpleLogger(String,Level,boolean,boolean,boolean,boolean,String ,MessageFactory,PropertiesUtil,PrintStream) | 4 | 21 | 1 | org.apache.logging.log4j.simple.SimpleLogger.SimpleLogger(String,Level ,boolean,boolean,boolean,boolean,String,MessageFactory,PropertiesUtil ,PrintStream) |
appendThrowableAsHTML(Throwable,StringBuilder) | 4 | 23 | 1 | org.apache.logging.log4j.core.layout.HTMLLayout.appendThrowableAsHTML (Throwable,StringBuilder) |
getContext(String,ClassLoader,boolean,URI) | 4 | 46 | 2 | org.apache.logging.log4j.core.selector.ClassLoaderContextSelector .getContext(String,ClassLoader,boolean,URI) |
rollover(RolloverStrategy) | 4 | 21 | 1 | org.apache.logging.log4j.core.appender.rolling.RollingFileManager .rollover(RolloverStrategy) |
createManager(String,SMTPManager$FactoryData) | 4 | 21 | 1 | org.apache.logging.log4j.core.net.SMTPManager$SMTPManagerFactory .createManager(String,SMTPManager$FactoryData) |
run() | 4 | 95 | 4 | org.apache.logging.log4j.flume.appender .FlumePersistentManager$WriterThread.run() |
toSerializable(LogEvent) | 5 | 135 | 8 | org.apache.logging.log4j.core.layout.JSONLayout.toSerializable (LogEvent) |
toSerializable(LogEvent) | 5 | 135 | 8 | org.apache.logging.log4j.core.layout.XMLLayout.toSerializable(LogEvent ) |
sendBatch(DatabaseEntry,DatabaseEntry) | 6 | 76 | 5 | org.apache.logging.log4j.flume.appender .FlumePersistentManager$WriterThread.sendBatch(DatabaseEntry ,DatabaseEntry) |
startLogging(String,String,String,HttpServletRequest) | 6 | 46 | 3 | org.apache.logging.log4j.samples.app.LoggingController.startLogging (String,String,String,HttpServletRequest) |
createPluginObject(PluginType,Node,LogEvent)<T> | 7 | 156 | 13 | org.apache.logging.log4j.core.config.BaseConfiguration .createPluginObject(PluginType,Node,LogEvent)<T> |
call() | 8 | 34 | 3 | org.apache.logging.log4j.flume.appender .FlumePersistentManager$BDBWriter.call() |
toSerializable(LogEvent) | 9 | 58 | 6 | org.apache.logging.log4j.core.layout.HTMLLayout.toSerializable (LogEvent) |
getNextTime(long,int,boolean) | 9 | 64 | 7 | org.apache.logging.log4j.core.appender.rolling.PatternProcessor .getNextTime(long,int,boolean) |
getAllEvents(String) | 9 | 48 | 5 | org.apache.logging.log4j.samples.app.MockEventsSupplier.getAllEvents (String) |
collectPlugins(boolean,String) | 10 | 52 | 6 | org.apache.logging.log4j.core.config.plugins.PluginManager .collectPlugins(boolean,String) |
buildServiceInfoVersion1(String,int,String,Map) | 10 | 26 | 3 | org.apache.logging.log4j.core.net.MulticastDNSAdvertiser .buildServiceInfoVersion1(String,int,String,Map) |
createManager(String,FlumePersistentManager$FactoryData) | 10 | 49 | 6 | org.apache.logging.log4j.flume.appender .FlumePersistentManager$BDBManagerFactory.createManager(String ,FlumePersistentManager$FactoryData) |
getHeader() | 11 | 32 | 4 | org.apache.logging.log4j.core.layout.HTMLLayout.getHeader() |
format(LogEvent,StringBuilder) | 11 | 23 | 3 | org.apache.logging.log4j.core.pattern .ExtendedThrowablePatternConverter.format(LogEvent,StringBuilder) |
format(LogEvent,StringBuilder) | 11 | 23 | 3 | org.apache.logging.log4j.core.pattern.RootThrowablePatternConverter .format(LogEvent,StringBuilder) |
callAppender(LogEvent) | 12 | 28 | 4 | org.apache.logging.log4j.core.config.AppenderControl.callAppender (LogEvent) |
run() | 12 | 21 | 3 | org.apache.logging.log4j.samples.app.LoggingApp$Worker.run() |
getInstance() | 14 | 23 | 4 | org.apache.logging.log4j.core.config.ConfigurationFactory.getInstance( ) |
getInputFromURI(URI) | 14 | 29 | 5 | org.apache.logging.log4j.core.config.ConfigurationFactory .getInputFromURI(URI) |
invoke(Object,Method,Object[]) | 15 | 22 | 4 | org.apache.logging.log4j.samples.app.LogEventFactory$AuditProxy.invoke (Object,Method,Object[]) |
getConfiguration(String,URI) | 16 | 35 | 7 | org.apache.logging.log4j.core.config.ConfigurationFactory$Factory .getConfiguration(String,URI) |
connect(Agent[],int,int,int) | 16 | 25 | 5 | org.apache.logging.log4j.flume.appender.FlumeAvroManager.connect (Agent[],int,int,int) |
buildServiceInfoVersion3(String,int,String,Map) | 17 | 23 | 5 | org.apache.logging.log4j.core.net.MulticastDNSAdvertiser .buildServiceInfoVersion3(String,int,String,Map) |
escapeJsonControlCharacters(String) | 18 | 43 | 10 | org.apache.logging.log4j.core.helpers.Transform .escapeJsonControlCharacters(String) |
run() | 18 | 22 | 5 | org.apache.logging.log4j.core.appender.AsyncAppender$AsyncThread.run() |
createPolicy(String,KeyValuePair[]) | 18 | 26 | 6 | org.apache.logging.log4j.core.appender.rewrite.MapRewritePolicy .createPolicy(String,KeyValuePair[]) |
main(String[]) | 18 | 22 | 5 | org.apache.logging.log4j.core.net.SocketServer.main(String[]) |
DatePatternConverter(String[]) | 19 | 37 | 9 | org.apache.logging.log4j.core.pattern.DatePatternConverter .DatePatternConverter(String[]) |
FlumeEvent(LogEvent,String,String,String,String,String,boolean) | 19 | 45 | 11 | org.apache.logging.log4j.flume.appender.FlumeEvent.FlumeEvent(LogEvent ,String,String,String,String,String,boolean) |
Statistics
Stat | Percentage Comment | # lines of code (LOC) | # lines of comment |
---|---|---|---|
Sum: | 381 | 2 763 | 178 |
Average: | 5.69 | 41.24 | 2.66 |
Minimum: | 0 | 21 | 0 |
Maximum: | 19 | 156 | 13 |
Standard deviation: | 6.47 | 27.91 | 3.2 |
Variance: | 41.86 | 778.93 | 10.26 |
![]() | Rule warning: Methods with too many parameters |
warnif count > 0 from m in JustMyCode.Methods where
m.NbParameters > 5
orderby m.NbParameters descending
select new { m, m.NbParameters }
// Methods where NbParameters > 5 might be painful to call
// and might degrade performance. You should prefer using
// additional properties/fields to the declaring type to
// handle numerous states. Another alternative is to provide
// a class or structure dedicated to handle arguments passing
// (for example see the class System.Diagnostics.ProcessStartInfo
// and the method System.Diagnostics.Process.Start(ProcessStartInfo))
// See the definition of the NbParameters metric here
// http://www.jarchitect.com/Metrics#NbParameters
119 methods matched
methods | # Parameters | Full Name |
---|---|---|
createAppender(String,String,String,String,String,String,String,String ,String,String,String,String,String,String,String,String,String,String ,String,String,String,String,String,Filter,Configuration,String,String ,LoggerFields[],String) | 29 | org.apache.logging.log4j.core.appender.SyslogAppender.createAppender (String,String,String,String,String,String,String,String,String,String ,String,String,String,String,String,String,String,String,String,String ,String,String,String,Filter,Configuration,String,String ,LoggerFields[],String) |
createAppender(String,String,SSLConfiguration,String,String,String ,String,String,String,String,String,String,String,String,String,String ,String,String,String,String,String,String,String,Filter,Configuration ,String,String,LoggerFields[],String) | 29 | org.apache.logging.log4j.core.appender.TLSSyslogAppender .createAppender(String,String,SSLConfiguration,String,String,String ,String,String,String,String,String,String,String,String,String,String ,String,String,String,String,String,String,String,Filter,Configuration ,String,String,LoggerFields[],String) |
createAppender(Agent[],Property[],String,String,String,String,String ,String,String,String,String,String,String,String,String,String,String ,String,String,FlumeEventFactory,Layout,Filter) | 22 | org.apache.logging.log4j.flume.appender.FlumeAppender.createAppender (Agent[],Property[],String,String,String,String,String,String,String ,String,String,String,String,String,String,String,String,String,String ,FlumeEventFactory,Layout,Filter) |
RFC5424Layout(Configuration,Facility,String,int,boolean,boolean,String ,String,String,String,String,String,String,String,String,Charset ,String,boolean,LoggerFields[]) | 19 | org.apache.logging.log4j.core.layout.RFC5424Layout.RFC5424Layout (Configuration,Facility,String,int,boolean,boolean,String,String ,String,String,String,String,String,String,String,Charset,String ,boolean,LoggerFields[]) |
createLayout(String,String,String,String,String,String,String,String ,String,String,String,String,String,String,String,String ,LoggerFields[],Configuration) | 18 | org.apache.logging.log4j.core.layout.RFC5424Layout.createLayout(String ,String,String,String,String,String,String,String,String,String,String ,String,String,String,String,String,LoggerFields[],Configuration) |
createAppender(String,String,String,String,String,String,String,String ,String,String,String,String,String,String,Layout,Filter,String) | 17 | org.apache.logging.log4j.core.appender.SMTPAppender.createAppender (String,String,String,String,String,String,String,String,String,String ,String,String,String,String,Layout,Filter,String) |
createAppender(String,String,String,String,String,String ,TriggeringPolicy,RolloverStrategy,Layout,Filter,String,String,String ,Configuration) | 14 | org.apache.logging.log4j.core.appender.RollingFileAppender .createAppender(String,String,String,String,String,String ,TriggeringPolicy,RolloverStrategy,Layout,Filter,String,String,String ,Configuration) |
getSMTPManager(String,String,String,String,String,String,String,String ,int,String,String,boolean,String,int) | 14 | org.apache.logging.log4j.core.net.SMTPManager.getSMTPManager(String ,String,String,String,String,String,String,String,int,String,String ,boolean,String,int) |
createAppender(String,String,String,String,String,String,String,String ,Layout,Filter,String,String,Configuration) | 13 | org.apache.logging.log4j.core.appender.FileAppender.createAppender (String,String,String,String,String,String,String,String,Layout,Filter ,String,String,Configuration) |
createAppender(String,String,String,String,String,String,String,String ,String,String,Layout,Filter,String) | 13 | org.apache.logging.log4j.core.appender.JMSQueueAppender.createAppender (String,String,String,String,String,String,String,String,String,String ,Layout,Filter,String) |
createAppender(String,String,String,String,String,String,String,String ,String,String,Layout,Filter,String) | 13 | org.apache.logging.log4j.core.appender.JMSTopicAppender.createAppender (String,String,String,String,String,String,String,String,String,String ,Layout,Filter,String) |
createAppender(String,String,String,String,String,TriggeringPolicy ,RolloverStrategy,Layout,Filter,String,String,String,Configuration) | 13 | org.apache.logging.log4j.core.appender.RollingRandomAccessFileAppender .createAppender(String,String,String,String,String,TriggeringPolicy ,RolloverStrategy,Layout,Filter,String,String,String,Configuration) |
SMTPManager$FactoryData(String,String,String,String,String,String ,String,String,int,String,String,boolean,int) | 13 | org.apache.logging.log4j.core.net.SMTPManager$FactoryData .SMTPManager$FactoryData(String,String,String,String,String,String ,String,String,int,String,String,boolean,int) |
getContext(String,ClassLoader,Object,boolean,URI,String) | 12 | org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext (String,ClassLoader,Object,boolean,URI,String) |
Log4jLogEvent(String,Marker,String,Level,Message,ThrowableProxy,Map ,ThreadContext$ContextStack,String,StackTraceElement,long ,Log4jLogEvent$1) | 12 | org.apache.logging.log4j.core.impl.Log4jLogEvent.Log4jLogEvent(String ,Marker,String,Level,Message,ThrowableProxy,Map ,ThreadContext$ContextStack,String,StackTraceElement,long ,Log4jLogEvent$1) |
createAppender(String,String,String,String,String,String,String,String ,Layout,Filter,String,Configuration) | 12 | org.apache.logging.log4j.core.appender.SocketAppender.createAppender (String,String,String,String,String,String,String,String,Layout,Filter ,String,Configuration) |
RollingRandomAccessFileManager(RandomAccessFile,String,String ,OutputStream,boolean,boolean,long,long,TriggeringPolicy ,RolloverStrategy,String,Layout) | 12 | org.apache.logging.log4j.core.appender.rolling .RollingRandomAccessFileManager.RollingRandomAccessFileManager (RandomAccessFile,String,String,OutputStream,boolean,boolean,long,long ,TriggeringPolicy,RolloverStrategy,String,Layout) |
setValues(AsyncLogger,String,Marker,String,Level,Message,Throwable,Map ,ThreadContext$ContextStack,String,StackTraceElement,long) | 12 | org.apache.logging.log4j.core.async.RingBufferLogEvent.setValues (AsyncLogger,String,Marker,String,Level,Message,Throwable,Map ,ThreadContext$ContextStack,String,StackTraceElement,long) |
setValues(AsyncLogger,String,Marker,String,Level,Message,Throwable,Map ,ThreadContext$ContextStack,String,StackTraceElement,long) | 12 | org.apache.logging.log4j.core.async.RingBufferLogEventTranslator .setValues(AsyncLogger,String,Marker,String,Level,Message,Throwable ,Map,ThreadContext$ContextStack,String,StackTraceElement,long) |
FlumeAppender(String,Filter,Layout,boolean,String,String,String,String ,String,boolean,FlumeEventFactory,AbstractFlumeManager) | 12 | org.apache.logging.log4j.flume.appender.FlumeAppender.FlumeAppender (String,Filter,Layout,boolean,String,String,String,String,String ,boolean,FlumeEventFactory,AbstractFlumeManager) |
FlumePersistentManager(String,String,Agent[],int,int,int,int,int ,Database,Environment,SecretKey,int) | 12 | org.apache.logging.log4j.flume.appender.FlumePersistentManager .FlumePersistentManager(String,String,Agent[],int,int,int,int,int ,Database,Environment,SecretKey,int) |
Log4jLogEvent(String,Marker,String,Level,Message,Throwable,Map ,ThreadContext$ContextStack,String,StackTraceElement,long) | 11 | org.apache.logging.log4j.core.impl.Log4jLogEvent.Log4jLogEvent(String ,Marker,String,Level,Message,Throwable,Map,ThreadContext$ContextStack ,String,StackTraceElement,long) |
createEvent(String,Marker,String,Level,Message,ThrowableProxy,Map ,ThreadContext$ContextStack,String,StackTraceElement,long) | 11 | org.apache.logging.log4j.core.impl.Log4jLogEvent.createEvent(String ,Marker,String,Level,Message,ThrowableProxy,Map ,ThreadContext$ContextStack,String,StackTraceElement,long) |
Log4jLogEvent(String,Marker,String,Level,Message,ThrowableProxy,Map ,ThreadContext$ContextStack,String,StackTraceElement,long) | 11 | org.apache.logging.log4j.core.impl.Log4jLogEvent.Log4jLogEvent(String ,Marker,String,Level,Message,ThrowableProxy,Map ,ThreadContext$ContextStack,String,StackTraceElement,long) |
createAppender(String,String,String,String,String,String,Layout,Filter ,String,String,Configuration) | 11 | org.apache.logging.log4j.core.appender.RandomAccessFileAppender .createAppender(String,String,String,String,String,String,Layout ,Filter,String,String,Configuration) |
SimpleLogger(String,Level,boolean,boolean,boolean,boolean,String ,MessageFactory,PropertiesUtil,PrintStream) | 10 | org.apache.logging.log4j.simple.SimpleLogger.SimpleLogger(String,Level ,boolean,boolean,boolean,boolean,String,MessageFactory,PropertiesUtil ,PrintStream) |
createNoSQLProvider(String,String,String,String,String,String,String ,String,String,String) | 10 | org.apache.logging.log4j.core.appender.db.nosql.mongo.MongoDBProvider .createNoSQLProvider(String,String,String,String,String,String,String ,String,String,String) |
RollingFileManager(String,String,OutputStream,boolean,long,long ,TriggeringPolicy,RolloverStrategy,String,Layout) | 10 | org.apache.logging.log4j.core.appender.rolling.RollingFileManager .RollingFileManager(String,String,OutputStream,boolean,long,long ,TriggeringPolicy,RolloverStrategy,String,Layout) |
createManager(String,OutputStream,Socket,SSLConfiguration,InetAddress ,String,int,int,boolean,Layout) | 10 | org.apache.logging.log4j.core.net .TLSSocketManager$TLSSocketManagerFactory.createManager(String ,OutputStream,Socket,SSLConfiguration,InetAddress,String,int,int ,boolean,Layout) |
TLSSocketManager(String,OutputStream,Socket,SSLConfiguration ,InetAddress,String,int,int,boolean,Layout) | 10 | org.apache.logging.log4j.core.net.TLSSocketManager.TLSSocketManager (String,OutputStream,Socket,SSLConfiguration,InetAddress,String,int ,int,boolean,Layout) |
FlumePersistentManager$FactoryData(String,Agent[],int,int,int,int,int ,int,String,Property[]) | 10 | org.apache.logging.log4j.flume.appender .FlumePersistentManager$FactoryData.FlumePersistentManager$FactoryData (String,Agent[],int,int,int,int,int,int,String,Property[]) |
getManager(String,Agent[],Property[],int,int,int,int,int,int,String) | 10 | org.apache.logging.log4j.flume.appender.FlumePersistentManager .getManager(String,Agent[],Property[],int,int,int,int,int,int,String) |
append(CharSequence,int,int) | 9 | org.apache.logging.log4j.spi.LoggerStream.append(CharSequence,int,int) |
finalizeConverter(char,String,int,StringBuilder,FormattingInfo,Map ,List,List,boolean) | 9 | org.apache.logging.log4j.core.pattern.PatternParser.finalizeConverter (char,String,int,StringBuilder,FormattingInfo,Map,List,List,boolean) |
AsyncAppender(String,Filter,AppenderRef[],String,int,boolean,boolean ,Configuration,boolean) | 9 | org.apache.logging.log4j.core.appender.AsyncAppender.AsyncAppender (String,Filter,AppenderRef[],String,int,boolean,boolean,Configuration ,boolean) |
createAppender(AppenderRef[],String,String,String,String,String,Filter ,Configuration,String) | 9 | org.apache.logging.log4j.core.appender.AsyncAppender.createAppender (AppenderRef[],String,String,String,String,String,Filter,Configuration ,String) |
RollingFileAppender(String,Layout,Filter,RollingFileManager,String ,String,boolean,boolean,Advertiser) | 9 | org.apache.logging.log4j.core.appender.RollingFileAppender .RollingFileAppender(String,Layout,Filter,RollingFileManager,String ,String,boolean,boolean,Advertiser) |
RollingRandomAccessFileAppender(String,Layout,Filter ,RollingFileManager,String,String,boolean,boolean,Advertiser) | 9 | org.apache.logging.log4j.core.appender.RollingRandomAccessFileAppender .RollingRandomAccessFileAppender(String,Layout,Filter ,RollingFileManager,String,String,boolean,boolean,Advertiser) |
JMSQueueManager$FactoryData(String,String,String,String,String,String ,String,String,String) | 9 | org.apache.logging.log4j.core.net.JMSQueueManager$FactoryData .JMSQueueManager$FactoryData(String,String,String,String,String,String ,String,String,String) |
getJMSQueueManager(String,String,String,String,String,String,String ,String,String) | 9 | org.apache.logging.log4j.core.net.JMSQueueManager.getJMSQueueManager (String,String,String,String,String,String,String,String,String) |
JMSTopicManager$FactoryData(String,String,String,String,String,String ,String,String,String) | 9 | org.apache.logging.log4j.core.net.JMSTopicManager$FactoryData .JMSTopicManager$FactoryData(String,String,String,String,String,String ,String,String,String) |
getJMSTopicManager(String,String,String,String,String,String,String ,String,String) | 9 | org.apache.logging.log4j.core.net.JMSTopicManager.getJMSTopicManager (String,String,String,String,String,String,String,String,String) |
TCPSocketManager(String,OutputStream,Socket,InetAddress,String,int,int ,boolean,Layout) | 9 | org.apache.logging.log4j.core.net.TCPSocketManager.TCPSocketManager (String,OutputStream,Socket,InetAddress,String,int,int,boolean,Layout) |
getContext(String,ClassLoader,Object,boolean) | 8 | org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext (String,ClassLoader,Object,boolean) |
FileAppender(String,Layout,Filter,FileManager,String,boolean,boolean ,Advertiser) | 8 | org.apache.logging.log4j.core.appender.FileAppender.FileAppender (String,Layout,Filter,FileManager,String,boolean,boolean,Advertiser) |
RandomAccessFileAppender(String,Layout,Filter,RandomAccessFileManager ,String,boolean,boolean,Advertiser) | 8 | org.apache.logging.log4j.core.appender.RandomAccessFileAppender .RandomAccessFileAppender(String,Layout,Filter,RandomAccessFileManager ,String,boolean,boolean,Advertiser) |
createNoSQLProvider(String,String,String,String,String,String,String ,String) | 8 | org.apache.logging.log4j.core.appender.db.nosql.couchdb .CouchDBProvider.createNoSQLProvider(String,String,String,String ,String,String,String,String) |
getFileManager(String,String,boolean,boolean,TriggeringPolicy ,RolloverStrategy,String,Layout) | 8 | org.apache.logging.log4j.core.appender.rolling.RollingFileManager .getFileManager(String,String,boolean,boolean,TriggeringPolicy ,RolloverStrategy,String,Layout) |
getRollingRandomAccessFileManager(String,String,boolean,boolean ,TriggeringPolicy,RolloverStrategy,String,Layout) | 8 | org.apache.logging.log4j.core.appender.rolling .RollingRandomAccessFileManager.getRollingRandomAccessFileManager (String,String,boolean,boolean,TriggeringPolicy,RolloverStrategy ,String,Layout) |
AsyncLoggerConfig(String,List,Filter,Level,boolean,Property[] ,Configuration,boolean) | 8 | org.apache.logging.log4j.core.async.AsyncLoggerConfig .AsyncLoggerConfig(String,List,Filter,Level,boolean,Property[] ,Configuration,boolean) |
createLogger(String,String,String,String,AppenderRef[],Property[] ,Configuration,Filter) | 8 | org.apache.logging.log4j.core.async.AsyncLoggerConfig.createLogger (String,String,String,String,AppenderRef[],Property[],Configuration ,Filter) |
LoggerConfig(String,List,Filter,Level,boolean,Property[],Configuration ,boolean) | 8 | org.apache.logging.log4j.core.config.LoggerConfig.LoggerConfig(String ,List,Filter,Level,boolean,Property[],Configuration,boolean) |
createLogger(String,String,String,String,AppenderRef[],Property[] ,Configuration,Filter) | 8 | org.apache.logging.log4j.core.config.LoggerConfig.createLogger(String ,String,String,String,AppenderRef[],Property[],Configuration,Filter) |
FlumePersistentManager$BDBWriter(byte[],byte[],Environment,Database ,FlumePersistentManager$Gate,AtomicLong,long,int) | 8 | org.apache.logging.log4j.flume.appender .FlumePersistentManager$BDBWriter.FlumePersistentManager$BDBWriter (byte[],byte[],Environment,Database,FlumePersistentManager$Gate ,AtomicLong,long,int) |
FlumePersistentManager$WriterThread(Database,Environment ,FlumePersistentManager,FlumePersistentManager$Gate,int,SecretKey ,AtomicLong,int) | 8 | org.apache.logging.log4j.flume.appender .FlumePersistentManager$WriterThread .FlumePersistentManager$WriterThread(Database,Environment ,FlumePersistentManager,FlumePersistentManager$Gate,int,SecretKey ,AtomicLong,int) |
createEvent(String,Marker,String,Level,Message,List,Throwable) | 7 | org.apache.logging.log4j.core.LogEventFactoryTest$TestLogEventFactory .createEvent(String,Marker,String,Level,Message,List,Throwable) |
createEvent(String,Marker,String,Level,Message,List,Throwable) | 7 | org.apache.logging.log4j.core.impl.DefaultLogEventFactory.createEvent (String,Marker,String,Level,Message,List,Throwable) |
Log4jLogEvent(String,Marker,String,Level,Message,List,Throwable) | 7 | org.apache.logging.log4j.core.impl.Log4jLogEvent.Log4jLogEvent(String ,Marker,String,Level,Message,List,Throwable) |
createEvent(String,Marker,String,Level,Message,List,Throwable) | 7 | org.apache.logging.log4j.core.impl.LogEventFactory.createEvent(String ,Marker,String,Level,Message,List,Throwable) |
HTMLLayout(boolean,String,String,Charset,String,String,String) | 7 | org.apache.logging.log4j.core.layout.HTMLLayout.HTMLLayout(boolean ,String,String,Charset,String,String,String) |
FailoverAppender(String,Filter,String,String[],int,Configuration ,boolean) | 7 | org.apache.logging.log4j.core.appender.FailoverAppender .FailoverAppender(String,Filter,String,String[],int,Configuration ,boolean) |
createAppender(String,String,String[],String,Configuration,Filter ,String) | 7 | org.apache.logging.log4j.core.appender.FailoverAppender.createAppender (String,String,String[],String,Configuration,Filter,String) |
getFileManager(String,boolean,boolean,boolean,String,Layout,int) | 7 | org.apache.logging.log4j.core.appender.FileManager.getFileManager (String,boolean,boolean,boolean,String,Layout,int) |
RandomAccessFileManager(RandomAccessFile,String,OutputStream,boolean ,int,String,Layout) | 7 | org.apache.logging.log4j.core.appender.RandomAccessFileManager .RandomAccessFileManager(RandomAccessFile,String,OutputStream,boolean ,int,String,Layout) |
SocketAppender(String,Layout,Filter,AbstractSocketManager,boolean ,boolean,Advertiser) | 7 | org.apache.logging.log4j.core.appender.SocketAppender.SocketAppender (String,Layout,Filter,AbstractSocketManager,boolean,boolean,Advertiser ) |
SyslogAppender(String,Layout,Filter,boolean,boolean ,AbstractSocketManager,Advertiser) | 7 | org.apache.logging.log4j.core.appender.SyslogAppender.SyslogAppender (String,Layout,Filter,boolean,boolean,AbstractSocketManager,Advertiser ) |
TLSSyslogAppender(String,Layout,Filter,boolean,boolean ,AbstractSocketManager,Advertiser) | 7 | org.apache.logging.log4j.core.appender.TLSSyslogAppender .TLSSyslogAppender(String,Layout,Filter,boolean,boolean ,AbstractSocketManager,Advertiser) |
createColumnConfig(Configuration,String,String,String,String,String ,String) | 7 | org.apache.logging.log4j.core.appender.db.jdbc.ColumnConfig .createColumnConfig(Configuration,String,String,String,String,String ,String) |
createAppender(String,String,Filter,ConnectionSource,String,String ,ColumnConfig[]) | 7 | org.apache.logging.log4j.core.appender.db.jdbc.JDBCAppender .createAppender(String,String,Filter,ConnectionSource,String,String ,ColumnConfig[]) |
RollingFileManager$FactoryData(String,boolean,boolean,TriggeringPolicy ,RolloverStrategy,String,Layout) | 7 | org.apache.logging.log4j.core.appender.rolling .RollingFileManager$FactoryData.RollingFileManager$FactoryData(String ,boolean,boolean,TriggeringPolicy,RolloverStrategy,String,Layout) |
RollingRandomAccessFileManager$FactoryData(String,boolean,boolean ,TriggeringPolicy,RolloverStrategy,String,Layout) | 7 | org.apache.logging.log4j.core.appender.rolling .RollingRandomAccessFileManager$FactoryData .RollingRandomAccessFileManager$FactoryData(String,boolean,boolean ,TriggeringPolicy,RolloverStrategy,String,Layout) |
createLogger(String,String,String,AppenderRef[],Property[] ,Configuration,Filter) | 7 | org.apache.logging.log4j.core.async.AsyncLoggerConfig$RootLogger .createLogger(String,String,String,AppenderRef[],Property[] ,Configuration,Filter) |
PerfTestDriver$Setup(Class,String,String,String,int ,PerfTestDriver$WaitStrategy,String[]) | 7 | org.apache.logging.log4j.core.async.perftest.PerfTestDriver$Setup .PerfTestDriver$Setup(Class,String,String,String,int ,PerfTestDriver$WaitStrategy,String[]) |
createLogger(String,String,String,AppenderRef[],Property[] ,Configuration,Filter) | 7 | org.apache.logging.log4j.core.config.LoggerConfig$RootLogger .createLogger(String,String,String,AppenderRef[],Property[] ,Configuration,Filter) |
JMSQueueManager(String,Context,String,String,String,String ,JMSQueueManager$QueueInfo) | 7 | org.apache.logging.log4j.core.net.JMSQueueManager.JMSQueueManager (String,Context,String,String,String,String,JMSQueueManager$QueueInfo) |
JMSTopicManager(String,Context,String,String,String,String ,JMSTopicManager$TopicInfo) | 7 | org.apache.logging.log4j.core.net.JMSTopicManager.JMSTopicManager (String,Context,String,String,String,String,JMSTopicManager$TopicInfo) |
createEvent(LogEvent,String,String,String,String,String,boolean) | 7 | org.apache.logging.log4j.flume.appender.FlumeAppender.createEvent (LogEvent,String,String,String,String,String,boolean) |
FlumeAvroManager(String,String,Agent[],int,int,int,int) | 7 | org.apache.logging.log4j.flume.appender.FlumeAvroManager .FlumeAvroManager(String,String,Agent[],int,int,int,int) |
FlumeEvent(LogEvent,String,String,String,String,String,boolean) | 7 | org.apache.logging.log4j.flume.appender.FlumeEvent.FlumeEvent(LogEvent ,String,String,String,String,String,boolean) |
createEvent(LogEvent,String,String,String,String,String,boolean) | 7 | org.apache.logging.log4j.flume.appender.FlumeEventFactory.createEvent (LogEvent,String,String,String,String,String,boolean) |
getContext(String,ClassLoader,Object,boolean,URI,String) | 6 | org.apache.logging.log4j.TestLoggerContextFactory.getContext(String ,ClassLoader,Object,boolean,URI,String) |
getContext(String,ClassLoader,Object,boolean,URI,String) | 6 | org.apache.logging.log4j.simple.SimpleLoggerContextFactory.getContext (String,ClassLoader,Object,boolean,URI,String) |
getContext(String,ClassLoader,Object,boolean,URI,String) | 6 | org.apache.logging.log4j.spi.LoggerContextFactory.getContext(String ,ClassLoader,Object,boolean,URI,String) |
printf(Locale,String,Object[]) | 6 | org.apache.logging.log4j.spi.LoggerStream.printf(Locale,String ,Object[]) |
format(Locale,String,Object[]) | 6 | org.apache.logging.log4j.spi.LoggerStream.format(Locale,String ,Object[]) |
Log4jLogEvent(String,Marker,String,Level,Message,Throwable) | 6 | org.apache.logging.log4j.core.impl.Log4jLogEvent.Log4jLogEvent(String ,Marker,String,Level,Message,Throwable) |
createLayout(String,String,String,String,String,String) | 6 | org.apache.logging.log4j.core.layout.HTMLLayout.createLayout(String ,String,String,String,String,String) |
PatternLayout(Configuration,RegexReplacement,String,Charset,boolean ,boolean) | 6 | org.apache.logging.log4j.core.layout.PatternLayout.PatternLayout (Configuration,RegexReplacement,String,Charset,boolean,boolean) |
createLayout(String,Configuration,RegexReplacement,String,String ,String) | 6 | org.apache.logging.log4j.core.layout.PatternLayout.createLayout(String ,Configuration,RegexReplacement,String,String,String) |
XMLLayout(boolean,boolean,boolean,boolean,String,Charset) | 6 | org.apache.logging.log4j.core.layout.XMLLayout.XMLLayout(boolean ,boolean,boolean,boolean,String,Charset) |
createLayout(String,String,String,String,String,String) | 6 | org.apache.logging.log4j.core.layout.XMLLayout.createLayout(String ,String,String,String,String,String) |
AbstractOutputStreamAppender<M>(String,Layout,Filter,boolean,boolean ,OutputStreamManager) | 6 | org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender .AbstractOutputStreamAppender<M>(String,Layout,Filter,boolean,boolean ,OutputStreamManager) |
createAppender(Layout,Filter,String,String,String,String) | 6 | org.apache.logging.log4j.core.appender.ConsoleAppender.createAppender (Layout,Filter,String,String,String,String) |
FileManager$FactoryData(boolean,boolean,boolean,int,String,Layout) | 6 | org.apache.logging.log4j.core.appender.FileManager$FactoryData .FileManager$FactoryData(boolean,boolean,boolean,int,String,Layout) |
FileManager(String,OutputStream,boolean,boolean,String,Layout) | 6 | org.apache.logging.log4j.core.appender.FileManager.FileManager(String ,OutputStream,boolean,boolean,String,Layout) |
getFileManager(String,boolean,boolean,int,String,Layout) | 6 | org.apache.logging.log4j.core.appender.RandomAccessFileManager .getFileManager(String,boolean,boolean,int,String,Layout) |
createSocketManager(Protocol,String,int,int,boolean,Layout) | 6 | org.apache.logging.log4j.core.appender.SocketAppender .createSocketManager(Protocol,String,int,int,boolean,Layout) |
createSocketManager(SSLConfiguration,String,int,int,boolean,Layout) | 6 | org.apache.logging.log4j.core.appender.TLSSyslogAppender .createSocketManager(SSLConfiguration,String,int,int,boolean,Layout) |
RewriteAppender(String,Filter,boolean,AppenderRef[],RewritePolicy ,Configuration) | 6 | org.apache.logging.log4j.core.appender.rewrite.RewriteAppender .RewriteAppender(String,Filter,boolean,AppenderRef[],RewritePolicy ,Configuration) |
createAppender(String,String,AppenderRef[],Configuration,RewritePolicy ,Filter) | 6 | org.apache.logging.log4j.core.appender.rewrite.RewriteAppender .createAppender(String,String,AppenderRef[],Configuration ,RewritePolicy,Filter) |
Statistics
Stat | # Parameters |
---|---|
Sum: | 1 041 |
Average: | 8.75 |
Minimum: | 6 |
Maximum: | 29 |
Standard deviation: | 3.99 |
Variance: | 15.92 |
![]() | Rule warning: Methods with too many local variables |
warnif count > 0 from m in JustMyCode.Methods where
m.NbVariables > 15
orderby m.NbVariables descending
select new { m, m.NbVariables }
// Methods where NbVariables > 8 are hard to understand and maintain.
// Methods where NbVariables > 15 are extremely complex
// and should be split in smaller methods.
// See the definition of the Nbvariables metric here
// http://www.jarchitect.com/Metrics#Nbvariables
34 methods matched
methods | # Variables | Full Name |
---|---|---|
createPluginObject(PluginType,Node,LogEvent)<T> | 68 | org.apache.logging.log4j.core.config.BaseConfiguration .createPluginObject(PluginType,Node,LogEvent)<T> |
XMLConfiguration(ConfigurationFactory$ConfigurationSource) | 41 | org.apache.logging.log4j.core.config.XMLConfiguration.XMLConfiguration (ConfigurationFactory$ConfigurationSource) |
UUIDUtil() | 30 | org.apache.logging.log4j.core.helpers.UUIDUtil.UUIDUtil() |
JSONConfiguration(ConfigurationFactory$ConfigurationSource) | 29 | org.apache.logging.log4j.core.config.JSONConfiguration .JSONConfiguration(ConfigurationFactory$ConfigurationSource) |
collectPlugins(boolean,String) | 28 | org.apache.logging.log4j.core.config.plugins.PluginManager .collectPlugins(boolean,String) |
run() | 28 | org.apache.logging.log4j.flume.appender .FlumePersistentManager$WriterThread.run() |
recursiveDeepToString(Object,StringBuilder,Set) | 26 | org.apache.logging.log4j.message.ParameterizedMessage .recursiveDeepToString(Object,StringBuilder,Set) |
testWriteInternal03() | 26 | org.apache.logging.log4j.core.appender.db.nosql .NoSQLDatabaseManagerTest.testWriteInternal03() |
createNoSQLProvider(String,String,String,String,String,String,String ,String,String,String) | 24 | org.apache.logging.log4j.core.appender.db.nosql.mongo.MongoDBProvider .createNoSQLProvider(String,String,String,String,String,String,String ,String,String,String) |
createManager(String,FlumePersistentManager$FactoryData) | 24 | org.apache.logging.log4j.flume.appender .FlumePersistentManager$BDBManagerFactory.createManager(String ,FlumePersistentManager$FactoryData) |
sendBatch(DatabaseEntry,DatabaseEntry) | 24 | org.apache.logging.log4j.flume.appender .FlumePersistentManager$WriterThread.sendBatch(DatabaseEntry ,DatabaseEntry) |
FlumeEvent(LogEvent,String,String,String,String,String,boolean) | 22 | org.apache.logging.log4j.flume.appender.FlumeEvent.FlumeEvent(LogEvent ,String,String,String,String,String,boolean) |
main(String[]) | 21 | org.apache.logging.log4j.core.async.perftest.PerfTestDriver.main (String[]) |
getConfiguration(String,URI) | 21 | org.apache.logging.log4j.core.config.ConfigurationFactory$Factory .getConfiguration(String,URI) |
createConverter(String,StringBuilder,Map,List,boolean) | 20 | org.apache.logging.log4j.core.pattern.PatternParser.createConverter (String,StringBuilder,Map,List,boolean) |
decode(ClassLoader) | 20 | org.apache.logging.log4j.core.config.plugins.PluginManager.decode (ClassLoader) |
toSerializable(LogEvent) | 19 | org.apache.logging.log4j.core.layout.JSONLayout.toSerializable (LogEvent) |
substitute(LogEvent,StringBuilder,int,int,List) | 19 | org.apache.logging.log4j.core.lookup.StrSubstitutor.substitute (LogEvent,StringBuilder,int,int,List) |
constructNode(String,Node,JsonNode) | 19 | org.apache.logging.log4j.core.config.JSONConfiguration.constructNode (String,Node,JsonNode) |
RFC5424Layout(Configuration,Facility,String,int,boolean,boolean,String ,String,String,String,String,String,String,String,String,Charset ,String,boolean,LoggerFields[]) | 18 | org.apache.logging.log4j.core.layout.RFC5424Layout.RFC5424Layout (Configuration,Facility,String,int,boolean,boolean,String,String ,String,String,String,String,String,String,String,Charset,String ,boolean,LoggerFields[]) |
appendStructuredElements(StringBuilder,LogEvent) | 18 | org.apache.logging.log4j.core.layout.RFC5424Layout .appendStructuredElements(StringBuilder,LogEvent) |
toSerializable(LogEvent) | 18 | org.apache.logging.log4j.core.layout.XMLLayout.toSerializable(LogEvent ) |
testWriteInternal02() | 18 | org.apache.logging.log4j.core.appender.db.nosql .NoSQLDatabaseManagerTest.testWriteInternal02() |
multiThreadedTestRun(IPerfTestRunner,String,int,String) | 18 | org.apache.logging.log4j.core.async.perftest.MTPerfTest .multiThreadedTestRun(IPerfTestRunner,String,int,String) |
createProperties(String,Agent[],Property[],int,String) | 18 | org.apache.logging.log4j.flume.appender .FlumeEmbeddedManager$FlumeManagerFactory.createProperties(String ,Agent[],Property[],int,String) |
LogManager() | 17 | org.apache.logging.log4j.LogManager.LogManager() |
testThreads() | 17 | org.apache.logging.log4j.FilterPerformanceComparison.testThreads() |
newInstance(String[]) | 17 | org.apache.logging.log4j.core.impl.ThrowableFormatOptions.newInstance (String[]) |
newInstance(String[]) | 17 | org.apache.logging.log4j.core.pattern.LevelPatternConverter .newInstance(String[]) |
getContext(String,ClassLoader,boolean,URI) | 16 | org.apache.logging.log4j.core.selector.ClassLoaderContextSelector .getContext(String,ClassLoader,boolean,URI) |
createNoSQLProvider(String,String,String,String,String,String,String ,String) | 16 | org.apache.logging.log4j.core.appender.db.nosql.couchdb .CouchDBProvider.createNoSQLProvider(String,String,String,String ,String,String,String,String) |
advertise(Map) | 16 | org.apache.logging.log4j.core.net.MulticastDNSAdvertiser.advertise(Map ) |
createAppender(Agent[],Property[],String,String,String,String,String ,String,String,String,String,String,String,String,String,String,String ,String,String,FlumeEventFactory,Layout,Filter) | 16 | org.apache.logging.log4j.flume.appender.FlumeAppender.createAppender (Agent[],Property[],String,String,String,String,String,String,String ,String,String,String,String,String,String,String,String,String,String ,FlumeEventFactory,Layout,Filter) |
testFailover() | 16 | org.apache.logging.log4j.flume.appender.FlumePersistentAppenderTest .testFailover() |
Statistics
Stat | # Variables |
---|---|
Sum: | 765 |
Average: | 22.5 |
Minimum: | 16 |
Maximum: | 68 |
Standard deviation: | 9.56 |
Variance: | 91.49 |
![]() | Rule warning: Methods with too many overloads |
warnif count > 0 from m in JustMyCode.Methods where
m.NbOverloads > 6
orderby m.NbOverloads descending
select new { m, m.NbOverloads }
// Methods where NbOverloads > 6 might
// be a problem to maintain and provoke higher coupling
// than necessary.
// This might also reveal a potential misused of the
// C# and VB.NET language that since C#3 and VB9 support
// object initialization. This feature helps reducing the number
// of constructors of a class.
// See the definition of the NbOverloads metric here
// http://www.jarchitect.com/Metrics#NbOverloads
352 methods matched
methods | # Overloads | Full Name |
---|---|---|
replace(Object,Map) | 21 | org.apache.logging.log4j.core.lookup.StrSubstitutor.replace(Object,Map ) |
replace(Object,Map,String,String) | 21 | org.apache.logging.log4j.core.lookup.StrSubstitutor.replace(Object,Map ,String,String) |
replace(Object,Properties) | 21 | org.apache.logging.log4j.core.lookup.StrSubstitutor.replace(Object ,Properties) |
replace(String) | 21 | org.apache.logging.log4j.core.lookup.StrSubstitutor.replace(String) |
replace(LogEvent,String) | 21 | org.apache.logging.log4j.core.lookup.StrSubstitutor.replace(LogEvent ,String) |
replace(String,int,int) | 21 | org.apache.logging.log4j.core.lookup.StrSubstitutor.replace(String,int ,int) |
replace(LogEvent,String,int,int) | 21 | org.apache.logging.log4j.core.lookup.StrSubstitutor.replace(LogEvent ,String,int,int) |
replace(char[]) | 21 | org.apache.logging.log4j.core.lookup.StrSubstitutor.replace(char[]) |
replace(LogEvent,char[]) | 21 | org.apache.logging.log4j.core.lookup.StrSubstitutor.replace(LogEvent ,char[]) |
replace(char[],int,int) | 21 | org.apache.logging.log4j.core.lookup.StrSubstitutor.replace(char[],int ,int) |
replace(LogEvent,char[],int,int) | 21 | org.apache.logging.log4j.core.lookup.StrSubstitutor.replace(LogEvent ,char[],int,int) |
replace(StringBuffer) | 21 | org.apache.logging.log4j.core.lookup.StrSubstitutor.replace (StringBuffer) |
replace(LogEvent,StringBuffer) | 21 | org.apache.logging.log4j.core.lookup.StrSubstitutor.replace(LogEvent ,StringBuffer) |
replace(StringBuffer,int,int) | 21 | org.apache.logging.log4j.core.lookup.StrSubstitutor.replace (StringBuffer,int,int) |
replace(LogEvent,StringBuffer,int,int) | 21 | org.apache.logging.log4j.core.lookup.StrSubstitutor.replace(LogEvent ,StringBuffer,int,int) |
replace(StringBuilder) | 21 | org.apache.logging.log4j.core.lookup.StrSubstitutor.replace (StringBuilder) |
replace(LogEvent,StringBuilder) | 21 | org.apache.logging.log4j.core.lookup.StrSubstitutor.replace(LogEvent ,StringBuilder) |
replace(StringBuilder,int,int) | 21 | org.apache.logging.log4j.core.lookup.StrSubstitutor.replace (StringBuilder,int,int) |
replace(LogEvent,StringBuilder,int,int) | 21 | org.apache.logging.log4j.core.lookup.StrSubstitutor.replace(LogEvent ,StringBuilder,int,int) |
replace(Object) | 21 | org.apache.logging.log4j.core.lookup.StrSubstitutor.replace(Object) |
replace(LogEvent,Object) | 21 | org.apache.logging.log4j.core.lookup.StrSubstitutor.replace(LogEvent ,Object) |
LocalizedMessage(String,Object[]) | 18 | org.apache.logging.log4j.message.LocalizedMessage.LocalizedMessage (String,Object[]) |
LocalizedMessage(String,String,Object[]) | 18 | org.apache.logging.log4j.message.LocalizedMessage.LocalizedMessage (String,String,Object[]) |
LocalizedMessage(ResourceBundle,String,Object[]) | 18 | org.apache.logging.log4j.message.LocalizedMessage.LocalizedMessage (ResourceBundle,String,Object[]) |
LocalizedMessage(String,Locale,String,Object[]) | 18 | org.apache.logging.log4j.message.LocalizedMessage.LocalizedMessage (String,Locale,String,Object[]) |
LocalizedMessage(ResourceBundle,Locale,String,Object[]) | 18 | org.apache.logging.log4j.message.LocalizedMessage.LocalizedMessage (ResourceBundle,Locale,String,Object[]) |
LocalizedMessage(Locale,String,Object[]) | 18 | org.apache.logging.log4j.message.LocalizedMessage.LocalizedMessage (Locale,String,Object[]) |
LocalizedMessage(String,Object) | 18 | org.apache.logging.log4j.message.LocalizedMessage.LocalizedMessage (String,Object) |
LocalizedMessage(String,String,Object) | 18 | org.apache.logging.log4j.message.LocalizedMessage.LocalizedMessage (String,String,Object) |
LocalizedMessage(ResourceBundle,String,Object) | 18 | org.apache.logging.log4j.message.LocalizedMessage.LocalizedMessage (ResourceBundle,String,Object) |
LocalizedMessage(String,Locale,String,Object) | 18 | org.apache.logging.log4j.message.LocalizedMessage.LocalizedMessage (String,Locale,String,Object) |
LocalizedMessage(ResourceBundle,Locale,String,Object) | 18 | org.apache.logging.log4j.message.LocalizedMessage.LocalizedMessage (ResourceBundle,Locale,String,Object) |
LocalizedMessage(Locale,String,Object) | 18 | org.apache.logging.log4j.message.LocalizedMessage.LocalizedMessage (Locale,String,Object) |
LocalizedMessage(String,Object,Object) | 18 | org.apache.logging.log4j.message.LocalizedMessage.LocalizedMessage (String,Object,Object) |
LocalizedMessage(String,String,Object,Object) | 18 | org.apache.logging.log4j.message.LocalizedMessage.LocalizedMessage (String,String,Object,Object) |
LocalizedMessage(ResourceBundle,String,Object,Object) | 18 | org.apache.logging.log4j.message.LocalizedMessage.LocalizedMessage (ResourceBundle,String,Object,Object) |
LocalizedMessage(String,Locale,String,Object,Object) | 18 | org.apache.logging.log4j.message.LocalizedMessage.LocalizedMessage (String,Locale,String,Object,Object) |
LocalizedMessage(ResourceBundle,Locale,String,Object,Object) | 18 | org.apache.logging.log4j.message.LocalizedMessage.LocalizedMessage (ResourceBundle,Locale,String,Object,Object) |
LocalizedMessage(Locale,String,Object,Object) | 18 | org.apache.logging.log4j.message.LocalizedMessage.LocalizedMessage (Locale,String,Object,Object) |
log(Level,Marker,Message) | 15 | org.apache.logging.log4j.spi.AbstractLogger.log(Level,Marker,Message) |
log(Level,Marker,Message,Throwable) | 15 | org.apache.logging.log4j.spi.AbstractLogger.log(Level,Marker,Message ,Throwable) |
log(Level,Marker,Object) | 15 | org.apache.logging.log4j.spi.AbstractLogger.log(Level,Marker,Object) |
log(Level,Marker,Object,Throwable) | 15 | org.apache.logging.log4j.spi.AbstractLogger.log(Level,Marker,Object ,Throwable) |
log(Level,Marker,String) | 15 | org.apache.logging.log4j.spi.AbstractLogger.log(Level,Marker,String) |
log(Level,Marker,String,Object[]) | 15 | org.apache.logging.log4j.spi.AbstractLogger.log(Level,Marker,String ,Object[]) |
log(Level,Marker,String,Throwable) | 15 | org.apache.logging.log4j.spi.AbstractLogger.log(Level,Marker,String ,Throwable) |
log(Level,Message) | 15 | org.apache.logging.log4j.spi.AbstractLogger.log(Level,Message) |
log(Level,Message,Throwable) | 15 | org.apache.logging.log4j.spi.AbstractLogger.log(Level,Message ,Throwable) |
log(Level,Object) | 15 | org.apache.logging.log4j.spi.AbstractLogger.log(Level,Object) |
log(Level,Object,Throwable) | 15 | org.apache.logging.log4j.spi.AbstractLogger.log(Level,Object,Throwable ) |
log(Level,String) | 15 | org.apache.logging.log4j.spi.AbstractLogger.log(Level,String) |
log(Level,String,Object[]) | 15 | org.apache.logging.log4j.spi.AbstractLogger.log(Level,String,Object[]) |
log(Level,String,Throwable) | 15 | org.apache.logging.log4j.spi.AbstractLogger.log(Level,String,Throwable ) |
log(Marker,String,Level,Message,Throwable) | 15 | org.apache.logging.log4j.spi.AbstractLogger.log(Marker,String,Level ,Message,Throwable) |
debug(Marker,Message) | 14 | org.apache.logging.log4j.Logger.debug(Marker,Message) |
debug(Marker,Message,Throwable) | 14 | org.apache.logging.log4j.Logger.debug(Marker,Message,Throwable) |
debug(Marker,Object) | 14 | org.apache.logging.log4j.Logger.debug(Marker,Object) |
debug(Marker,Object,Throwable) | 14 | org.apache.logging.log4j.Logger.debug(Marker,Object,Throwable) |
debug(Marker,String) | 14 | org.apache.logging.log4j.Logger.debug(Marker,String) |
debug(Marker,String,Object[]) | 14 | org.apache.logging.log4j.Logger.debug(Marker,String,Object[]) |
debug(Marker,String,Throwable) | 14 | org.apache.logging.log4j.Logger.debug(Marker,String,Throwable) |
debug(Message) | 14 | org.apache.logging.log4j.Logger.debug(Message) |
debug(Message,Throwable) | 14 | org.apache.logging.log4j.Logger.debug(Message,Throwable) |
debug(Object) | 14 | org.apache.logging.log4j.Logger.debug(Object) |
debug(Object,Throwable) | 14 | org.apache.logging.log4j.Logger.debug(Object,Throwable) |
debug(String) | 14 | org.apache.logging.log4j.Logger.debug(String) |
debug(String,Object[]) | 14 | org.apache.logging.log4j.Logger.debug(String,Object[]) |
debug(String,Throwable) | 14 | org.apache.logging.log4j.Logger.debug(String,Throwable) |
error(Marker,Message) | 14 | org.apache.logging.log4j.Logger.error(Marker,Message) |
error(Marker,Message,Throwable) | 14 | org.apache.logging.log4j.Logger.error(Marker,Message,Throwable) |
error(Marker,Object) | 14 | org.apache.logging.log4j.Logger.error(Marker,Object) |
error(Marker,Object,Throwable) | 14 | org.apache.logging.log4j.Logger.error(Marker,Object,Throwable) |
error(Marker,String) | 14 | org.apache.logging.log4j.Logger.error(Marker,String) |
error(Marker,String,Object[]) | 14 | org.apache.logging.log4j.Logger.error(Marker,String,Object[]) |
error(Marker,String,Throwable) | 14 | org.apache.logging.log4j.Logger.error(Marker,String,Throwable) |
error(Message) | 14 | org.apache.logging.log4j.Logger.error(Message) |
error(Message,Throwable) | 14 | org.apache.logging.log4j.Logger.error(Message,Throwable) |
error(Object) | 14 | org.apache.logging.log4j.Logger.error(Object) |
error(Object,Throwable) | 14 | org.apache.logging.log4j.Logger.error(Object,Throwable) |
error(String) | 14 | org.apache.logging.log4j.Logger.error(String) |
error(String,Object[]) | 14 | org.apache.logging.log4j.Logger.error(String,Object[]) |
error(String,Throwable) | 14 | org.apache.logging.log4j.Logger.error(String,Throwable) |
fatal(Marker,Message) | 14 | org.apache.logging.log4j.Logger.fatal(Marker,Message) |
fatal(Marker,Message,Throwable) | 14 | org.apache.logging.log4j.Logger.fatal(Marker,Message,Throwable) |
fatal(Marker,Object) | 14 | org.apache.logging.log4j.Logger.fatal(Marker,Object) |
fatal(Marker,Object,Throwable) | 14 | org.apache.logging.log4j.Logger.fatal(Marker,Object,Throwable) |
fatal(Marker,String) | 14 | org.apache.logging.log4j.Logger.fatal(Marker,String) |
fatal(Marker,String,Object[]) | 14 | org.apache.logging.log4j.Logger.fatal(Marker,String,Object[]) |
fatal(Marker,String,Throwable) | 14 | org.apache.logging.log4j.Logger.fatal(Marker,String,Throwable) |
fatal(Message) | 14 | org.apache.logging.log4j.Logger.fatal(Message) |
fatal(Message,Throwable) | 14 | org.apache.logging.log4j.Logger.fatal(Message,Throwable) |
fatal(Object) | 14 | org.apache.logging.log4j.Logger.fatal(Object) |
fatal(Object,Throwable) | 14 | org.apache.logging.log4j.Logger.fatal(Object,Throwable) |
fatal(String) | 14 | org.apache.logging.log4j.Logger.fatal(String) |
fatal(String,Object[]) | 14 | org.apache.logging.log4j.Logger.fatal(String,Object[]) |
fatal(String,Throwable) | 14 | org.apache.logging.log4j.Logger.fatal(String,Throwable) |
info(Marker,Message) | 14 | org.apache.logging.log4j.Logger.info(Marker,Message) |
info(Marker,Message,Throwable) | 14 | org.apache.logging.log4j.Logger.info(Marker,Message,Throwable) |
info(Marker,Object) | 14 | org.apache.logging.log4j.Logger.info(Marker,Object) |
info(Marker,Object,Throwable) | 14 | org.apache.logging.log4j.Logger.info(Marker,Object,Throwable) |
Statistics
Stat | # Overloads |
---|---|
Sum: | 4 592 |
Average: | 13.05 |
Minimum: | 7 |
Maximum: | 21 |
Standard deviation: | 3.36 |
Variance: | 11.26 |
![]() | Rule warning: Types with too many methods |
warnif count > 0 from t in JustMyCode.Types where
t.Methods.Count() > 20
orderby t.Methods.Count() descending
select new { t, t.InstanceMethods, t.StaticMethods }
// Types where Methods.Count() > 20 might be hard to
// understand and maintain
// but there might be cases where it is relevant
// to have a high number of methods.
// For example, the System.Windows.Forms.DataGridView
// standard class has more than 1000 methods.
26 types matched
types | InstanceMethods | StaticMethods | Full Name |
---|---|---|---|
AbstractLogger | 140 methods | 1 method | org.apache.logging.log4j.spi.AbstractLogger |
Logger | 126 methods | 0 method | org.apache.logging.log4j.Logger |
SLF4JLogger | 64 methods | 0 method | org.slf4j.impl.SLF4JLogger |
Category | 50 methods | 10 methods | org.apache.log4j.Category |
StrSubstitutor | 46 methods | 3 methods | org.apache.logging.log4j.core.lookup.StrSubstitutor |
BaseConfiguration | 39 methods | 0 method | org.apache.logging.log4j.core.config.BaseConfiguration |
LoggerTest | 37 methods | 0 method | org.apache.logging.log4j.LoggerTest |
ThrowableFormatOptionsTest | 35 methods | 1 method | org.apache.logging.log4j.core.impl.ThrowableFormatOptionsTest |
LoggerStream | 35 methods | 0 method | org.apache.logging.log4j.spi.LoggerStream |
Log4jLogEvent | 19 methods | 15 methods | org.apache.logging.log4j.core.impl.Log4jLogEvent |
FlumePersistentManager | 3 methods | 27 methods | org.apache.logging.log4j.flume.appender.FlumePersistentManager |
RFC5424Layout | 24 methods | 4 methods | org.apache.logging.log4j.core.layout.RFC5424Layout |
RequestContext | 0 method | 28 methods | org.apache.logging.log4j.samples.dto.RequestContext |
LoggerContext | 24 methods | 1 method | org.apache.logging.log4j.core.LoggerContext |
LoggerConfig | 23 methods | 2 methods | org.apache.logging.log4j.core.config.LoggerConfig |
LogManager | 0 method | 24 methods | org.apache.logging.log4j.LogManager |
MapMessage | 24 methods | 0 method | org.apache.logging.log4j.message.MapMessage |
Configuration | 24 methods | 0 method | org.apache.logging.log4j.core.config.Configuration |
ThrowableProxy | 23 methods | 0 method | org.apache.logging.log4j.core.impl.ThrowableProxy |
LevelTest | 23 methods | 0 method | org.apache.log4j.LevelTest |
LoggingMessageTagSupportTest | 21 methods | 2 methods | org.apache.logging.log4j.taglib.LoggingMessageTagSupportTest |
Level | 15 methods | 7 methods | org.apache.logging.log4j.Level |
DefaultThreadContextStack | 22 methods | 0 method | org.apache.logging.log4j.spi.DefaultThreadContextStack |
MutableThreadContextStack | 22 methods | 0 method | org.apache.logging.log4j.spi.MutableThreadContextStack |
Server | 0 method | 22 methods | org.apache.logging.log4j.core.jmx.Server |
PriorityTest | 21 methods | 0 method | org.apache.log4j.PriorityTest |
Statistics
Stat | InstanceMethods | StaticMethods |
---|---|---|
Sum: | 0 | 0 |
Average: | 0 | 0 |
Minimum: | 0 | 0 |
Maximum: | 0 | 0 |
Standard deviation: | 0 | 0 |
Variance: | 0 | 0 |
![]() | Rule warning: Types with too many fields |
warnif count > 0 from t in JustMyCode.Types where
t.Fields.Count() > 20 &&
!t.IsEnumeration
orderby t.Fields.Count() descending
select new { t, t.InstanceFields, t.StaticFields, t.SizeOfInst }
// Types where Fields.Count() > 20 and not IsEnumeration
// might be hard to understand and maintain
// but there might be cases where it is relevant
// to have a high number of fields.
// For example, the System.Windows.Forms.Control
// standard class has more than 200 fields.
3 types matched
types | InstanceFields | StaticFields | Size of instance | Full Name |
---|---|---|---|---|
RFC5424Layout | 24 fields | 11 fields | 108 | org.apache.logging.log4j.core.layout.RFC5424Layout |
SmtpActionType | 1 field | 28 fields | 4 | org.apache.logging.dumbster.smtp.SmtpActionType |
CachedDateFormat | 7 fields | 14 fields | 28 | org.apache.logging.log4j.core.pattern.CachedDateFormat |
Statistics
Stat | InstanceFields | StaticFields | Size of instance |
---|---|---|---|
Sum: | 0 | 0 | 140 |
Average: | 0 | 0 | 46.67 |
Minimum: | 0 | 0 | 4 |
Maximum: | 0 | 0 | 108 |
Standard deviation: | 0 | 0 | 44.46 |
Variance: | 0 | 0 | 1 976 |
![]() | Rule warning: Types with poor cohesion |
warnif count > 0 from t in JustMyCode.Types where
(t.LCOM > 0.8 || t.LCOMHS > 0.95) &&
t.NbFields > 10 &&
t.NbMethods >10
orderby t.LCOM descending, t.LCOMHS descending
select new { t, t.LCOM, t.LCOMHS,
t.NbMethods, t.NbFields }
// Types where LCOM > 0.8 and NbFields > 10
// and NbMethods >10 might be problematic.
// However, it is very hard to avoid such
// non-cohesive types. The LCOMHS metric
// is often considered as more efficient to
// detect non-cohesive types.
// See the definition of the LCOM metric here
// http://www.jarchitect.com/Metrics#LCOM
9 types matched
types | Lack of Cohesion Of Methods (LCOM) | LCOM Henderson-Sellers (LCOMHS) | # Methods | # Fields | Full Name |
---|---|---|---|---|---|
ConfigurationFactory | 0.93 | 1 | 16 | 12 | org.apache.logging.log4j.core.config.ConfigurationFactory |
RFC5424Layout | 0.91 | 0.95 | 30 | 35 | org.apache.logging.log4j.core.layout.RFC5424Layout |
Log4jLogEvent | 0.91 | 0.94 | 40 | 15 | org.apache.logging.log4j.core.impl.Log4jLogEvent |
BaseConfiguration | 0.91 | 0.93 | 41 | 19 | org.apache.logging.log4j.core.config.BaseConfiguration |
RingBufferLogEvent | 0.9 | 0.94 | 21 | 16 | org.apache.logging.log4j.core.async.RingBufferLogEvent |
LocalizedMessage | 0.85 | 0.88 | 27 | 11 | org.apache.logging.log4j.message.LocalizedMessage |
PerformanceComparison | 0.85 | 0.92 | 13 | 11 | org.apache.logging.log4j.PerformanceComparison |
LoggerConfig | 0.83 | 0.86 | 29 | 16 | org.apache.logging.log4j.core.config.LoggerConfig |
AsyncLoggerConfigHelper | 0.82 | 0.9 | 12 | 13 | org.apache.logging.log4j.core.async.AsyncLoggerConfigHelper |
Statistics
Stat | Lack of Cohesion Of Methods (LCOM) | LCOM Henderson-Sellers (LCOMHS) | # Methods | # Fields |
---|---|---|---|---|
Sum: | 7.9 | 8.32 | 229 | 148 |
Average: | 0.88 | 0.92 | 25.44 | 16.44 |
Minimum: | 0.82 | 0.86 | 12 | 11 |
Maximum: | 0.93 | 1 | 41 | 35 |
Standard deviation: | 0.04 | 0.039 | 10.19 | 7.03 |
Variance: | 0.0016 | 0.0016 | 103.8 | 49.36 |
Object Oriented Design | 060 |
|
![]() | Rule warning: Base class should not use derivatives |
warnif count > 0
from baseClass in JustMyCode.Types
where baseClass.IsClass && baseClass.NbChildren > 0 // <-- for optimization!
let derivedClassesUsed = baseClass.DerivedTypes.UsedBy(baseClass)
where derivedClassesUsed.Count() > 0
select new { baseClass, derivedClassesUsed }
6 types matched
types | derivedClassesUsed | Full Name |
---|---|---|
AbstractLogger | 1 type | org.apache.logging.log4j.spi.AbstractLogger |
StrMatcher | 5 types | org.apache.logging.log4j.core.lookup.StrMatcher |
NameAbbreviator | 3 types | org.apache.logging.log4j.core.pattern.NameAbbreviator |
ConfigurationFactory | 1 type | org.apache.logging.log4j.core.config.ConfigurationFactory |
Category | 1 type | org.apache.log4j.Category |
Priority | 1 type | org.apache.log4j.Priority |
Statistics
Stat | derivedClassesUsed |
---|---|
Sum: | 0 |
Average: | 0 |
Minimum: | 0 |
Maximum: | 0 |
Standard deviation: | 0 |
Variance: | 0 |
![]() | Rule warning: Class shouldn't be too deep in inheritance tree |
warnif count > 0 from t in JustMyCode.Types
where t.IsClass
let baseClasses = t.BaseClasses.ExceptThirdParty()
// Warn for classes with 3 or more base classes.
// Notice that we don't count third-party classes
// because this rule concerns your code design,
// not third-party libraries consumed design.
where baseClasses.Count() >= 3
select new { t, baseClasses,
// The metric value DepthOfInheritance takes account
// of third-party base classes
t.DepthOfInheritance }
// Branches too long in the derivation should be avoided.
// See the definition of the DepthOfInheritance metric here
// http://www.jarchitect.com/Metrics#DIT
40 types matched
types | baseClasses | Depth of inheritance | Full Name |
---|---|---|---|
AbstractStyleNameConverter$Black | 3 types | 4 | org.apache.logging.log4j.core.pattern.AbstractStyleNameConverter$Black |
AbstractStyleNameConverter$Blue | 3 types | 4 | org.apache.logging.log4j.core.pattern.AbstractStyleNameConverter$Blue |
AbstractStyleNameConverter$Cyan | 3 types | 4 | org.apache.logging.log4j.core.pattern.AbstractStyleNameConverter$Cyan |
AbstractStyleNameConverter$Green | 3 types | 4 | org.apache.logging.log4j.core.pattern.AbstractStyleNameConverter$Green |
AbstractStyleNameConverter$Magenta | 3 types | 4 | org.apache.logging.log4j.core.pattern .AbstractStyleNameConverter$Magenta |
AbstractStyleNameConverter$Red | 3 types | 4 | org.apache.logging.log4j.core.pattern.AbstractStyleNameConverter$Red |
AbstractStyleNameConverter$White | 3 types | 4 | org.apache.logging.log4j.core.pattern.AbstractStyleNameConverter$White |
AbstractStyleNameConverter$Yellow | 3 types | 4 | org.apache.logging.log4j.core.pattern .AbstractStyleNameConverter$Yellow |
ClassNamePatternConverter | 3 types | 4 | org.apache.logging.log4j.core.pattern.ClassNamePatternConverter |
ExtendedThrowablePatternConverter | 3 types | 4 | org.apache.logging.log4j.core.pattern .ExtendedThrowablePatternConverter |
LoggerPatternConverter | 3 types | 4 | org.apache.logging.log4j.core.pattern.LoggerPatternConverter |
RootThrowablePatternConverter | 3 types | 4 | org.apache.logging.log4j.core.pattern.RootThrowablePatternConverter |
ConsoleAppender | 3 types | 4 | org.apache.logging.log4j.core.appender.ConsoleAppender |
FileAppender | 3 types | 4 | org.apache.logging.log4j.core.appender.FileAppender |
RandomAccessFileAppender | 3 types | 4 | org.apache.logging.log4j.core.appender.RandomAccessFileAppender |
RollingFileAppender | 3 types | 4 | org.apache.logging.log4j.core.appender.RollingFileAppender |
RollingRandomAccessFileAppender | 3 types | 4 | org.apache.logging.log4j.core.appender.RollingRandomAccessFileAppender |
SocketAppender | 3 types | 4 | org.apache.logging.log4j.core.appender.SocketAppender |
SyslogAppender | 4 types | 5 | org.apache.logging.log4j.core.appender.SyslogAppender |
TLSSyslogAppender | 5 types | 6 | org.apache.logging.log4j.core.appender.TLSSyslogAppender |
AbstractDatabaseAppenderTest$LocalAbstractDatabaseAppender | 3 types | 4 | org.apache.logging.log4j.core.appender.db .AbstractDatabaseAppenderTest$LocalAbstractDatabaseAppender |
JDBCAppender | 3 types | 4 | org.apache.logging.log4j.core.appender.db.jdbc.JDBCAppender |
JPAAppender | 3 types | 4 | org.apache.logging.log4j.core.appender.db.jpa.JPAAppender |
NoSQLAppender | 3 types | 4 | org.apache.logging.log4j.core.appender.db.nosql.NoSQLAppender |
RollingFileManager | 3 types | 4 | org.apache.logging.log4j.core.appender.rolling.RollingFileManager |
RollingRandomAccessFileManager | 4 types | 5 | org.apache.logging.log4j.core.appender.rolling .RollingRandomAccessFileManager |
OnStartupTriggeringPolicyTest$MyRollingManager | 4 types | 5 | org.apache.logging.log4j.core.appender.rolling .OnStartupTriggeringPolicyTest$MyRollingManager |
DatagramSocketManager | 3 types | 4 | org.apache.logging.log4j.core.net.DatagramSocketManager |
TCPSocketManager | 3 types | 4 | org.apache.logging.log4j.core.net.TCPSocketManager |
TLSSocketManager | 4 types | 5 | org.apache.logging.log4j.core.net.TLSSocketManager |
InMemoryAppender | 3 types | 4 | org.apache.logging.log4j.test.appender.InMemoryAppender |
FlumePersistentManager | 3 types | 4 | org.apache.logging.log4j.flume.appender.FlumePersistentManager |
DebugTag | 3 types | 6 | org.apache.logging.log4j.taglib.DebugTag |
ErrorTag | 3 types | 6 | org.apache.logging.log4j.taglib.ErrorTag |
FatalTag | 3 types | 6 | org.apache.logging.log4j.taglib.FatalTag |
InfoTag | 3 types | 6 | org.apache.logging.log4j.taglib.InfoTag |
LogTag | 3 types | 6 | org.apache.logging.log4j.taglib.LogTag |
TraceTag | 3 types | 6 | org.apache.logging.log4j.taglib.TraceTag |
WarnTag | 3 types | 6 | org.apache.logging.log4j.taglib.WarnTag |
LoggingMessageTagSupportTest$1 | 3 types | 6 | org.apache.logging.log4j.taglib.LoggingMessageTagSupportTest$1 |
Statistics
Stat | baseClasses | Depth of inheritance |
---|---|---|
Sum: | 0 | 182 |
Average: | 0 | 4.55 |
Minimum: | 0 | 4 |
Maximum: | 0 | 6 |
Standard deviation: | 0 | 0.84 |
Variance: | 0 | 0.7 |
![]() | Rule warning: Class with no descendant should be final if possible |
warnif count > 0 from t in JustMyCode.Types where
t.IsClass &&
t.NbChildren ==0 &&
!t.IsFinal &&
!t.IsStatic
// && !t.IsPublic <-- You might want to add this condition
// if you are developping a framework
// with classes that are intended to be
// sub-classed by your clients.
orderby t.NbLinesOfCode descending
select new { t, t.NbLinesOfCode }
710 types matched
types | # lines of code (LOC) | Full Name |
---|---|---|
AbstractLoggerTest | 514 | org.apache.logging.log4j.AbstractLoggerTest |
NoSQLDatabaseManagerTest | 351 | org.apache.logging.log4j.core.appender.db.nosql .NoSQLDatabaseManagerTest |
RFC5424Layout | 280 | org.apache.logging.log4j.core.layout.RFC5424Layout |
Log4jWebInitializerImplTest | 266 | org.apache.logging.log4j.core.web.Log4jWebInitializerImplTest |
RFC5424LayoutTest | 241 | org.apache.logging.log4j.core.layout.RFC5424LayoutTest |
ParameterizedMessage | 224 | org.apache.logging.log4j.message.ParameterizedMessage |
DefaultThreadContextStackTest | 222 | org.apache.logging.log4j.spi.DefaultThreadContextStackTest |
MutableThreadContextStackTest | 222 | org.apache.logging.log4j.spi.MutableThreadContextStackTest |
LoggerTest | 221 | org.apache.log4j.LoggerTest |
TestConfigurator | 219 | org.apache.logging.log4j.core.config.TestConfigurator |
StrSubstitutor | 218 | org.apache.logging.log4j.core.lookup.StrSubstitutor |
ThrowableProxy | 211 | org.apache.logging.log4j.core.impl.ThrowableProxy |
FlumePersistentManager$WriterThread | 210 | org.apache.logging.log4j.flume.appender .FlumePersistentManager$WriterThread |
LoggerTest | 208 | org.apache.logging.log4j.LoggerTest |
FlumeAppenderTest | 199 | org.apache.logging.log4j.flume.appender.FlumeAppenderTest |
XMLConfiguration | 193 | org.apache.logging.log4j.core.config.XMLConfiguration |
FlumePersistentAppenderTest | 191 | org.apache.logging.log4j.flume.appender.FlumePersistentAppenderTest |
SLF4JLogger | 176 | org.slf4j.impl.SLF4JLogger |
JSONConfiguration | 173 | org.apache.logging.log4j.core.config.JSONConfiguration |
XMLLayout | 171 | org.apache.logging.log4j.core.layout.XMLLayout |
JSONLayout | 164 | org.apache.logging.log4j.core.layout.JSONLayout |
DebugDisabledPerformanceComparison | 151 | org.apache.logging.log4j.DebugDisabledPerformanceComparison |
AbstractDatabaseManagerTest | 146 | org.apache.logging.log4j.core.appender.db.AbstractDatabaseManagerTest |
DefaultRolloverStrategy | 145 | org.apache.logging.log4j.core.appender.rolling.DefaultRolloverStrategy |
LoggingMessageTagSupportTest | 139 | org.apache.logging.log4j.taglib.LoggingMessageTagSupportTest |
FlumeEmbeddedAppenderTest | 138 | org.apache.logging.log4j.flume.appender.FlumeEmbeddedAppenderTest |
LoggerTest | 132 | org.apache.logging.log4j.core.LoggerTest |
ResolverUtil | 131 | org.apache.logging.log4j.core.config.plugins.ResolverUtil |
PluginManager | 130 | org.apache.logging.log4j.core.config.plugins.PluginManager |
MulticastDNSAdvertiser | 121 | org.apache.logging.log4j.core.net.MulticastDNSAdvertiser |
FlumeEmbeddedAgentTest | 121 | org.apache.logging.log4j.flume.appender.FlumeEmbeddedAgentTest |
PatternProcessor | 119 | org.apache.logging.log4j.core.appender.rolling.PatternProcessor |
FileAppenderTest | 117 | org.apache.logging.log4j.core.appender.FileAppenderTest |
ThrowableAttributeConverter | 115 | org.apache.logging.log4j.core.appender.db.jpa.converter .ThrowableAttributeConverter |
ClassLoaderContextSelector | 113 | org.apache.logging.log4j.core.selector.ClassLoaderContextSelector |
SSLConfiguration | 113 | org.apache.logging.log4j.core.net.ssl.SSLConfiguration |
DefaultThreadContextStack | 110 | org.apache.logging.log4j.spi.DefaultThreadContextStack |
PatternProcessorTest | 109 | org.apache.logging.log4j.core.appender.rolling.PatternProcessorTest |
ThreadContextInheritanceTest | 108 | org.apache.logging.log4j.ThreadContextInheritanceTest |
SetLoggerTagTest | 104 | org.apache.logging.log4j.taglib.SetLoggerTagTest |
SmtpRequest | 102 | org.apache.logging.dumbster.smtp.SmtpRequest |
FlumePersistentManager | 102 | org.apache.logging.log4j.flume.appender.FlumePersistentManager |
SMTPManager | 101 | org.apache.logging.log4j.core.net.SMTPManager |
ThreadContextTest | 100 | org.apache.logging.log4j.ThreadContextTest |
ExtendedThreadInformation | 99 | org.apache.logging.log4j.message.ExtendedThreadInformation |
SimpleSmtpServer | 99 | org.apache.logging.dumbster.smtp.SimpleSmtpServer |
PerformanceComparison | 98 | org.apache.logging.log4j.PerformanceComparison |
ClientGUI | 98 | org.apache.logging.log4j.jmx.gui.ClientGUI |
DefaultThreadContextMapTest | 97 | org.apache.logging.log4j.spi.DefaultThreadContextMapTest |
Log4jLogEvent | 97 | org.apache.logging.log4j.core.impl.Log4jLogEvent |
Timer | 96 | org.apache.logging.log4j.Timer |
Timer | 96 | org.apache.logging.log4j.core.Timer |
DriverManagerConnectionSourceTest | 95 | org.apache.logging.log4j.core.appender.db.jdbc .DriverManagerConnectionSourceTest |
Log4jServletContainerInitializerTest | 94 | org.apache.logging.log4j.core.web.Log4jServletContainerInitializerTest |
LocalizedMessage | 93 | org.apache.logging.log4j.message.LocalizedMessage |
ColumnConfigTest | 92 | org.apache.logging.log4j.core.appender.db.jdbc.ColumnConfigTest |
PatternLayoutTest | 91 | org.apache.logging.log4j.core.layout.PatternLayoutTest |
SMTPAppenderTest | 91 | org.apache.logging.log4j.core.appender.SMTPAppenderTest |
LevelPatternConverterTest | 89 | org.apache.logging.log4j.core.pattern.LevelPatternConverterTest |
LoggerTest | 88 | org.apache.logging.slf4j.LoggerTest |
AsyncLogger | 87 | org.apache.logging.log4j.core.async.AsyncLogger |
SocketAppenderTest | 86 | org.apache.logging.log4j.core.appender.SocketAppenderTest |
FlumeEvent | 86 | org.apache.logging.log4j.flume.appender.FlumeEvent |
LoggerStreamTest | 85 | org.apache.logging.log4j.spi.LoggerStreamTest |
FlumePersistentPerf | 85 | org.apache.logging.log4j.flume.appender.FlumePersistentPerf |
PerfTestDriver | 84 | org.apache.logging.log4j.core.async.perftest.PerfTestDriver |
PerfTestResultFormatter | 84 | org.apache.logging.log4j.core.async.perftest.PerfTestResultFormatter |
ThrowablePatternConverterTest | 81 | org.apache.logging.log4j.core.pattern.ThrowablePatternConverterTest |
AsyncLoggerConfigHelper | 81 | org.apache.logging.log4j.core.async.AsyncLoggerConfigHelper |
CategoryTest | 80 | org.apache.log4j.CategoryTest |
LoggerContextAdmin | 77 | org.apache.logging.log4j.core.jmx.LoggerContextAdmin |
ListAppender | 77 | org.apache.logging.log4j.test.appender.ListAppender |
StrictXMLConfigTest | 76 | org.apache.logging.log4j.core.StrictXMLConfigTest |
Log4jServletFilterTest | 75 | org.apache.logging.log4j.core.web.Log4jServletFilterTest |
LevelTest | 75 | org.apache.log4j.LevelTest |
SimplePerfTest | 73 | org.apache.logging.log4j.core.SimplePerfTest |
MapRewritePolicyTest | 73 | org.apache.logging.log4j.core.appender.rewrite.MapRewritePolicyTest |
LoggerTest | 73 | org.apache.logging.slf4j.LoggerTest |
FilterPerformanceComparison | 72 | org.apache.logging.log4j.FilterPerformanceComparison |
RollingRandomAccessFileManagerTest | 72 | org.apache.logging.log4j.core.appender.rolling .RollingRandomAccessFileManagerTest |
XMLConfigurationTest | 71 | org.apache.logging.log4j.core.config.XMLConfigurationTest |
SLF4JLogger | 71 | org.apache.logging.slf4j.SLF4JLogger |
FlumeEmbeddedManager$FlumeManagerFactory | 71 | org.apache.logging.log4j.flume.appender .FlumeEmbeddedManager$FlumeManagerFactory |
BurstFilterTest | 70 | org.apache.logging.log4j.core.filter.BurstFilterTest |
FileRenameActionTest | 69 | org.apache.logging.log4j.core.appender.rolling.helper .FileRenameActionTest |
ConfigurationFactory$Factory | 68 | org.apache.logging.log4j.core.config.ConfigurationFactory$Factory |
LoggerAwareTagSupportTest | 67 | org.apache.logging.log4j.taglib.LoggerAwareTagSupportTest |
MessageFormatsPerfTest | 66 | org.apache.logging.log4j.message.MessageFormatsPerfTest |
ResolverUtilTest | 66 | org.apache.logging.log4j.core.config.plugins.ResolverUtilTest |
FormattedMessage | 65 | org.apache.logging.log4j.message.FormattedMessage |
AbstractDatabaseAppenderTest | 64 | org.apache.logging.log4j.core.appender.db.AbstractDatabaseAppenderTest |
SimpleLogger | 62 | org.apache.logging.log4j.simple.SimpleLogger |
PerformanceRun | 62 | org.apache.logging.log4j.PerformanceRun |
RingBufferLogEventTest | 62 | org.apache.logging.log4j.core.async.RingBufferLogEventTest |
PatternParserTest | 60 | org.apache.logging.log4j.core.pattern.PatternParserTest |
SocketReconnectTest | 60 | org.apache.logging.log4j.core.net.SocketReconnectTest |
Logger$PrivateConfig | 59 | org.apache.logging.log4j.core.Logger$PrivateConfig |
ThreadContextMapFilter | 59 | org.apache.logging.log4j.core.filter.ThreadContextMapFilter |
WebLookupTest | 59 | org.apache.logging.log4j.core.web.WebLookupTest |
AdvertiserTest | 58 | org.apache.logging.log4j.core.config.AdvertiserTest |
Statistics
Stat | # lines of code (LOC) |
---|---|
Sum: | 22 035 |
Average: | 31.04 |
Minimum: | 0 |
Maximum: | 514 |
Standard deviation: | 46.84 |
Variance: | 2 193 |
![]() | Rule warning: Avoid the Singleton pattern |
warnif count > 0
from t in Application.Types
where !t.IsStatic && !t.IsAbstract && t.IsClass
// All ctors of a singleton are private
where t.Constructors.Where(ctor => !ctor.IsPrivate).Count() == 0
// A singleton contains one static field of its parent type, to reference the unique instance
let staticFieldInstances = t.StaticFields.WithFieldType(t)
where staticFieldInstances.Count() == 1
select new { t, staticFieldInstance = staticFieldInstances.First() }
// The Singleton pattern consists in syntactically enforcing that a class
// has just one unique instance.
// At first glance, this pattern looks appealing and it is widely used.
// However, we discourage you from using singleton classes because experience
// shows that singletons often result in less testable and less maintainable code.
// More details available in these discussions:
// http://codebetter.com/patricksmacchia/2011/05/04/back-to-basics-usage-of-static-members/
// http://adamschepis.com/blog/2011/05/02/im-adam-and-im-a-recovering-singleton-addict/
17 types matched
types | staticFieldInstance | Full Name |
---|---|---|
StatusLogger | STATUS_LOGGER | org.apache.logging.log4j.status.StatusLogger |
CachedClock | instance | org.apache.logging.log4j.core.helpers.CachedClock |
CoarseCachedClock | instance | org.apache.logging.log4j.core.helpers.CoarseCachedClock |
FileLocationPatternConverter | INSTANCE | org.apache.logging.log4j.core.pattern.FileLocationPatternConverter |
FullLocationPatternConverter | INSTANCE | org.apache.logging.log4j.core.pattern.FullLocationPatternConverter |
IntegerPatternConverter | INSTANCE | org.apache.logging.log4j.core.pattern.IntegerPatternConverter |
LevelPatternConverter | INSTANCE | org.apache.logging.log4j.core.pattern.LevelPatternConverter |
LineLocationPatternConverter | INSTANCE | org.apache.logging.log4j.core.pattern.LineLocationPatternConverter |
LineSeparatorPatternConverter | INSTANCE | org.apache.logging.log4j.core.pattern.LineSeparatorPatternConverter |
LoggerPatternConverter | INSTANCE | org.apache.logging.log4j.core.pattern.LoggerPatternConverter |
MethodLocationPatternConverter | INSTANCE | org.apache.logging.log4j.core.pattern.MethodLocationPatternConverter |
NDCPatternConverter | INSTANCE | org.apache.logging.log4j.core.pattern.NDCPatternConverter |
SequenceNumberPatternConverter | INSTANCE | org.apache.logging.log4j.core.pattern.SequenceNumberPatternConverter |
ThreadPatternConverter | INSTANCE | org.apache.logging.log4j.core.pattern.ThreadPatternConverter |
NullEnumeration | INSTANCE | org.apache.log4j.helpers.NullEnumeration |
StaticLoggerBinder | SINGLETON | org.slf4j.impl.StaticLoggerBinder |
StaticMDCBinder | SINGLETON | org.slf4j.impl.StaticMDCBinder |
Statistics
Stat | staticFieldInstance |
---|---|
Sum: | 0 |
Average: | 0 |
Minimum: | 0 |
Maximum: | 0 |
Standard deviation: | 0 |
Variance: | 0 |
![]() | Rule warning: Don't assign static fields from instance methods |
// Assigning static fields from instance methods leads to
// poorly maintainable and non thread-safe code.
// It is advised to assign static fields inline or from class constructor.
warnif count > 0
from f in Application.Fields where
f.IsStatic &&
!f.IsLiteral &&
!f.IsInitOnly &&
!f.IsGeneratedByCompiler &&
// Contract API define such a insideContractEvaluation static field
f.Name != "insideContractEvaluation"
let assignedBy = f.MethodsAssigningMe.Where(m => !m.IsStatic)
where assignedBy .Count() > 0
select new { f, assignedBy }
40 fields matched
fields | assignedBy | Full Name |
---|---|---|
currentLevel | 12 methods | org.apache.logging.log4j.AbstractLoggerTest.currentLevel |
stringTime | 1 method | org.apache.logging.log4j.message.MessageFormatsPerfTest.stringTime |
paramTime | 1 method | org.apache.logging.log4j.message.MessageFormatsPerfTest.paramTime |
msgFormatTime | 1 method | org.apache.logging.log4j.message.MessageFormatsPerfTest.msgFormatTime |
formattedTime | 1 method | org.apache.logging.log4j.message.MessageFormatsPerfTest.formattedTime |
list1 | 1 method | org.apache.logging.log4j.core.ExtendedLevelTest.list1 |
list2 | 1 method | org.apache.logging.log4j.core.ExtendedLevelTest.list2 |
config | 1 method | org.apache.logging.log4j.core.FileConfigTest.config |
app | 1 method | org.apache.logging.log4j.core.FileConfigTest.app |
config | 1 method | org.apache.logging.log4j.core.HostNameTest.config |
app | 1 method | org.apache.logging.log4j.core.HostNameTest.app |
host | 1 method | org.apache.logging.log4j.core.HostNameTest.host |
hostFile | 1 method | org.apache.logging.log4j.core.HostNameTest.hostFile |
ctx | 1 method | org.apache.logging.log4j.core.LateConfigTest.ctx |
config | 1 method | org.apache.logging.log4j.core.LoggerDateTest.config |
fileApp | 1 method | org.apache.logging.log4j.core.LoggerDateTest.fileApp |
config | 1 method | org.apache.logging.log4j.core.LoggerTest.config |
app | 1 method | org.apache.logging.log4j.core.LoggerTest.app |
host | 1 method | org.apache.logging.log4j.core.LoggerTest.host |
noThrown | 1 method | org.apache.logging.log4j.core.LoggerTest.noThrown |
config | 1 method | org.apache.logging.log4j.core.LoggerUpdateTest.config |
app | 1 method | org.apache.logging.log4j.core.LoggerUpdateTest.app |
host | 1 method | org.apache.logging.log4j.core.LoggerUpdateTest.host |
noThrown | 1 method | org.apache.logging.log4j.core.LoggerUpdateTest.noThrown |
config | 1 method | org.apache.logging.log4j.core.ShutdownDisabledTest.config |
tcpCount | 1 method | org.apache.logging.log4j.core.appender.SocketAppenderTest.tcpCount |
udpCount | 1 method | org.apache.logging.log4j.core.appender.SocketAppenderTest.udpCount |
verbose | 1 method | org.apache.logging.log4j.core.async.perftest.PerfTest.verbose |
throughput | 5 methods | org.apache.logging.log4j.core.async.perftest.PerfTest.throughput |
pluginTypeMap | 1 method | org.apache.logging.log4j.core.config.plugins.PluginManager .pluginTypeMap |
receiver | 1 method | org.apache.logging.log4j.core.net.JMSQueueFailoverTest.receiver |
config | 1 method | org.apache.logging.log4j.core.net.JMSQueueFailoverTest.config |
app | 1 method | org.apache.logging.log4j.core.net.JMSQueueFailoverTest.app |
config | 1 method | org.apache.logging.log4j.core.net.JMSTopicFailoverTest.config |
app | 1 method | org.apache.logging.log4j.core.net.JMSTopicFailoverTest.app |
config | 1 method | org.apache.log4j.LoggingTest.config |
ctx | 1 method | org.apache.logging.log4j.flume.appender.FlumeEmbeddedAgentTest.ctx |
ctx | 1 method | org.apache.logging.log4j.flume.appender.FlumeEmbeddedAppenderTest.ctx |
ctx | 1 method | org.apache.logging.log4j.flume.appender.FlumePersistentAppenderTest .ctx |
ctx | 1 method | org.apache.logging.log4j.flume.appender.FlumePersistentPerf.ctx |
Statistics
Stat | assignedBy |
---|---|
Sum: | 0 |
Average: | 0 |
Minimum: | 0 |
Maximum: | 0 |
Standard deviation: | 0 |
Variance: | 0 |
![]() | Rule warning: Avoid empty interfaces |
warnif count > 0 from t in JustMyCode.Types where
t.IsInterface &&
t.NbMethods == 0
select new { t, t.TypesThatImplementMe }
// Interfaces define members that provide a behavior
// or usage contract. The functionality described by
// the interface can be adopted by any type,
// regardless of where the type appears in the
// inheritance hierarchy. A type implements an
// interface by providing implementations for the
// interface's members. An empty interface does not
// define any members, and as such, does not define
// a contract that can be implemented.
// If your design includes empty interfaces that
// types are expected to implement, you are probably
// using an interface as a marker, or a way of
// identifying a group of types. If this identification
// will occur at runtime, the correct way to accomplish
// this is to use a custom attribute. Use the presence
// or absence of the attribute, or the attribute's
// properties, to identify the target types. If the
// identification must occurs at compile time, then using
// an empty interface is acceptable.
1 types matched
type | TypesThatImplementMe | Full Name |
---|---|---|
AnsiConverter | 2 types | org.apache.logging.log4j.core.pattern.AnsiConverter |
Statistics
Stat | TypesThatImplementMe |
---|---|
Sum: | 0 |
Average: | 0 |
Minimum: | 0 |
Maximum: | 0 |
Standard deviation: | 0 |
Variance: | 0 |
Design | 040 |
|
![]() | Rule warning: Avoid packages with few types |
warnif count > 0 from n in JustMyCode.Packages
let types = n.ChildTypes.Where(t => !t.IsGeneratedByCompiler)
where
types.Count() < 5
orderby types.Count() ascending
select new { n, types }
// Make sure that there is a logical organization
// to each of your packages, and that there is a
// valid reason for putting types in a sparsely
// populated package. Packages should contain
// types that are used together in most scenarios.
// When their applications are mutually exclusive,
// types should be located in separate packages
25 packages matched
packages | types | Full Name |
---|---|---|
org.apache.logging.log4j.core.appender.rolling.helper | 1 type | org.apache.logging.log4j.core.appender.rolling.helper |
org.apache.logging.log4j.core.osgi.equinox | 1 type | org.apache.logging.log4j.core.osgi.equinox |
org.apache.logging.log4j.core.osgi.felix | 1 type | org.apache.logging.log4j.core.osgi.felix |
org.apache.logging.log4j.test | 1 type | org.apache.logging.log4j.test |
org.apache.logging.log4j.test.layout | 1 type | org.apache.logging.log4j.test.layout |
org.apache.log4j.helpers | 1 type | org.apache.log4j.helpers |
org.apache.log4j.xml | 1 type | org.apache.log4j.xml |
org.apache.log4j.util | 1 type | org.apache.log4j.util |
org.apache.log4j.osgi.equinox | 1 type | org.apache.log4j.osgi.equinox |
org.apache.log4j.osgi.felix | 1 type | org.apache.log4j.osgi.felix |
org.apache.logging.log4j.flume.test | 1 type | org.apache.logging.log4j.flume.test |
org.apache.logging.log4j.samples.util | 1 type | org.apache.logging.log4j.samples.util |
org.apache.logging.log4j.osgi | 2 types | org.apache.logging.log4j.osgi |
org.apache.logging.log4j.osgi.equinox | 2 types | org.apache.logging.log4j.osgi.equinox |
org.apache.logging.log4j.osgi.felix | 2 types | org.apache.logging.log4j.osgi.felix |
org.apache.log4j.config | 2 types | org.apache.log4j.config |
org.apache.logging.log4j.simple | 3 types | org.apache.logging.log4j.simple |
org.apache.logging.log4j.core.util | 3 types | org.apache.logging.log4j.core.util |
org.apache.logging.log4j.core.appender.db.nosql.couchdb | 3 types | org.apache.logging.log4j.core.appender.db.nosql.couchdb |
org.apache.logging.log4j.samples.dto | 3 types | org.apache.logging.log4j.samples.dto |
org.apache.logging.log4j.util | 4 types | org.apache.logging.log4j.util |
org.apache.logging.log4j.core.appender.db.nosql.mongo | 4 types | org.apache.logging.log4j.core.appender.db.nosql.mongo |
org.apache.logging.slf4j | 4 types | org.apache.logging.slf4j |
org.slf4j.impl | 4 types | org.slf4j.impl |
org.apache.logging.log4j.jcl | 4 types | org.apache.logging.log4j.jcl |
Statistics
Stat | types |
---|---|
Sum: | 0 |
Average: | 0 |
Minimum: | 0 |
Maximum: | 0 |
Standard deviation: | 0 |
Variance: | 0 |
![]() | Rule warning: Nested types should not be visible |
warnif count > 0 from t in JustMyCode.Types where
t.IsNested &&
!t.IsGeneratedByCompiler &&
!t.IsPrivate
select new { t, t.NbLinesOfCode, t.Visibility }
// A nested type is a type declared within the
// scope of another type. Nested types are useful
// for encapsulating private implementation details
// of the containing type. Used for this purpose,
// nested types should not be externally visible.
// Do not use externally visible nested types for
// logical grouping or to avoid name collisions;
// instead, use packages.
12 types matched
types | # lines of code (LOC) | Visibility | Full Name |
---|---|---|---|
MapMessage$MapFormat | N/A | Public | org.apache.logging.log4j.message.MapMessage$MapFormat |
Logger$PrivateConfig | 59 | Public | org.apache.logging.log4j.core.Logger$PrivateConfig |
ThreadedTest$State | 6 | Internal | org.apache.logging.log4j.core.ThreadedTest$State |
MapRewritePolicy$Mode | N/A | Public | org.apache.logging.log4j.core.appender.rewrite.MapRewritePolicy$Mode |
AsyncLogger$Info | 8 | Internal | org.apache.logging.log4j.core.async.AsyncLogger$Info |
AsyncLogger$ThreadNameStrategy | N/A | Internal | org.apache.logging.log4j.core.async.AsyncLogger$ThreadNameStrategy |
PerfTestDriver$Stats | 23 | Internal | org.apache.logging.log4j.core.async.perftest.PerfTestDriver$Stats |
PerfTestDriver$WaitStrategy | N/A | Internal | org.apache.logging.log4j.core.async.perftest .PerfTestDriver$WaitStrategy |
ConfigurationFactory$ConfigurationSource | 23 | Public | org.apache.logging.log4j.core.config .ConfigurationFactory$ConfigurationSource |
ResolverUtil$ClassTest | 4 | Public | org.apache.logging.log4j.core.config.plugins.ResolverUtil$ClassTest |
ResolverUtil$ResourceTest | 4 | Public | org.apache.logging.log4j.core.config.plugins.ResolverUtil$ResourceTest |
ResolverUtil$Test | N/A | Public | org.apache.logging.log4j.core.config.plugins.ResolverUtil$Test |
Statistics
Stat | # lines of code (LOC) | Visibility |
---|---|---|
Sum: | 127 | 0 |
Average: | 18.14 | 0 |
Minimum: | 4 | 0 |
Maximum: | 59 | 0 |
Standard deviation: | 18.39 | 0 |
Variance: | 338.12 | 0 |
![]() | Rule warning: Instances size shouldn't be too big |
warnif count > 0 from t in JustMyCode.Types where
t.SizeOfInst > 64
orderby t.SizeOfInst descending
select new { t, t.SizeOfInst, t.InstanceFields }
// Types where SizeOfInst > 64 might degrade performance
// (depending on the number of instances created at runtime)
// and might be hard to maintain. However it is not a rule
// since sometime there is no alternative (the size of
// instances of the System.Net.NetworkInformation.SystemIcmpV6Statistics
// standard class is 2064 bytes).
// Notice that a class with a large SizeOfInst value
// doesn't necessarily have a lot of instance fields.
// It might derive from a class with a large SizeOfInst value.
// See the definition of the SizeOfInst metric here
// http://www.jarchitect.com/Metrics#SizeOfInst
10 types matched
types | Size of instance | InstanceFields | Full Name |
---|---|---|---|
RFC5424Layout | 108 | 24 fields | org.apache.logging.log4j.core.layout.RFC5424Layout |
XMLConfiguration | 96 | 5 fields | org.apache.logging.log4j.core.config.XMLConfiguration |
JSONConfiguration | 88 | 3 fields | org.apache.logging.log4j.core.config.JSONConfiguration |
BasicConfigurationFactory$BasicConfiguration | 80 | 1 field | org.apache.logging.log4j.core .BasicConfigurationFactory$BasicConfiguration |
BasicConfigurationFactory$BasicConfiguration | 80 | 1 field | org.apache.log4j.BasicConfigurationFactory$BasicConfiguration |
BaseConfiguration | 76 | 18 fields | org.apache.logging.log4j.core.config.BaseConfiguration |
DefaultConfiguration | 76 | 0 field | org.apache.logging.log4j.core.config.DefaultConfiguration |
NullConfiguration | 76 | 0 field | org.apache.logging.log4j.core.config.NullConfiguration |
RollingRandomAccessFileManager | 72 | 4 fields | org.apache.logging.log4j.core.appender.rolling .RollingRandomAccessFileManager |
FlumePersistentManager | 72 | 9 fields | org.apache.logging.log4j.flume.appender.FlumePersistentManager |
Statistics
Stat | Size of instance | InstanceFields |
---|---|---|
Sum: | 824 | 0 |
Average: | 82.4 | 0 |
Minimum: | 72 | 0 |
Maximum: | 108 | 0 |
Standard deviation: | 11.06 | 0 |
Variance: | 122.24 | 0 |
![]() | Rule warning: Don't use obsolete types, methods or fields |
warnif count > 0
let obsoleteTypes = Types.Where(t => t.IsObsolete)
let obsoleteMethods = Methods.Where(m2 => m2.IsObsolete).ToHashSet()
let obsoleteFields = Fields.Where(f => f.IsObsolete)
from m in JustMyCode.Methods.UsingAny(obsoleteTypes).Union(
JustMyCode.Methods.UsingAny(obsoleteMethods)).Union(
JustMyCode.Methods.UsingAny(obsoleteFields))
let obsoleteTypesUsed = obsoleteTypes.UsedBy(m)
// Optimization: MethodsCalled + Intersect() is faster than using obsoleteMethods.UsedBy()
let obsoleteMethodsUsed = m.MethodsCalled.Intersect(obsoleteMethods)
let obsoleteFieldsUsed = obsoleteFields.UsedBy(m)
select new { m, obsoleteTypesUsed, obsoleteMethodsUsed, obsoleteFieldsUsed }
22 methods matched
methods | obsoleteTypesUsed | obsoleteMethodsUsed | obsoleteFieldsUsed | Full Name |
---|---|---|---|---|
toPriority(int) | 0 type | 1 method | 1 field | org.apache.log4j.Priority.toPriority(int) |
testGetAllPossiblePriorities() | 0 type | 1 method | 0 field | org.apache.log4j.PriorityTest.testGetAllPossiblePriorities() |
testToPriorityString() | 0 type | 1 method | 0 field | org.apache.log4j.PriorityTest.testToPriorityString() |
testToPriorityInt() | 0 type | 1 method | 0 field | org.apache.log4j.PriorityTest.testToPriorityInt() |
testToPriorityStringPriority() | 0 type | 1 method | 1 field | org.apache.log4j.PriorityTest.testToPriorityStringPriority() |
testToPriorityIntPriority() | 0 type | 1 method | 1 field | org.apache.log4j.PriorityTest.testToPriorityIntPriority() |
testDotlessLowerI() | 0 type | 1 method | 0 field | org.apache.log4j.PriorityTest.testDotlessLowerI() |
testDottedLowerI() | 0 type | 1 method | 0 field | org.apache.log4j.PriorityTest.testDottedLowerI() |
getAllPossiblePriorities() | 0 type | 0 method | 4 fields | org.apache.log4j.Priority.getAllPossiblePriorities() |
Priority() | 0 type | 0 method | 5 fields | org.apache.log4j.Priority.Priority() |
testForcedLog() | 0 type | 0 method | 1 field | org.apache.log4j.CategoryTest.testForcedLog() |
logInfo(String,Throwable) | 0 type | 0 method | 1 field | org.apache.log4j.LoggerTest$MyLogger.logInfo(String,Throwable) |
testLog() | 0 type | 0 method | 1 field | org.apache.log4j.LoggerTest.testLog() |
testFatal() | 0 type | 0 method | 1 field | org.apache.log4j.PriorityTest.testFatal() |
testERROR() | 0 type | 0 method | 1 field | org.apache.log4j.PriorityTest.testERROR() |
testWARN() | 0 type | 0 method | 1 field | org.apache.log4j.PriorityTest.testWARN() |
testINFO() | 0 type | 0 method | 1 field | org.apache.log4j.PriorityTest.testINFO() |
testDEBUG() | 0 type | 0 method | 1 field | org.apache.log4j.PriorityTest.testDEBUG() |
testEqualsNull() | 0 type | 0 method | 1 field | org.apache.log4j.PriorityTest.testEqualsNull() |
testEqualsLevel() | 0 type | 0 method | 1 field | org.apache.log4j.PriorityTest.testEqualsLevel() |
setNext(Filter) | 0 type | 0 method | 1 field | org.apache.log4j.spi.Filter.setNext(Filter) |
getNext() | 0 type | 0 method | 1 field | org.apache.log4j.spi.Filter.getNext() |
Statistics
Stat | obsoleteTypesUsed | obsoleteMethodsUsed | obsoleteFieldsUsed |
---|---|---|---|
Sum: | 0 | 0 | 0 |
Average: | 0 | 0 | 0 |
Minimum: | 0 | 0 | 0 |
Maximum: | 0 | 0 | 0 |
Standard deviation: | 0 | 0 | 0 |
Variance: | 0 | 0 | 0 |
Architecture and Layering | 320 |
|
![]() | Rule warning: Avoid packages mutually dependent |
warnif count > 0
// Foreach pair of package mutually dependent, this rule lists pairs.
// The pair { first, second } is formatted to show that first package shouldn't use the second package.
// The first/second order is inferred from the number of types used by each other.
// The first package is using less types of the second.
// It means that the first package is certainly at a lower level in the architecture, than the second.
//
// To explore the coupling between two packages mutually dependent:
// 1) export the first package to the vertical header of the dependency matrix
// 2) export the second package to the horizontal header of the dependency matrix
// 3) double-click the black cell
// 4) in the matrix command bar, click the button: Remove empty Row(s) en Column(s)
// At this point, the dependency matrix shows types involved into the coupling.
//
// Following this rule is useful to avoid packages dependency cycles.
// More on this in our white books relative to partitionning code.
// http://www.jarchitect.com/WhiteBooks
// Optimization: restreint application projects set
// If some packages are mutually dependent
// - They must be declared in the same project
// - The parent project must ContainsPackageDependencyCycle
from project in Application.Projects.Where(a => a.ContainsPackageDependencyCycle != null && a.ContainsPackageDependencyCycle.Value)
// hashset is used to avoid reporting both A <-> B and B <-> A
let hashset = new HashSet<IPackage>()
// Optimization: restreint packages set
// If a package doesn't have a Level value, it must be in a dependency cycle
// or it must be using directly or indirectly a dependency cycle.
let packagesSuspect = project.ChildPackages.Where(n => n.Level == null)
from nA in packagesSuspect
// Select PACKAGES mutually dependent with nA
let unused = hashset.Add(nA) // Populate hashset
let packagesMutuallyDependentWith_nA = nA.PackagesUsed.Using(nA)
.Except(hashset) // <-- avoid reporting both A <-> B and B <-> A
where packagesMutuallyDependentWith_nA.Count() > 0
from nB in packagesMutuallyDependentWith_nA
// nA and nB are mutually dependent
// Select first the one that shouldn't use the other.
// The first package is inferred from the fact that it is using less types of the second.
let typesOfBUsedByA = nB.ChildTypes.UsedBy(nA)
let typesOfAUsedByB = nA.ChildTypes.UsedBy(nB)
let first = (typesOfBUsedByA.Count() > typesOfAUsedByB.Count()) ? nB : nA
let second = (first == nA) ? nB : nA
let typesOfFirstUsedBySecond = (first == nA) ? typesOfAUsedByB : typesOfBUsedByA
let typesOfSecondUsedByFirst = (first == nA) ? typesOfBUsedByA : typesOfAUsedByB
select new { first, shouldntUse = second, typesOfFirstUsedBySecond, typesOfSecondUsedByFirst }
37 packages matched
packages | shouldntUse | typesOfFirstUsedBySecond | typesOfSecondUsedByFirst | Full Name |
---|---|---|---|---|
org.apache.logging.log4j.message | org.apache.logging.log4j | 9 types | 2 types | org.apache.logging.log4j.message |
org.apache.logging.log4j.spi | org.apache.logging.log4j | 12 types | 7 types | org.apache.logging.log4j.spi |
org.apache.logging.log4j | org.apache.logging.log4j.status | 2 types | 1 type | org.apache.logging.log4j |
org.apache.logging.log4j.util | org.apache.logging.log4j | 2 types | 1 type | org.apache.logging.log4j.util |
org.apache.logging.log4j | org.apache.logging.log4j.simple | 4 types | 1 type | org.apache.logging.log4j |
org.apache.logging.log4j.message | org.apache.logging.log4j.status | 1 type | 1 type | org.apache.logging.log4j.message |
org.apache.logging.log4j.message | org.apache.logging.log4j.spi | 3 types | 1 type | org.apache.logging.log4j.message |
org.apache.logging.log4j.spi | org.apache.logging.log4j.status | 2 types | 1 type | org.apache.logging.log4j.spi |
org.apache.logging.log4j.spi | org.apache.logging.log4j.util | 2 types | 1 type | org.apache.logging.log4j.spi |
org.apache.logging.log4j.status | org.apache.logging.log4j.util | 1 type | 1 type | org.apache.logging.log4j.status |
org.apache.logging.log4j.core.config | org.apache.logging.log4j.core | 11 types | 8 types | org.apache.logging.log4j.core.config |
org.apache.logging.log4j.core | org.apache.logging.log4j.core.filter | 6 types | 1 type | org.apache.logging.log4j.core |
org.apache.logging.log4j.core | org.apache.logging.log4j.core.jmx | 3 types | 1 type | org.apache.logging.log4j.core |
org.apache.logging.log4j.core | org.apache.logging.log4j.test.appender | 3 types | 1 type | org.apache.logging.log4j.core |
org.apache.logging.log4j.core | org.apache.logging.log4j.core.appender | 8 types | 2 types | org.apache.logging.log4j.core |
org.apache.logging.log4j.core | org.apache.logging.log4j.core.impl | 4 types | 2 types | org.apache.logging.log4j.core |
org.apache.logging.log4j.core.filter | org.apache.logging.log4j.core.config | 3 types | 2 types | org.apache.logging.log4j.core.filter |
org.apache.logging.log4j.core.filter | org.apache.logging.log4j.test.appender | 2 types | 1 type | org.apache.logging.log4j.core.filter |
org.apache.logging.log4j.core.helpers | org.apache.logging.log4j.core.config.plugins | 3 types | 2 types | org.apache.logging.log4j.core.helpers |
org.apache.logging.log4j.core.impl | org.apache.logging.log4j.core.config | 3 types | 3 types | org.apache.logging.log4j.core.impl |
org.apache.logging.log4j.core.impl | org.apache.logging.log4j.core.selector | 2 types | 2 types | org.apache.logging.log4j.core.impl |
org.apache.logging.log4j.core.async | org.apache.logging.log4j.core.jmx | 2 types | 1 type | org.apache.logging.log4j.core.async |
org.apache.logging.log4j.core.pattern | org.apache.logging.log4j.core.layout | 4 types | 1 type | org.apache.logging.log4j.core.pattern |
org.apache.logging.log4j.core.config | org.apache.logging.log4j.core.layout | 2 types | 1 type | org.apache.logging.log4j.core.config |
org.apache.logging.log4j.core.net | org.apache.logging.log4j.core.layout | 2 types | 1 type | org.apache.logging.log4j.core.net |
org.apache.logging.log4j.core.layout | org.apache.logging.log4j.core.appender | 6 types | 4 types | org.apache.logging.log4j.core.layout |
org.apache.logging.log4j.core.lookup | org.apache.logging.log4j.core.config.plugins | 3 types | 3 types | org.apache.logging.log4j.core.lookup |
org.apache.logging.log4j.core.config | org.apache.logging.log4j.core.appender | 5 types | 2 types | org.apache.logging.log4j.core.config |
org.apache.logging.log4j.core.appender | org.apache.logging.log4j.core.net | 10 types | 10 types | org.apache.logging.log4j.core.appender |
org.apache.logging.log4j.core.appender | org.apache.logging.log4j.core.appender.rolling | 7 types | 5 types | org.apache.logging.log4j.core.appender |
org.apache.logging.log4j.core.appender | org.apache.logging.log4j.test.appender | 3 types | 3 types | org.apache.logging.log4j.core.appender |
org.apache.logging.log4j.core.appender.db.nosql | org.apache.logging.log4j.core.appender.db.nosql.couchdb | 3 types | 1 type | org.apache.logging.log4j.core.appender.db.nosql |
org.apache.logging.log4j.core.config.plugins | org.apache.logging.log4j.core.config | 8 types | 4 types | org.apache.logging.log4j.core.config.plugins |
org.apache.logging.log4j.core.config | org.apache.logging.log4j.core.net | 5 types | 1 type | org.apache.logging.log4j.core.config |
org.apache.log4j.spi | org.apache.log4j | 7 types | 4 types | org.apache.log4j.spi |
org.apache.logging.slf4j | org.slf4j.helpers | 1 type | 1 type | org.apache.logging.slf4j |
org.slf4j.helpers | org.slf4j.impl | 4 types | 1 type | org.slf4j.helpers |
Statistics
Stat | shouldntUse | typesOfFirstUsedBySecond | typesOfSecondUsedByFirst |
---|---|---|---|
Sum: | 0 | 0 | 0 |
Average: | 0 | 0 | 0 |
Minimum: | 0 | 0 | 0 |
Maximum: | 0 | 0 | 0 |
Standard deviation: | 0 | 0 | 0 |
Variance: | 0 | 0 | 0 |
![]() | Rule warning: Avoid packages dependency cycles |
warnif count > 0
// This query lists all application packages dependency cyles.
// Each row shows a different cycle, prefixed with a package entangled in the cycle.
//
// To browse a cycle on the dependency graph or the dependency matrix, just right click
// a cycle cell and export packages matched to the dependency graph or matrix!
//
// In the matrix, dependency cycles are represented with red squares and black cells.
// To browse easily dependency cycles, the Matrix comes with the option:
// --> Display Direct and Indirect Dependencies
//
// Read our white books relative to partitionning code,
// to know more about packages dependency cycles, and why avoiding them
// is a simple but efficient solution to architecture well your code base.
// http://www.jarchitect.com/WhiteBooks
// Optimization: restreint application projects set
// If some packages are mutually dependent
// - They must be declared in the same project
// - The parent project must ContainsPackageDependencyCycle
from project in Application.Projects
.Where(a => a.ContainsPackageDependencyCycle != null &&
a.ContainsPackageDependencyCycle.Value)
// Optimization: restreint packages set
// A package involved in a cycle necessarily have a null Level.
let packagesSuspect = project.ChildPackages.Where(n => n.Level == null)
// hashset is used to avoid iterating again on packages already caught in a cycle.
let hashset = new HashSet<IPackage>()
from suspect in packagesSuspect
// By commenting this line, the query matches all packages involved in a cycle.
where !hashset.Contains(suspect)
// Define 2 code metrics
// - Packages depth of is using indirectly the suspect package.
// - Packages depth of is used by the suspect package indirectly.
// Note: for direct usage the depth is equal to 1.
let packagesUserDepth = packagesSuspect.DepthOfIsUsing(suspect)
let packagesUsedDepth = packagesSuspect.DepthOfIsUsedBy(suspect)
// Select PACKAGES that are both using and used by packageSuspect
let usersAndUsed = from n in packagesSuspect where
packagesUserDepth[n] > 0 &&
packagesUsedDepth[n] > 0
select n
where usersAndUsed.Count() > 0
// Here we've found package(s) both using and used by the suspect package.
// A cycle involving the suspect package is found!
let cycle = usersAndUsed.Append(suspect)
// Fill hashset with packages in the cycle.
// .ToArray() is needed to force the iterating process.
let unused1 = (from n in cycle let unused2 = hashset.Add(n) select n).ToArray()
select new { suspect, cycle }
5 packages matched
packages | cycle | Full Name |
---|---|---|
org.apache.logging.log4j | 6 packages | org.apache.logging.log4j |
org.apache.logging.log4j.core | 19 packages | org.apache.logging.log4j.core |
org.apache.logging.log4j.core.appender.db.nosql | 2 packages | org.apache.logging.log4j.core.appender.db.nosql |
org.apache.log4j | 2 packages | org.apache.log4j |
org.apache.logging.slf4j | 3 packages | org.apache.logging.slf4j |
Statistics
Stat | cycle |
---|---|
Sum: | 0 |
Average: | 0 |
Minimum: | 0 |
Maximum: | 0 |
Standard deviation: | 0 |
Variance: | 0 |
Best Practices | 280 |
|
![]() | Critical Rule warning: Prefer primitive types to boxed primitives |
warnif count > 0
let BoxedTypes = ThirdParty.Types.WithFullNameIn(
"java.lang.Integer",
"java.lang.Double",
"java.lang.Boolean")
from m in Application.Methods.UsingAny(BoxedTypes)
select m
//Use primitives in preference to boxed primitives whenever you
//have the choice. Primitive types are simpler and faster. If you must use boxed
//primitives, be careful! Autoboxing reduces the verbosity, but not the danger, of
//using boxed primitives. When your program compares two boxed primitives
//with the == operator, it does an identity comparison, which is almost certainly not
//what you want.
188 methods matched
methods | Full Name |
---|---|
getFormatterLogger_Class() | org.apache.logging.log4j.LoggerTest.getFormatterLogger_Class() |
getFormatterLogger_Object() | org.apache.logging.log4j.LoggerTest.getFormatterLogger_Object() |
getFormatterLogger_String() | org.apache.logging.log4j.LoggerTest.getFormatterLogger_String() |
getLogger_Class_ParameterizedMessageFactory() | org.apache.logging.log4j.LoggerTest .getLogger_Class_ParameterizedMessageFactory() |
getLogger_Class_StringFormatterMessageFactory() | org.apache.logging.log4j.LoggerTest .getLogger_Class_StringFormatterMessageFactory() |
getLogger_Object_ParameterizedMessageFactory() | org.apache.logging.log4j.LoggerTest .getLogger_Object_ParameterizedMessageFactory() |
getLogger_Object_StringFormatterMessageFactory() | org.apache.logging.log4j.LoggerTest .getLogger_Object_StringFormatterMessageFactory() |
getLogger_String_MessageFactoryMismatch() | org.apache.logging.log4j.LoggerTest .getLogger_String_MessageFactoryMismatch() |
getLogger_String_ParameterizedMessageFactory() | org.apache.logging.log4j.LoggerTest .getLogger_String_ParameterizedMessageFactory() |
getLogger_String_StringFormatterMessageFactory() | org.apache.logging.log4j.LoggerTest .getLogger_String_StringFormatterMessageFactory() |
mdc() | org.apache.logging.log4j.LoggerTest.mdc() |
printf() | org.apache.logging.log4j.LoggerTest.printf() |
identityToString(Object) | org.apache.logging.log4j.message.ParameterizedMessage.identityToString (Object) |
StructuredDataId(String,String[],String[]) | org.apache.logging.log4j.message.StructuredDataId.StructuredDataId (String,String[],String[]) |
Provider(Properties,URL) | org.apache.logging.log4j.spi.Provider.Provider(Properties,URL) |
Provider() | org.apache.logging.log4j.spi.Provider.Provider() |
getIntegerProperty(String,int) | org.apache.logging.log4j.util.PropertiesUtil.getIntegerProperty(String ,int) |
log4jIsDebug(int) | org.apache.logging.log4j.DebugDisabledPerformanceComparison .log4jIsDebug(int) |
logbackIsDebug(int) | org.apache.logging.log4j.DebugDisabledPerformanceComparison .logbackIsDebug(int) |
log4j2IsDebug(int) | org.apache.logging.log4j.DebugDisabledPerformanceComparison .log4j2IsDebug(int) |
log4j(int) | org.apache.logging.log4j.DebugDisabledPerformanceComparison.log4j(int) |
logback(int) | org.apache.logging.log4j.DebugDisabledPerformanceComparison.logback (int) |
logbackDebug(int) | org.apache.logging.log4j.DebugDisabledPerformanceComparison .logbackDebug(int) |
log4j2(int) | org.apache.logging.log4j.DebugDisabledPerformanceComparison.log4j2(int ) |
log4j2Debug(int) | org.apache.logging.log4j.DebugDisabledPerformanceComparison .log4j2Debug(int) |
writeToWriter(int,Writer) | org.apache.logging.log4j.DebugDisabledPerformanceComparison .writeToWriter(int,Writer) |
writeToStream(int,OutputStream) | org.apache.logging.log4j.DebugDisabledPerformanceComparison .writeToStream(int,OutputStream) |
writeToChannel(int,FileChannel) | org.apache.logging.log4j.DebugDisabledPerformanceComparison .writeToChannel(int,FileChannel) |
logback(int) | org.apache.logging.log4j.FilterPerformanceComparison.logback(int) |
log4j2(int) | org.apache.logging.log4j.FilterPerformanceComparison.log4j2(int) |
main(String[]) | org.apache.logging.log4j.FormatterLoggerManualExample.main(String[]) |
log4j(int) | org.apache.logging.log4j.PerformanceComparison.log4j(int) |
logback(int) | org.apache.logging.log4j.PerformanceComparison.logback(int) |
log4j2(int) | org.apache.logging.log4j.PerformanceComparison.log4j2(int) |
writeToWriter(int,Writer) | org.apache.logging.log4j.PerformanceComparison.writeToWriter(int ,Writer) |
writeToStream(int,OutputStream) | org.apache.logging.log4j.PerformanceComparison.writeToStream(int ,OutputStream) |
writeToChannel(int,FileChannel) | org.apache.logging.log4j.PerformanceComparison.writeToChannel(int ,FileChannel) |
writeToWriter(int,Writer) | org.apache.logging.log4j.PerformanceRun.writeToWriter(int,Writer) |
writeToStream(int,OutputStream) | org.apache.logging.log4j.PerformanceRun.writeToStream(int,OutputStream ) |
writeToChannel(int,FileChannel) | org.apache.logging.log4j.PerformanceRun.writeToChannel(int,FileChannel ) |
testFileName() | org.apache.logging.log4j.core.LoggerDateTest.testFileName() |
simpleFlow() | org.apache.logging.log4j.core.LoggerTest.simpleFlow() |
getLogger_String_MessageFactoryMismatch() | org.apache.logging.log4j.core.LoggerTest .getLogger_String_MessageFactoryMismatch() |
getLogger_String_MessageFactoryMismatchNull() | org.apache.logging.log4j.core.LoggerTest .getLogger_String_MessageFactoryMismatchNull() |
simpleFlow() | org.apache.logging.log4j.core.StrictXMLConfigTest.simpleFlow() |
getState() | org.apache.logging.log4j.core.ThreadedTest$State.getState() |
createFilter(String,String,String,String) | org.apache.logging.log4j.core.filter.RegexFilter.createFilter(String ,String,String,String) |
parseInt(String,int) | org.apache.logging.log4j.core.helpers.Integers.parseInt(String,int) |
md5(String) | org.apache.logging.log4j.core.helpers.NameUtil.md5(String) |
toInt(String,int) | org.apache.logging.log4j.core.helpers.OptionConverter.toInt(String,int ) |
getCaller(int) | org.apache.logging.log4j.core.impl.ReflectiveCallerClassUtility .getCaller(int) |
ReflectiveCallerClassUtility() | org.apache.logging.log4j.core.impl.ReflectiveCallerClassUtility .ReflectiveCallerClassUtility() |
newInstance(String[]) | org.apache.logging.log4j.core.impl.ThrowableFormatOptions.newInstance (String[]) |
testJavaIoSerializable() | org.apache.logging.log4j.core.impl.Log4jLogEventTest .testJavaIoSerializable() |
testCreateObjects() | org.apache.logging.log4j.core.impl.ReflectionComparison .testCreateObjects() |
test(String[],int,String,List) | org.apache.logging.log4j.core.impl.ThrowableFormatOptionsTest.test (String[],int,String,List) |
reregisterMBeansAfterReconfigure() | org.apache.logging.log4j.core.jmx.Server .reregisterMBeansAfterReconfigure() |
reregisterMBeansAfterReconfigure(MBeanServer) | org.apache.logging.log4j.core.jmx.Server .reregisterMBeansAfterReconfigure(MBeanServer) |
createLayout(String,String,String,String,String,String) | org.apache.logging.log4j.core.layout.HTMLLayout.createLayout(String ,String,String,String,String,String) |
createLayout(String,String,String,String,String) | org.apache.logging.log4j.core.layout.JSONLayout.createLayout(String ,String,String,String,String) |
getSdId() | org.apache.logging.log4j.core.layout.LoggerFields.getSdId() |
computeTimeStampString(long) | org.apache.logging.log4j.core.layout.RFC5424Layout .computeTimeStampString(long) |
pad(int,int,StringBuilder) | org.apache.logging.log4j.core.layout.RFC5424Layout.pad(int,int ,StringBuilder) |
createLayout(String,String,String,String,String,String,String,String ,String,String,String,String,String,String,String,String ,LoggerFields[],Configuration) | org.apache.logging.log4j.core.layout.RFC5424Layout.createLayout(String ,String,String,String,String,String,String,String,String,String,String ,String,String,String,String,String,LoggerFields[],Configuration) |
createLayout(String,String,String,String) | org.apache.logging.log4j.core.layout.SyslogLayout.createLayout(String ,String,String,String) |
createLayout(String,String,String,String,String,String) | org.apache.logging.log4j.core.layout.XMLLayout.createLayout(String ,String,String,String,String,String) |
testLayout() | org.apache.logging.log4j.core.layout.RFC5424LayoutTest.testLayout() |
newInstance(String[]) | org.apache.logging.log4j.core.pattern.LevelPatternConverter .newInstance(String[]) |
getAbbreviator(String) | org.apache.logging.log4j.core.pattern.NameAbbreviator.getAbbreviator (String) |
finalizeConverter(char,String,int,StringBuilder,FormattingInfo,Map ,List,List,boolean) | org.apache.logging.log4j.core.pattern.PatternParser.finalizeConverter (char,String,int,StringBuilder,FormattingInfo,Map,List,List,boolean) |
testShortLineNumber() | org.apache.logging.log4j.core.pattern.ThrowablePatternConverterTest .testShortLineNumber() |
doFilter(ServletRequest,ServletResponse,FilterChain) | org.apache.logging.log4j.core.web.Log4jServletFilter.doFilter (ServletRequest,ServletResponse,FilterChain) |
testOnStartupWithServletVersion2_x() | org.apache.logging.log4j.core.web.Log4jServletContainerInitializerTest .testOnStartupWithServletVersion2_x() |
testOnStartupWithServletVersion3_xEffectiveVersion2_x() | org.apache.logging.log4j.core.web.Log4jServletContainerInitializerTest .testOnStartupWithServletVersion3_xEffectiveVersion2_x() |
testOnStartupWithServletVersion3_xEffectiveVersion3_xDisabledTrue() | org.apache.logging.log4j.core.web.Log4jServletContainerInitializerTest .testOnStartupWithServletVersion3_xEffectiveVersion3_xDisabledTrue() |
testOnStartupWithServletVersion3_xEffectiveVersion3_xDisabledTRUE() | org.apache.logging.log4j.core.web.Log4jServletContainerInitializerTest .testOnStartupWithServletVersion3_xEffectiveVersion3_xDisabledTRUE() |
testOnStartupWithServletVersion3_xEffectiveVersion3_x() | org.apache.logging.log4j.core.web.Log4jServletContainerInitializerTest .testOnStartupWithServletVersion3_xEffectiveVersion3_x() |
testOnStartupCanceledDueToPreExistingFilter() | org.apache.logging.log4j.core.web.Log4jServletContainerInitializerTest .testOnStartupCanceledDueToPreExistingFilter() |
testOnStartupFailedDueToInitializerFailure() | org.apache.logging.log4j.core.web.Log4jServletContainerInitializerTest .testOnStartupFailedDueToInitializerFailure() |
testDoFilterFirstTime() | org.apache.logging.log4j.core.web.Log4jServletFilterTest .testDoFilterFirstTime() |
testDoFilterSecondTime() | org.apache.logging.log4j.core.web.Log4jServletFilterTest .testDoFilterSecondTime() |
parseInt(String,int) | org.apache.logging.log4j.core.appender.AbstractAppender.parseInt (String,int) |
run() | org.apache.logging.log4j.core.appender.AsyncAppender$AsyncThread.run() |
append(LogEvent) | org.apache.logging.log4j.core.appender.AsyncAppender.append(LogEvent) |
createAppender(AppenderRef[],String,String,String,String,String,Filter ,Configuration,String) | org.apache.logging.log4j.core.appender.AsyncAppender.createAppender (AppenderRef[],String,String,String,String,String,Filter,Configuration ,String) |
createAppender(Layout,Filter,String,String,String,String) | org.apache.logging.log4j.core.appender.ConsoleAppender.createAppender (Layout,Filter,String,String,String,String) |
createAppender(String,String,String,String,String,String,String,String ,Layout,Filter,String,String,Configuration) | org.apache.logging.log4j.core.appender.FileAppender.createAppender (String,String,String,String,String,String,String,String,Layout,Filter ,String,String,Configuration) |
createAppender(String,String,String,String,String,String,Layout,Filter ,String,String,Configuration) | org.apache.logging.log4j.core.appender.RandomAccessFileAppender .createAppender(String,String,String,String,String,String,Layout ,Filter,String,String,Configuration) |
RandomAccessFileManager(RandomAccessFile,String,OutputStream,boolean ,int,String,Layout) | org.apache.logging.log4j.core.appender.RandomAccessFileManager .RandomAccessFileManager(RandomAccessFile,String,OutputStream,boolean ,int,String,Layout) |
setEndOfBatch(boolean) | org.apache.logging.log4j.core.appender.RandomAccessFileManager .setEndOfBatch(boolean) |
write(byte[],int,int) | org.apache.logging.log4j.core.appender.RandomAccessFileManager.write (byte[],int,int) |
createAppender(String,String,String,String,String,String ,TriggeringPolicy,RolloverStrategy,Layout,Filter,String,String,String ,Configuration) | org.apache.logging.log4j.core.appender.RollingFileAppender .createAppender(String,String,String,String,String,String ,TriggeringPolicy,RolloverStrategy,Layout,Filter,String,String,String ,Configuration) |
createAppender(String,String,String,String,String,TriggeringPolicy ,RolloverStrategy,Layout,Filter,String,String,String,Configuration) | org.apache.logging.log4j.core.appender.RollingRandomAccessFileAppender .createAppender(String,String,String,String,String,TriggeringPolicy ,RolloverStrategy,Layout,Filter,String,String,String,Configuration) |
createAppender(String,String,String,String,String,String,String,String ,String,String,String,String,String,String,Layout,Filter,String) | org.apache.logging.log4j.core.appender.SMTPAppender.createAppender (String,String,String,String,String,String,String,String,String,String ,String,String,String,String,Layout,Filter,String) |
createAppender(String,String,String,String,String,String,String,String ,Layout,Filter,String,Configuration) | org.apache.logging.log4j.core.appender.SocketAppender.createAppender (String,String,String,String,String,String,String,String,Layout,Filter ,String,Configuration) |
createAppender(String,String,String,String,String,String,String,String ,String,String,String,String,String,String,String,String,String,String ,String,String,String,String,String,Filter,Configuration,String,String ,LoggerFields[],String) | org.apache.logging.log4j.core.appender.SyslogAppender.createAppender (String,String,String,String,String,String,String,String,String,String ,String,String,String,String,String,String,String,String,String,String ,String,String,String,Filter,Configuration,String,String ,LoggerFields[],String) |
createAppender(String,String,SSLConfiguration,String,String,String ,String,String,String,String,String,String,String,String,String,String ,String,String,String,String,String,String,String,Filter,Configuration ,String,String,LoggerFields[],String) | org.apache.logging.log4j.core.appender.TLSSyslogAppender .createAppender(String,String,SSLConfiguration,String,String,String ,String,String,String,String,String,String,String,String,String,String ,String,String,String,String,String,String,String,Filter,Configuration ,String,String,LoggerFields[],String) |
toString() | org.apache.logging.log4j.core.appender.TLSSyslogFrame.toString() |
main(String[]) | org.apache.logging.log4j.core.appender.FileAppenderTest$ProcessTest .main(String[]) |
testMultipleVMs() | org.apache.logging.log4j.core.appender.FileAppenderTest .testMultipleVMs() |
Statistics
Stat |
---|
Sum: |
Average: |
Minimum: |
Maximum: |
Standard deviation: |
Variance: |
![]() | Critical Rule warning: Always override hashcode when you override equals |
warnif count > 0
from t in Types where !t.IsThirdParty && t.Methods.Where(a=>a.Name=="equals(Object)").Count()>0
&& t.Methods.Where(a=>a.Name=="hashCode()").Count()==0
select t
1 types matched
type | Full Name |
---|---|
TLSSyslogFrame | org.apache.logging.log4j.core.appender.TLSSyslogFrame |
Statistics
Stat |
---|
Sum: |
Average: |
Minimum: |
Maximum: |
Standard deviation: |
Variance: |
![]() | Critical Rule warning: Always override toString |
warnif count > 0
from t in Types where !t.IsThirdParty && t.IsClass && t.Methods.Where(a=>a.Name=="toString()").Count()==0
select t
//While java.lang.Object provides an implementation of the toString method,
//the string that it returns is generally not what the user of your class wants to see. I
857 types matched
types | Full Name |
---|---|
EventLogger | org.apache.logging.log4j.EventLogger |
LogManager | org.apache.logging.log4j.LogManager |
LoggingException | org.apache.logging.log4j.LoggingException |
MarkerManager | org.apache.logging.log4j.MarkerManager |
ThreadContext | org.apache.logging.log4j.ThreadContext |
AbstractLoggerTest$LogEvent | org.apache.logging.log4j.AbstractLoggerTest$LogEvent |
AbstractLoggerTest | org.apache.logging.log4j.AbstractLoggerTest |
EventLoggerTest | org.apache.logging.log4j.EventLoggerTest |
LevelTest | org.apache.logging.log4j.LevelTest |
LogManagerTest | org.apache.logging.log4j.LogManagerTest |
LoggerTest$1 | org.apache.logging.log4j.LoggerTest$1 |
LoggerTest$TestParameterizedMessageFactory | org.apache.logging.log4j.LoggerTest$TestParameterizedMessageFactory |
LoggerTest$TestStringFormatterMessageFactory | org.apache.logging.log4j.LoggerTest$TestStringFormatterMessageFactory |
LoggerTest | org.apache.logging.log4j.LoggerTest |
NoopThreadContextTest | org.apache.logging.log4j.NoopThreadContextTest |
TestLogger | org.apache.logging.log4j.TestLogger |
TestLoggerContext | org.apache.logging.log4j.TestLoggerContext |
TestLoggerContextFactory | org.apache.logging.log4j.TestLoggerContextFactory |
ThreadContextInheritanceTest$TestThread | org.apache.logging.log4j.ThreadContextInheritanceTest$TestThread |
ThreadContextInheritanceTest | org.apache.logging.log4j.ThreadContextInheritanceTest |
ThreadContextTest$TestThread | org.apache.logging.log4j.ThreadContextTest$TestThread |
ThreadContextTest | org.apache.logging.log4j.ThreadContextTest |
AbstractMessageFactory | org.apache.logging.log4j.message.AbstractMessageFactory |
BasicThreadInformation | org.apache.logging.log4j.message.BasicThreadInformation |
ExtendedThreadInformation$1 | org.apache.logging.log4j.message.ExtendedThreadInformation$1 |
ExtendedThreadInformation | org.apache.logging.log4j.message.ExtendedThreadInformation |
FormattedMessageFactory | org.apache.logging.log4j.message.FormattedMessageFactory |
LocalizedMessage | org.apache.logging.log4j.message.LocalizedMessage |
LocalizedMessageFactory | org.apache.logging.log4j.message.LocalizedMessageFactory |
MapMessage$1 | org.apache.logging.log4j.message.MapMessage$1 |
MessageFormatMessageFactory | org.apache.logging.log4j.message.MessageFormatMessageFactory |
ParameterizedMessageFactory | org.apache.logging.log4j.message.ParameterizedMessageFactory |
StringFormatterMessageFactory | org.apache.logging.log4j.message.StringFormatterMessageFactory |
ThreadDumpMessage$1 | org.apache.logging.log4j.message.ThreadDumpMessage$1 |
ThreadDumpMessage$BasicThreadInfoFactory | org.apache.logging.log4j.message .ThreadDumpMessage$BasicThreadInfoFactory |
ThreadDumpMessage$ExtendedThreadInfoFactory | org.apache.logging.log4j.message .ThreadDumpMessage$ExtendedThreadInfoFactory |
ThreadDumpMessage$ThreadDumpMessageProxy | org.apache.logging.log4j.message .ThreadDumpMessage$ThreadDumpMessageProxy |
FormattedMessageTest | org.apache.logging.log4j.message.FormattedMessageTest |
LocalizedMessageTest | org.apache.logging.log4j.message.LocalizedMessageTest |
MapMessageTest | org.apache.logging.log4j.message.MapMessageTest |
MessageFormatMessageTest | org.apache.logging.log4j.message.MessageFormatMessageTest |
MessageFormatsPerfTest | org.apache.logging.log4j.message.MessageFormatsPerfTest |
ObjectMessageTest | org.apache.logging.log4j.message.ObjectMessageTest |
ParameterizedMessageTest | org.apache.logging.log4j.message.ParameterizedMessageTest |
StringFormattedMessageTest | org.apache.logging.log4j.message.StringFormattedMessageTest |
StructuredDataMessageTest | org.apache.logging.log4j.message.StructuredDataMessageTest |
ThreadDumpMessageTest$Thread1 | org.apache.logging.log4j.message.ThreadDumpMessageTest$Thread1 |
ThreadDumpMessageTest$Thread2 | org.apache.logging.log4j.message.ThreadDumpMessageTest$Thread2 |
ThreadDumpMessageTest | org.apache.logging.log4j.message.ThreadDumpMessageTest |
SimpleLogger | org.apache.logging.log4j.simple.SimpleLogger |
SimpleLoggerContext | org.apache.logging.log4j.simple.SimpleLoggerContext |
SimpleLoggerContextFactory | org.apache.logging.log4j.simple.SimpleLoggerContextFactory |
AbstractLoggerWrapper | org.apache.logging.log4j.spi.AbstractLoggerWrapper |
DefaultThreadContextMap$1 | org.apache.logging.log4j.spi.DefaultThreadContextMap$1 |
LoggerStream$1 | org.apache.logging.log4j.spi.LoggerStream$1 |
LoggerStream$HelperStream | org.apache.logging.log4j.spi.LoggerStream$HelperStream |
Provider | org.apache.logging.log4j.spi.Provider |
DefaultThreadContextMapTest | org.apache.logging.log4j.spi.DefaultThreadContextMapTest |
DefaultThreadContextStackTest | org.apache.logging.log4j.spi.DefaultThreadContextStackTest |
LoggerStreamTest | org.apache.logging.log4j.spi.LoggerStreamTest |
MutableThreadContextStackTest | org.apache.logging.log4j.spi.MutableThreadContextStackTest |
StatusConsoleListener | org.apache.logging.log4j.status.StatusConsoleListener |
StatusData | org.apache.logging.log4j.status.StatusData |
StatusLogger$1 | org.apache.logging.log4j.status.StatusLogger$1 |
StatusLogger$BoundedQueue<E> | org.apache.logging.log4j.status.StatusLogger$BoundedQueue |
StatusLogger | org.apache.logging.log4j.status.StatusLogger |
EnglishEnums | org.apache.logging.log4j.util.EnglishEnums |
PropertiesUtil | org.apache.logging.log4j.util.PropertiesUtil |
ProviderUtil$1 | org.apache.logging.log4j.util.ProviderUtil$1 |
ProviderUtil | org.apache.logging.log4j.util.ProviderUtil |
AbstractLoadBundleTest | org.apache.logging.log4j.osgi.AbstractLoadBundleTest |
BundleTestInfo | org.apache.logging.log4j.osgi.BundleTestInfo |
AbstractEquinoxLoadBundleTest | org.apache.logging.log4j.osgi.equinox.AbstractEquinoxLoadBundleTest |
EquinoxLoadApiBundleTest | org.apache.logging.log4j.osgi.equinox.EquinoxLoadApiBundleTest |
AbstractFelixLoadBundleTest | org.apache.logging.log4j.osgi.felix.AbstractFelixLoadBundleTest |
FelixLoadApiBundleTest | org.apache.logging.log4j.osgi.felix.FelixLoadApiBundleTest |
DebugDisabledPerformanceComparison | org.apache.logging.log4j.DebugDisabledPerformanceComparison |
FilterPerformanceComparison$Worker | org.apache.logging.log4j.FilterPerformanceComparison$Worker |
FilterPerformanceComparison | org.apache.logging.log4j.FilterPerformanceComparison |
FormatterLoggerManualExample$1 | org.apache.logging.log4j.FormatterLoggerManualExample$1 |
FormatterLoggerManualExample$User | org.apache.logging.log4j.FormatterLoggerManualExample$User |
FormatterLoggerManualExample | org.apache.logging.log4j.FormatterLoggerManualExample |
LocationPerfCheck | org.apache.logging.log4j.LocationPerfCheck |
Log4jInitPerformance | org.apache.logging.log4j.Log4jInitPerformance |
LogbackSubstitution | org.apache.logging.log4j.LogbackSubstitution |
PerformanceComparison | org.apache.logging.log4j.PerformanceComparison |
PerformanceRun | org.apache.logging.log4j.PerformanceRun |
AbstractServer | org.apache.logging.log4j.core.AbstractServer |
Logger$PrivateConfig | org.apache.logging.log4j.core.Logger$PrivateConfig |
LoggerContext$ShutdownThread | org.apache.logging.log4j.core.LoggerContext$ShutdownThread |
LoggerContext | org.apache.logging.log4j.core.LoggerContext |
AppenderRefLevelJsonTest | org.apache.logging.log4j.core.AppenderRefLevelJsonTest |
AppenderRefLevelTest | org.apache.logging.log4j.core.AppenderRefLevelTest |
BasicConfigurationFactory$BasicConfiguration | org.apache.logging.log4j.core .BasicConfigurationFactory$BasicConfiguration |
BasicConfigurationFactory | org.apache.logging.log4j.core.BasicConfigurationFactory |
BasicLoggingTest | org.apache.logging.log4j.core.BasicLoggingTest |
CollectionLoggingTest | org.apache.logging.log4j.core.CollectionLoggingTest |
ExtendedLevelTest | org.apache.logging.log4j.core.ExtendedLevelTest |
FileConfigTest | org.apache.logging.log4j.core.FileConfigTest |
HostNameTest | org.apache.logging.log4j.core.HostNameTest |
Statistics
Stat |
---|
Sum: |
Average: |
Minimum: |
Maximum: |
Standard deviation: |
Variance: |
![]() | Critical Rule warning: Prefer interfaces to abstract classes |
warnif count > 0
from t in Types where !t.IsThirdParty && t.IsAbstract
select t
45 types matched
types | Full Name |
---|---|
AbstractMessageFactory | org.apache.logging.log4j.message.AbstractMessageFactory |
AbstractLogger | org.apache.logging.log4j.spi.AbstractLogger |
AbstractLoadBundleTest | org.apache.logging.log4j.osgi.AbstractLoadBundleTest |
AbstractEquinoxLoadBundleTest | org.apache.logging.log4j.osgi.equinox.AbstractEquinoxLoadBundleTest |
AbstractFelixLoadBundleTest | org.apache.logging.log4j.osgi.felix.AbstractFelixLoadBundleTest |
AbstractFilter | org.apache.logging.log4j.core.filter.AbstractFilter |
AbstractFilterable | org.apache.logging.log4j.core.filter.AbstractFilterable |
AbstractLayout<T> | org.apache.logging.log4j.core.layout.AbstractLayout |
AbstractStringLayout | org.apache.logging.log4j.core.layout.AbstractStringLayout |
StrMatcher | org.apache.logging.log4j.core.lookup.StrMatcher |
AbstractPatternConverter | org.apache.logging.log4j.core.pattern.AbstractPatternConverter |
AbstractStyleNameConverter | org.apache.logging.log4j.core.pattern.AbstractStyleNameConverter |
DatePatternConverter$Formatter | org.apache.logging.log4j.core.pattern.DatePatternConverter$Formatter |
LogEventPatternConverter | org.apache.logging.log4j.core.pattern.LogEventPatternConverter |
NameAbbreviator | org.apache.logging.log4j.core.pattern.NameAbbreviator |
NamePatternConverter | org.apache.logging.log4j.core.pattern.NamePatternConverter |
AbstractAppender | org.apache.logging.log4j.core.appender.AbstractAppender |
AbstractManager | org.apache.logging.log4j.core.appender.AbstractManager |
AbstractOutputStreamAppender<M> | org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender |
AbstractDatabaseAppender<T> | org.apache.logging.log4j.core.appender.db.AbstractDatabaseAppender |
AbstractDatabaseManager$AbstractFactoryData | org.apache.logging.log4j.core.appender.db .AbstractDatabaseManager$AbstractFactoryData |
AbstractDatabaseManager | org.apache.logging.log4j.core.appender.db.AbstractDatabaseManager |
AbstractDatabaseAppenderTest$LocalAbstractDatabaseAppender | org.apache.logging.log4j.core.appender.db .AbstractDatabaseAppenderTest$LocalAbstractDatabaseAppender |
AbstractDatabaseAppenderTest$LocalAbstractDatabaseManager | org.apache.logging.log4j.core.appender.db .AbstractDatabaseAppenderTest$LocalAbstractDatabaseManager |
AbstractJdbcAppenderTest | org.apache.logging.log4j.core.appender.db.jdbc .AbstractJdbcAppenderTest |
AbstractLogEventWrapperEntity | org.apache.logging.log4j.core.appender.db.jpa .AbstractLogEventWrapperEntity |
BasicLogEventEntity | org.apache.logging.log4j.core.appender.db.jpa.BasicLogEventEntity |
AbstractJpaAppenderTest | org.apache.logging.log4j.core.appender.db.jpa.AbstractJpaAppenderTest |
AbstractRolloverStrategy | org.apache.logging.log4j.core.appender.rolling .AbstractRolloverStrategy |
AbstractRollingAppenderSizeTest | org.apache.logging.log4j.core.appender.rolling .AbstractRollingAppenderSizeTest |
AbstractAction | org.apache.logging.log4j.core.appender.rolling.action.AbstractAction |
ConfigurationFactory | org.apache.logging.log4j.core.config.ConfigurationFactory |
ResolverUtil$ClassTest | org.apache.logging.log4j.core.config.plugins.ResolverUtil$ClassTest |
ResolverUtil$ResourceTest | org.apache.logging.log4j.core.config.plugins.ResolverUtil$ResourceTest |
AbstractJMSManager | org.apache.logging.log4j.core.net.AbstractJMSManager |
AbstractJMSReceiver | org.apache.logging.log4j.core.net.AbstractJMSReceiver |
AbstractSocketManager | org.apache.logging.log4j.core.net.AbstractSocketManager |
AbstractSocketServerTest | org.apache.logging.log4j.core.net.AbstractSocketServerTest |
TLSSyslogInputStreamReaderBase | org.apache.logging.log4j.core.net.ssl.TLSSyslogInputStreamReaderBase |
Layout | org.apache.log4j.Layout |
Filter | org.apache.log4j.spi.Filter |
AbstractFlumeManager | org.apache.logging.log4j.flume.appender.AbstractFlumeManager |
ExceptionAwareTagSupport | org.apache.logging.log4j.taglib.ExceptionAwareTagSupport |
LoggerAwareTagSupport | org.apache.logging.log4j.taglib.LoggerAwareTagSupport |
LoggingMessageTagSupport | org.apache.logging.log4j.taglib.LoggingMessageTagSupport |
Statistics
Stat |
---|
Sum: |
Average: |
Minimum: |
Maximum: |
Standard deviation: |
Variance: |
![]() | Critical Rule warning: Use interfaces only to define types |
warnif count > 0
from t in Types where !t.IsThirdParty && t.IsInterface && t.NbMethods==0
select t
1 types matched
type | Full Name |
---|---|
AnsiConverter | org.apache.logging.log4j.core.pattern.AnsiConverter |
Statistics
Stat |
---|
Sum: |
Average: |
Minimum: |
Maximum: |
Standard deviation: |
Variance: |
![]() | Critical Rule warning: Avoid using raw types |
warnif count > 0
let rawTypes = ThirdParty.Types.WithFullNameIn(
"java.util.Collection")
from m in Application.Methods.UsingAny(rawTypes)
select m
31 methods matched
methods | Full Name |
---|---|
values() | org.apache.logging.log4j.Level.values() |
setStack(Collection) | org.apache.logging.log4j.ThreadContext.setStack(Collection) |
getParameters() | org.apache.logging.log4j.message.MapMessage.getParameters() |
recursiveDeepToString(Object,StringBuilder,Set) | org.apache.logging.log4j.message.ParameterizedMessage .recursiveDeepToString(Object,StringBuilder,Set) |
containsAll(Collection) | org.apache.logging.log4j.spi.DefaultThreadContextStack.containsAll (Collection) |
addAll(Collection) | org.apache.logging.log4j.spi.DefaultThreadContextStack.addAll (Collection) |
removeAll(Collection) | org.apache.logging.log4j.spi.DefaultThreadContextStack.removeAll (Collection) |
retainAll(Collection) | org.apache.logging.log4j.spi.DefaultThreadContextStack.retainAll (Collection) |
updateLoggers(Configuration) | org.apache.logging.log4j.core.LoggerContext.updateLoggers (Configuration) |
testLayout() | org.apache.logging.log4j.core.layout.RFC5424LayoutTest.testLayout() |
testEscape() | org.apache.logging.log4j.core.layout.RFC5424LayoutTest.testEscape() |
testException() | org.apache.logging.log4j.core.layout.RFC5424LayoutTest.testException() |
testMDCLoggerFields() | org.apache.logging.log4j.core.layout.RFC5424LayoutTest .testMDCLoggerFields() |
testLoggerFields() | org.apache.logging.log4j.core.layout.RFC5424LayoutTest .testLoggerFields() |
testDiscardEmptyLoggerFields() | org.apache.logging.log4j.core.layout.RFC5424LayoutTest .testDiscardEmptyLoggerFields() |
testSubstituteStructuredData() | org.apache.logging.log4j.core.layout.RFC5424LayoutTest .testSubstituteStructuredData() |
testParameterizedMessage() | org.apache.logging.log4j.core.layout.RFC5424LayoutTest .testParameterizedMessage() |
testLayout() | org.apache.logging.log4j.core.layout.SyslogLayoutTest.testLayout() |
PatternParser(Configuration,String,Class,Class) | org.apache.logging.log4j.core.pattern.PatternParser.PatternParser (Configuration,String,Class,Class) |
getLoggerContexts() | org.apache.logging.log4j.core.selector.ClassLoaderContextSelector .getLoggerContexts() |
append(LogEvent) | org.apache.logging.log4j.core.appender.rewrite.RewriteAppender.append (LogEvent) |
latencyTable() | org.apache.logging.log4j.core.async.perftest.PerfTestResultFormatter .latencyTable() |
throughputTable() | org.apache.logging.log4j.core.async.perftest.PerfTestResultFormatter .throughputTable() |
start() | org.apache.logging.log4j.core.config.BaseConfiguration.start() |
stop() | org.apache.logging.log4j.core.config.BaseConfiguration.stop() |
removeAppender(String) | org.apache.logging.log4j.core.config.BaseConfiguration.removeAppender (String) |
getInstance() | org.apache.logging.log4j.core.config.ConfigurationFactory.getInstance( ) |
clearAppenders() | org.apache.logging.log4j.core.config.LoggerConfig.clearAppenders() |
callAppenders(LogEvent) | org.apache.logging.log4j.core.config.LoggerConfig.callAppenders (LogEvent) |
verifyExpectedEntriesAdvertised(Map) | org.apache.logging.log4j.core.config.AdvertiserTest .verifyExpectedEntriesAdvertised(Map) |
loadImplementationsInBundle(ResolverUtil$Test,String) | org.apache.logging.log4j.core.config.plugins.ResolverUtil .loadImplementationsInBundle(ResolverUtil$Test,String) |
Statistics
Stat |
---|
Sum: |
Average: |
Minimum: |
Maximum: |
Standard deviation: |
Variance: |
![]() | Critical Rule warning: Don't force gabrage collector |
warnif count > 0 from m in Methods where m.IsUsing ("java.lang.System.gc()".AllowNoMatch())
select new { m, m.NbBCInstructions }
4 methods matched
methods | # ByteCode instructions | Full Name |
---|---|---|
setupClass() | 62 | org.apache.logging.log4j.core.SimplePerfTest.setupClass() |
debugDisabled() | 43 | org.apache.logging.log4j.core.SimplePerfTest.debugDisabled() |
debugDisabledByLevel() | 44 | org.apache.logging.log4j.core.SimplePerfTest.debugDisabledByLevel() |
debugLogger() | 45 | org.apache.logging.log4j.core.SimplePerfTest.debugLogger() |
Statistics
Stat | # ByteCode instructions |
---|---|
Sum: | 194 |
Average: | 48.5 |
Minimum: | 43 |
Maximum: | 62 |
Standard deviation: | 7.83 |
Variance: | 61.25 |
![]() | Critical Rule warning: Do not raise generic exception |
warnif count > 0 from m in Methods
let depth0 = m.DepthOfCreateA("java.lang.Exception".AllowNoMatch())
where depth0 == 1
select new { m, depth0 }
14 methods matched
methods | depth0 | Full Name |
---|---|---|
ThrowablePatternConverterTest$LocalizedException() | 1 | org.apache.logging.log4j.core.pattern .ThrowablePatternConverterTest$LocalizedException .ThrowablePatternConverterTest$LocalizedException() |
UnexpectedFormatException(String) | 1 | org.apache.logging.log4j.core.util.UnexpectedFormatException .UnexpectedFormatException(String) |
TLSSocketManager$TLSSocketManagerFactory$TLSSocketManagerFactoryExcept ion(TLSSocketManager$TLSSocketManagerFactory) | 1 | org.apache.logging.log4j.core.net .TLSSocketManager$TLSSocketManagerFactory$TLSSocketManagerFactoryExcep tion .TLSSocketManager$TLSSocketManagerFactory$TLSSocketManagerFactoryExcep tion(TLSSocketManager$TLSSocketManagerFactory) |
loadTrustManagerFactory() | 1 | org.apache.logging.log4j.core.net.ssl.SSLConfiguration .loadTrustManagerFactory() |
loadKeyManagerFactory() | 1 | org.apache.logging.log4j.core.net.ssl.SSLConfiguration .loadKeyManagerFactory() |
SSLConfigurationException(Exception) | 1 | org.apache.logging.log4j.core.net.ssl.SSLConfigurationException .SSLConfigurationException(Exception) |
StoreConfigurationException(Exception) | 1 | org.apache.logging.log4j.core.net.ssl.StoreConfigurationException .StoreConfigurationException(Exception) |
PropertySetterException(String) | 1 | org.apache.log4j.config.PropertySetterException .PropertySetterException(String) |
PropertySetterException(Throwable) | 1 | org.apache.log4j.config.PropertySetterException .PropertySetterException(Throwable) |
testDoEndTag() | 1 | org.apache.logging.log4j.taglib.CatchingTagTest.testDoEndTag() |
testException() | 1 | org.apache.logging.log4j.taglib.ExceptionAwareTagSupportTest .testException() |
testDoEndTagStringMessageNoMarkerException() | 1 | org.apache.logging.log4j.taglib.LoggingMessageTagSupportTest .testDoEndTagStringMessageNoMarkerException() |
testDoEndTagMessageNoMarkerException() | 1 | org.apache.logging.log4j.taglib.LoggingMessageTagSupportTest .testDoEndTagMessageNoMarkerException() |
testDoEndTagObjectNoMarkerException() | 1 | org.apache.logging.log4j.taglib.LoggingMessageTagSupportTest .testDoEndTagObjectNoMarkerException() |
Statistics
Stat | depth0 |
---|---|
Sum: | 14 |
Average: | 1 |
Minimum: | 1 |
Maximum: | 1 |
Standard deviation: | 0 |
Variance: | 0 |
Dead Code | 030 |
|
![]() | Rule warning: Potentially dead Types |
warnif count > 0
// Filter procedure for types that should'nt be considered as dead
let canTypeBeConsideredAsDeadProc = new Func<IType, bool>(
t2 => !t2.IsPublic && // Public types might be used by client applications of your projects.
t2.Name != "Program" &&
!t2.IsGeneratedByCompiler
)
// Select types unused
let typesUnused =
from t4 in JustMyCode.Types where
t4.NbTypesUsingMe == 0 && canTypeBeConsideredAsDeadProc(t4)
select t4
// Dead types = types used only by unused types (recursive)
let deadTypesMetric = typesUnused.FillIterative(
types => from t3 in codeBase.Application.Types.UsedByAny(types).Except(types)
where canTypeBeConsideredAsDeadProc(t3) &&
t3.TypesUsingMe.Intersect(types).Count() == t3.NbTypesUsingMe
select t3)
from t in deadTypesMetric.DefinitionDomain
select new { t, t.TypesUsingMe, depth = deadTypesMetric[t] }
2 types matched
types | TypesUsingMe | depth | Full Name |
---|---|---|---|
ClockFactoryTest$MyClock | 0 type | 0 | org.apache.logging.log4j.core.helpers.ClockFactoryTest$MyClock |
CachedDateFormat | 0 type | 0 | org.apache.logging.log4j.core.pattern.CachedDateFormat |
Statistics
Stat | TypesUsingMe | depth |
---|---|---|
Sum: | 0 | 0 |
Average: | 0 | 0 |
Minimum: | 0 | 0 |
Maximum: | 0 | 0 |
Standard deviation: | 0 | 0 |
Variance: | 0 | 0 |
![]() | Rule warning: Potentially dead Methods |
warnif count > 0
// Filter procedure for methods that should'nt be considered as dead
let canMethodBeConsideredAsDeadProc = new Func<IMethod, bool>(
m => !m.IsPubliclyVisible && // Public methods might be used by client applications of your projects.
!m.IsEntryPoint && // Main() method is not used by-design.
!m.IsClassConstructor && // The BC code never explicitely calls class constructors.
!(m.IsConstructor && // Don't take account of protected ctor that might be call by a derived ctors.
m.IsProtected) &&
!m.IsGeneratedByCompiler)
// Get methods unused
let methodsUnused =
from m2 in JustMyCode.Methods where
m2.NbMethodsCallingMe == 0 &&
canMethodBeConsideredAsDeadProc(m2)
select m2
// Dead methods = methods used only by unused methods (recursive)
let deadMethodsMetric = methodsUnused.FillIterative(
methods => // Unique loop, just to let a chance to build the hashset.
from o in (new object()).ToEnumerable()
// Use a hashet to make Intersect calls much faster!
let hashset = methods.ToHashSet()
from m3 in codeBase.Application.Methods.UsedByAny(methods).Except(methods)
where canMethodBeConsideredAsDeadProc(m3) &&
// Select methods called only by methods already considered as dead
hashset.Intersect(m3.MethodsCallingMe).Count() == m3.NbMethodsCallingMe
select m3)
from m4 in JustMyCode.Methods.Intersect(deadMethodsMetric.DefinitionDomain)
select new { m4, m4.MethodsCallingMe, depth = deadMethodsMetric[m4] }
313 methods matched
methods | MethodsCallingMe | depth | Full Name |
---|---|---|---|
EventLogger() | 0 method | 0 | org.apache.logging.log4j.EventLogger.EventLogger() |
getName() | 0 method | 0 | org.apache.logging.log4j.MarkerManager$Log4jMarker.getName() |
getParent() | 0 method | 0 | org.apache.logging.log4j.MarkerManager$Log4jMarker.getParent() |
isInstanceOf(Marker) | 0 method | 0 | org.apache.logging.log4j.MarkerManager$Log4jMarker.isInstanceOf(Marker ) |
isInstanceOf(String) | 0 method | 0 | org.apache.logging.log4j.MarkerManager$Log4jMarker.isInstanceOf(String ) |
equals(Object) | 0 method | 0 | org.apache.logging.log4j.MarkerManager$Log4jMarker.equals(Object) |
hashCode() | 0 method | 0 | org.apache.logging.log4j.MarkerManager$Log4jMarker.hashCode() |
toString() | 0 method | 0 | org.apache.logging.log4j.MarkerManager$Log4jMarker.toString() |
MarkerManager() | 0 method | 0 | org.apache.logging.log4j.MarkerManager.MarkerManager() |
ThreadContext() | 0 method | 0 | org.apache.logging.log4j.ThreadContext.ThreadContext() |
run() | 0 method | 0 | org.apache.logging.log4j.ThreadContextInheritanceTest$TestThread.run() |
run() | 0 method | 0 | org.apache.logging.log4j.ThreadContextTest$TestThread.run() |
BasicThreadInformation(Thread) | 1 method | 1 | org.apache.logging.log4j.message.BasicThreadInformation .BasicThreadInformation(Thread) |
equals(Object) | 0 method | 0 | org.apache.logging.log4j.message.BasicThreadInformation.equals(Object) |
hashCode() | 0 method | 0 | org.apache.logging.log4j.message.BasicThreadInformation.hashCode() |
printThreadInfo(StringBuilder) | 0 method | 0 | org.apache.logging.log4j.message.BasicThreadInformation .printThreadInfo(StringBuilder) |
printStack(StringBuilder,StackTraceElement[]) | 0 method | 0 | org.apache.logging.log4j.message.BasicThreadInformation.printStack (StringBuilder,StackTraceElement[]) |
ExtendedThreadInformation(ThreadInfo) | 1 method | 1 | org.apache.logging.log4j.message.ExtendedThreadInformation .ExtendedThreadInformation(ThreadInfo) |
printThreadInfo(StringBuilder) | 0 method | 0 | org.apache.logging.log4j.message.ExtendedThreadInformation .printThreadInfo(StringBuilder) |
printStack(StringBuilder,StackTraceElement[]) | 0 method | 0 | org.apache.logging.log4j.message.ExtendedThreadInformation.printStack (StringBuilder,StackTraceElement[]) |
formatLock(StringBuilder,LockInfo) | 1 method | 1 | org.apache.logging.log4j.message.ExtendedThreadInformation.formatLock (StringBuilder,LockInfo) |
formatState(StringBuilder,ThreadInfo) | 1 method | 1 | org.apache.logging.log4j.message.ExtendedThreadInformation.formatState (StringBuilder,ThreadInfo) |
writeObject(ObjectOutputStream) | 0 method | 0 | org.apache.logging.log4j.message.FormattedMessage.writeObject (ObjectOutputStream) |
readObject(ObjectInputStream) | 0 method | 0 | org.apache.logging.log4j.message.FormattedMessage.readObject (ObjectInputStream) |
writeObject(ObjectOutputStream) | 0 method | 0 | org.apache.logging.log4j.message.LocalizedMessage.writeObject (ObjectOutputStream) |
readObject(ObjectInputStream) | 0 method | 0 | org.apache.logging.log4j.message.LocalizedMessage.readObject (ObjectInputStream) |
writeObject(ObjectOutputStream) | 0 method | 0 | org.apache.logging.log4j.message.MessageFormatMessage.writeObject (ObjectOutputStream) |
readObject(ObjectInputStream) | 0 method | 0 | org.apache.logging.log4j.message.MessageFormatMessage.readObject (ObjectInputStream) |
writeObject(ObjectOutputStream) | 0 method | 0 | org.apache.logging.log4j.message.ObjectMessage.writeObject (ObjectOutputStream) |
readObject(ObjectInputStream) | 0 method | 0 | org.apache.logging.log4j.message.ObjectMessage.readObject (ObjectInputStream) |
writeObject(ObjectOutputStream) | 0 method | 0 | org.apache.logging.log4j.message.StringFormattedMessage.writeObject (ObjectOutputStream) |
readObject(ObjectInputStream) | 0 method | 0 | org.apache.logging.log4j.message.StringFormattedMessage.readObject (ObjectInputStream) |
createThreadInfo() | 0 method | 0 | org.apache.logging.log4j.message .ThreadDumpMessage$BasicThreadInfoFactory.createThreadInfo() |
createThreadInfo() | 0 method | 0 | org.apache.logging.log4j.message .ThreadDumpMessage$ExtendedThreadInfoFactory.createThreadInfo() |
readResolve() | 0 method | 0 | org.apache.logging.log4j.message .ThreadDumpMessage$ThreadDumpMessageProxy.readResolve() |
readObject(ObjectInputStream) | 0 method | 0 | org.apache.logging.log4j.message.ThreadDumpMessage.readObject (ObjectInputStream) |
run() | 0 method | 0 | org.apache.logging.log4j.message.ThreadDumpMessageTest$Thread1.run() |
run() | 0 method | 0 | org.apache.logging.log4j.message.ThreadDumpMessageTest$Thread2.run() |
log(int) | 1 method | 2 | org.apache.logging.log4j.spi.LoggerStream$HelperStream.log(int) |
extractLine(int) | 1 method | 3 | org.apache.logging.log4j.spi.LoggerStream$HelperStream.extractLine(int ) |
leftShiftBuffer(int) | 1 method | 4 | org.apache.logging.log4j.spi.LoggerStream$HelperStream.leftShiftBuffer (int) |
write(int) | 1 method | 1 | org.apache.logging.log4j.spi.LoggerStream$HelperStream.write(int) |
write(byte[],int,int) | 0 method | 0 | org.apache.logging.log4j.spi.LoggerStream$HelperStream.write(byte[] ,int,int) |
StatusLogger$BoundedQueue<E>(StatusLogger,int) | 1 method | 1 | org.apache.logging.log4j.status.StatusLogger$BoundedQueue .StatusLogger$BoundedQueue<E>(StatusLogger,int) |
add(Object) | 0 method | 0 | org.apache.logging.log4j.status.StatusLogger$BoundedQueue.add(Object) |
StatusLogger() | 0 method | 0 | org.apache.logging.log4j.status.StatusLogger.StatusLogger() |
EnglishEnums() | 0 method | 0 | org.apache.logging.log4j.util.EnglishEnums.EnglishEnums() |
ProviderUtil() | 0 method | 0 | org.apache.logging.log4j.util.ProviderUtil.ProviderUtil() |
log4jIsDebug(int) | 0 method | 0 | org.apache.logging.log4j.DebugDisabledPerformanceComparison .log4jIsDebug(int) |
run() | 0 method | 0 | org.apache.logging.log4j.FilterPerformanceComparison$Worker.run() |
run() | 0 method | 0 | org.apache.logging.log4j.core.LoggerContext$ShutdownThread.run() |
nextInt() | 0 method | 0 | org.apache.logging.log4j.core.SimplePerfTest$SimpleRandom.nextInt() |
getState() | 1 method | 1 | org.apache.logging.log4j.core.ThreadedTest$State.getState() |
toString() | 0 method | 0 | org.apache.logging.log4j.core.ThreadedTest$State.toString() |
getDelay(TimeUnit) | 0 method | 0 | org.apache.logging.log4j.core.filter.BurstFilter$LogDelay.getDelay (TimeUnit) |
equals(Object) | 0 method | 0 | org.apache.logging.log4j.core.filter.BurstFilter$LogDelay.equals (Object) |
hashCode() | 0 method | 0 | org.apache.logging.log4j.core.filter.BurstFilter$LogDelay.hashCode() |
CompositeFilter() | 0 method | 0 | org.apache.logging.log4j.core.filter.CompositeFilter.CompositeFilter() |
Assert() | 0 method | 0 | org.apache.logging.log4j.core.helpers.Assert.Assert() |
CachedClock$1(CachedClock,String) | 1 method | 1 | org.apache.logging.log4j.core.helpers.CachedClock$1.CachedClock$1 (CachedClock,String) |
run() | 0 method | 0 | org.apache.logging.log4j.core.helpers.CachedClock$1.run() |
CachedClock() | 0 method | 0 | org.apache.logging.log4j.core.helpers.CachedClock.CachedClock() |
Charsets() | 0 method | 0 | org.apache.logging.log4j.core.helpers.Charsets.Charsets() |
ClockFactory() | 0 method | 0 | org.apache.logging.log4j.core.helpers.ClockFactory.ClockFactory() |
CoarseCachedClock$1(CoarseCachedClock,String) | 1 method | 1 | org.apache.logging.log4j.core.helpers.CoarseCachedClock$1 .CoarseCachedClock$1(CoarseCachedClock,String) |
run() | 0 method | 0 | org.apache.logging.log4j.core.helpers.CoarseCachedClock$1.run() |
CoarseCachedClock() | 0 method | 0 | org.apache.logging.log4j.core.helpers.CoarseCachedClock .CoarseCachedClock() |
Constants() | 0 method | 0 | org.apache.logging.log4j.core.helpers.Constants.Constants() |
FileUtils() | 0 method | 0 | org.apache.logging.log4j.core.helpers.FileUtils.FileUtils() |
Loader() | 0 method | 0 | org.apache.logging.log4j.core.helpers.Loader.Loader() |
NameUtil() | 0 method | 0 | org.apache.logging.log4j.core.helpers.NameUtil.NameUtil() |
NetUtils() | 0 method | 0 | org.apache.logging.log4j.core.helpers.NetUtils.NetUtils() |
OptionConverter() | 0 method | 0 | org.apache.logging.log4j.core.helpers.OptionConverter.OptionConverter( ) |
Transform() | 0 method | 0 | org.apache.logging.log4j.core.helpers.Transform.Transform() |
UUIDUtil() | 0 method | 0 | org.apache.logging.log4j.core.helpers.UUIDUtil.UUIDUtil() |
ClockFactoryTest$MyClock() | 0 method | 0 | org.apache.logging.log4j.core.helpers.ClockFactoryTest$MyClock .ClockFactoryTest$MyClock() |
currentTimeMillis() | 0 method | 0 | org.apache.logging.log4j.core.helpers.ClockFactoryTest$MyClock .currentTimeMillis() |
run() | 0 method | 0 | org.apache.logging.log4j.core.helpers.UUIDTest$Worker.run() |
ContextAnchor() | 0 method | 0 | org.apache.logging.log4j.core.impl.ContextAnchor.ContextAnchor() |
readResolve() | 0 method | 0 | org.apache.logging.log4j.core.impl.Log4jLogEvent$LogEventProxy .readResolve() |
readObject(ObjectInputStream) | 0 method | 0 | org.apache.logging.log4j.core.impl.Log4jLogEvent.readObject (ObjectInputStream) |
ReflectiveCallerClassUtility() | 0 method | 0 | org.apache.logging.log4j.core.impl.ReflectiveCallerClassUtility .ReflectiveCallerClassUtility() |
Server() | 0 method | 0 | org.apache.logging.log4j.core.jmx.Server.Server() |
valueOf(String) | 0 method | 0 | org.apache.logging.log4j.core.layout.HTMLLayout$FontSize.valueOf (String) |
check(String) | 0 method | 0 | org.apache.logging.log4j.core.layout.RFC5424Layout$ExcludeChecker .check(String) |
check(String) | 0 method | 0 | org.apache.logging.log4j.core.layout.RFC5424Layout$IncludeChecker .check(String) |
check(String) | 0 method | 0 | org.apache.logging.log4j.core.layout.RFC5424Layout$NoopChecker.check (String) |
writeStreamHeader() | 0 method | 0 | org.apache.logging.log4j.core.layout .SerializedLayout$PrivateObjectOutputStream.writeStreamHeader() |
SerializedLayout() | 0 method | 0 | org.apache.logging.log4j.core.layout.SerializedLayout.SerializedLayout () |
testUnixTime(String) | 0 method | 0 | org.apache.logging.log4j.core.layout.PatternLayoutTest.testUnixTime (String) |
isMatch(char[],int,int,int) | 0 method | 0 | org.apache.logging.log4j.core.lookup.StrMatcher$CharMatcher.isMatch (char[],int,int,int) |
isMatch(char[],int,int,int) | 0 method | 0 | org.apache.logging.log4j.core.lookup.StrMatcher$CharSetMatcher.isMatch (char[],int,int,int) |
isMatch(char[],int,int,int) | 0 method | 0 | org.apache.logging.log4j.core.lookup.StrMatcher$NoMatcher.isMatch (char[],int,int,int) |
isMatch(char[],int,int,int) | 0 method | 0 | org.apache.logging.log4j.core.lookup.StrMatcher$StringMatcher.isMatch (char[],int,int,int) |
isMatch(char[],int,int,int) | 0 method | 0 | org.apache.logging.log4j.core.lookup.StrMatcher$TrimMatcher.isMatch (char[],int,int,int) |
getLevel() | 0 method | 0 | org.apache.logging.log4j.core.lookup.DateLookupTest$MyLogEvent .getLevel() |
getLoggerName() | 0 method | 0 | org.apache.logging.log4j.core.lookup.DateLookupTest$MyLogEvent .getLoggerName() |
getSource() | 0 method | 0 | org.apache.logging.log4j.core.lookup.DateLookupTest$MyLogEvent .getSource() |
getMessage() | 0 method | 0 | org.apache.logging.log4j.core.lookup.DateLookupTest$MyLogEvent .getMessage() |
getMarker() | 0 method | 0 | org.apache.logging.log4j.core.lookup.DateLookupTest$MyLogEvent .getMarker() |
Statistics
Stat | MethodsCallingMe | depth |
---|---|---|
Sum: | 0 | 41 |
Average: | 0 | 0.13 |
Minimum: | 0 | 0 |
Maximum: | 0 | 4 |
Standard deviation: | 0 | 0.48 |
Variance: | 0 | 0.23 |
![]() | Rule warning: Potentially dead Fields |
warnif count > 0
from f in JustMyCode.Fields where
f.NbMethodsUsingMe == 0 &&
!f.IsPublic && // Although not recommended, public fields might be used by client applications of your projects.
!f.IsLiteral && // The BC code never explicitely uses literal fields.
!f.IsEnumValue && // The BC code never explicitely uses enumeration value.
f.Name!= "serialVersionUID" &&
!f.IsInitOnly
select f
11 fields matched
fields | Full Name |
---|---|
config | org.apache.logging.log4j.core.LateConfigTest.config |
app | org.apache.logging.log4j.core.LateConfigTest.app |
app | org.apache.logging.log4j.core.ShutdownDisabledTest.app |
advertisedConfiguration | org.apache.logging.log4j.core.config.BaseConfiguration .advertisedConfiguration |
app | org.apache.log4j.LoggingTest.app |
logger | org.apache.logging.slf4j.LoggerTest.logger |
slf4jLogger | org.apache.logging.slf4j.LoggerTest.slf4jLogger |
context | org.apache.logging.slf4j.LoggerTest.context |
root | org.apache.logging.slf4j.LoggerTest.root |
rootLogger | org.apache.logging.slf4j.LoggerTest.rootLogger |
list | org.apache.logging.slf4j.LoggerTest.list |
Statistics
Stat |
---|
Sum: |
Average: |
Minimum: |
Maximum: |
Standard deviation: |
Variance: |
Visibility | 040 |
|
![]() | Rule warning: Methods that could have a lower visibility |
warnif count > 0 from m in JustMyCode.Methods where
m.Visibility != m.OptimalVisibility &&
// Eliminate default constructor from the result.
// Whatever the visibility of the declaring class,
// default constructors are public and introduce noise
// in the current rule.
!( m.IsConstructor && m.IsPublic && m.NbParameters == 0) &&
// Don't decrease the visibility of Main() methods.
!m.IsEntryPoint
select new { m,
m.Visibility ,
CouldBeDeclared = m.OptimalVisibility,
m.MethodsCallingMe }
3,747 methods matched
methods | Visibility | CouldBeDeclared | MethodsCallingMe | Full Name |
---|---|---|---|---|
logEvent(StructuredDataMessage,Level) | Public | Private | 0 method | org.apache.logging.log4j.EventLogger.logEvent(StructuredDataMessage ,Level) |
isAtLeastAsSpecificAs(int) | Public | Private | 0 method | org.apache.logging.log4j.Level.isAtLeastAsSpecificAs(int) |
lessOrEqual(Level) | Public | Private | 0 method | org.apache.logging.log4j.Level.lessOrEqual(Level) |
lessOrEqual(int) | Public | Private | 0 method | org.apache.logging.log4j.Level.lessOrEqual(int) |
compareTo(Level) | Public | Private | 1 method | org.apache.logging.log4j.Level.compareTo(Level) |
getDeclaringClass() | Public | Private | 0 method | org.apache.logging.log4j.Level.getDeclaringClass() |
hashCode() | Public | Private | 0 method | org.apache.logging.log4j.Level.hashCode() |
valueOf(Class,String)<T> | Public | Private | 0 method | org.apache.logging.log4j.Level.valueOf(Class,String)<T> |
readResolve() | Protected | Private | 0 method | org.apache.logging.log4j.Level.readResolve() |
getContext(ClassLoader,boolean) | Public | Private | 0 method | org.apache.logging.log4j.LogManager.getContext(ClassLoader,boolean) |
getContext(ClassLoader,boolean,Object) | Public | Private | 0 method | org.apache.logging.log4j.LogManager.getContext(ClassLoader,boolean ,Object) |
getContext(ClassLoader,boolean,Object,URI) | Public | Private | 0 method | org.apache.logging.log4j.LogManager.getContext(ClassLoader,boolean ,Object,URI) |
getContext(String,ClassLoader,boolean) | Protected | Private | 0 method | org.apache.logging.log4j.LogManager.getContext(String,ClassLoader ,boolean) |
getFormatterLogger(Class) | Public | Internal | 1 method | org.apache.logging.log4j.LogManager.getFormatterLogger(Class) |
getFormatterLogger(Object) | Public | Internal | 1 method | org.apache.logging.log4j.LogManager.getFormatterLogger(Object) |
getLogger() | Public | Internal | 2 methods | org.apache.logging.log4j.LogManager.getLogger() |
getLogger(Class,MessageFactory) | Public | Internal | 3 methods | org.apache.logging.log4j.LogManager.getLogger(Class,MessageFactory) |
getLogger(MessageFactory) | Public | Internal | 1 method | org.apache.logging.log4j.LogManager.getLogger(MessageFactory) |
getLogger(Object) | Public | Internal | 3 methods | org.apache.logging.log4j.LogManager.getLogger(Object) |
getLogger(Object,MessageFactory) | Public | Internal | 3 methods | org.apache.logging.log4j.LogManager.getLogger(Object,MessageFactory) |
getRootLogger() | Public | Internal | 1 method | org.apache.logging.log4j.LogManager.getRootLogger() |
LogManager() | Protected | Private | 0 method | org.apache.logging.log4j.LogManager.LogManager() |
MarkerManager$Log4jMarker(String) | Public | Internal | 1 method | org.apache.logging.log4j.MarkerManager$Log4jMarker .MarkerManager$Log4jMarker(String) |
MarkerManager$Log4jMarker(String,Marker) | Public | Internal | 1 method | org.apache.logging.log4j.MarkerManager$Log4jMarker .MarkerManager$Log4jMarker(String,Marker) |
getName() | Public | Private | 0 method | org.apache.logging.log4j.MarkerManager$Log4jMarker.getName() |
getParent() | Public | Private | 0 method | org.apache.logging.log4j.MarkerManager$Log4jMarker.getParent() |
isInstanceOf(Marker) | Public | Private | 0 method | org.apache.logging.log4j.MarkerManager$Log4jMarker.isInstanceOf(Marker ) |
isInstanceOf(String) | Public | Private | 0 method | org.apache.logging.log4j.MarkerManager$Log4jMarker.isInstanceOf(String ) |
equals(Object) | Public | Private | 0 method | org.apache.logging.log4j.MarkerManager$Log4jMarker.equals(Object) |
hashCode() | Public | Private | 0 method | org.apache.logging.log4j.MarkerManager$Log4jMarker.hashCode() |
toString() | Public | Private | 0 method | org.apache.logging.log4j.MarkerManager$Log4jMarker.toString() |
getMarker(String,String) | Public | Private | 0 method | org.apache.logging.log4j.MarkerManager.getMarker(String,String) |
containsKey(String) | Public | Internal | 2 methods | org.apache.logging.log4j.ThreadContext.containsKey(String) |
isEmpty() | Public | Internal | 2 methods | org.apache.logging.log4j.ThreadContext.isEmpty() |
push(String,Object[]) | Public | Internal | 2 methods | org.apache.logging.log4j.ThreadContext.push(String,Object[]) |
AbstractLoggerTest$LogEvent(String,Message,Throwable) | Public | Internal | 1 method | org.apache.logging.log4j.AbstractLoggerTest$LogEvent .AbstractLoggerTest$LogEvent(String,Message,Throwable) |
isEnabled(Level,Marker,Message,Throwable) | Protected | Private | 4 methods | org.apache.logging.log4j.AbstractLoggerTest.isEnabled(Level,Marker ,Message,Throwable) |
isEnabled(Level,Marker,Object,Throwable) | Protected | Private | 0 method | org.apache.logging.log4j.AbstractLoggerTest.isEnabled(Level,Marker ,Object,Throwable) |
isEnabled(Level,Marker,String) | Protected | Private | 0 method | org.apache.logging.log4j.AbstractLoggerTest.isEnabled(Level,Marker ,String) |
isEnabled(Level,Marker,String,Object[]) | Protected | Private | 0 method | org.apache.logging.log4j.AbstractLoggerTest.isEnabled(Level,Marker ,String,Object[]) |
isEnabled(Level,Marker,String,Throwable) | Protected | Private | 0 method | org.apache.logging.log4j.AbstractLoggerTest.isEnabled(Level,Marker ,String,Throwable) |
log(Marker,String,Level,Message,Throwable) | Public | Private | 0 method | org.apache.logging.log4j.AbstractLoggerTest.log(Marker,String,Level ,Message,Throwable) |
testDebug() | Public | Private | 0 method | org.apache.logging.log4j.AbstractLoggerTest.testDebug() |
testError() | Public | Private | 0 method | org.apache.logging.log4j.AbstractLoggerTest.testError() |
testFatal() | Public | Private | 0 method | org.apache.logging.log4j.AbstractLoggerTest.testFatal() |
testInfo() | Public | Private | 0 method | org.apache.logging.log4j.AbstractLoggerTest.testInfo() |
testLogDebug() | Public | Private | 0 method | org.apache.logging.log4j.AbstractLoggerTest.testLogDebug() |
testLogError() | Public | Private | 0 method | org.apache.logging.log4j.AbstractLoggerTest.testLogError() |
testLogFatal() | Public | Private | 0 method | org.apache.logging.log4j.AbstractLoggerTest.testLogFatal() |
testLogInfo() | Public | Private | 0 method | org.apache.logging.log4j.AbstractLoggerTest.testLogInfo() |
testLogTrace() | Public | Private | 0 method | org.apache.logging.log4j.AbstractLoggerTest.testLogTrace() |
testLogWarn() | Public | Private | 0 method | org.apache.logging.log4j.AbstractLoggerTest.testLogWarn() |
testTrace() | Public | Private | 0 method | org.apache.logging.log4j.AbstractLoggerTest.testTrace() |
testWarn() | Public | Private | 0 method | org.apache.logging.log4j.AbstractLoggerTest.testWarn() |
setup() | Public | Private | 0 method | org.apache.logging.log4j.EventLoggerTest.setup() |
structuredData() | Public | Private | 0 method | org.apache.logging.log4j.EventLoggerTest.structuredData() |
testGoodLevels() | Public | Private | 0 method | org.apache.logging.log4j.LevelTest.testGoodLevels() |
testDefault() | Public | Private | 0 method | org.apache.logging.log4j.LevelTest.testDefault() |
testGetLogger() | Public | Private | 0 method | org.apache.logging.log4j.LogManagerTest.testGetLogger() |
basicFlow() | Public | Private | 0 method | org.apache.logging.log4j.LoggerTest.basicFlow() |
catching() | Public | Private | 0 method | org.apache.logging.log4j.LoggerTest.catching() |
debug() | Public | Private | 0 method | org.apache.logging.log4j.LoggerTest.debug() |
debugObject() | Public | Private | 0 method | org.apache.logging.log4j.LoggerTest.debugObject() |
debugWithParms() | Public | Private | 0 method | org.apache.logging.log4j.LoggerTest.debugWithParms() |
debugWithParmsAndThrowable() | Public | Private | 0 method | org.apache.logging.log4j.LoggerTest.debugWithParmsAndThrowable() |
getFormatterLogger_Class() | Public | Private | 0 method | org.apache.logging.log4j.LoggerTest.getFormatterLogger_Class() |
getFormatterLogger_Object() | Public | Private | 0 method | org.apache.logging.log4j.LoggerTest.getFormatterLogger_Object() |
getFormatterLogger_String() | Public | Private | 0 method | org.apache.logging.log4j.LoggerTest.getFormatterLogger_String() |
getLogger_Class_ParameterizedMessageFactory() | Public | Private | 0 method | org.apache.logging.log4j.LoggerTest .getLogger_Class_ParameterizedMessageFactory() |
getLogger_Class_StringFormatterMessageFactory() | Public | Private | 0 method | org.apache.logging.log4j.LoggerTest .getLogger_Class_StringFormatterMessageFactory() |
getLogger_Object_ParameterizedMessageFactory() | Public | Private | 0 method | org.apache.logging.log4j.LoggerTest .getLogger_Object_ParameterizedMessageFactory() |
getLogger_Object_StringFormatterMessageFactory() | Public | Private | 0 method | org.apache.logging.log4j.LoggerTest .getLogger_Object_StringFormatterMessageFactory() |
getLogger_String_MessageFactoryMismatch() | Public | Private | 0 method | org.apache.logging.log4j.LoggerTest .getLogger_String_MessageFactoryMismatch() |
getLogger_String_ParameterizedMessageFactory() | Public | Private | 0 method | org.apache.logging.log4j.LoggerTest .getLogger_String_ParameterizedMessageFactory() |
getLogger_String_StringFormatterMessageFactory() | Public | Private | 0 method | org.apache.logging.log4j.LoggerTest .getLogger_String_StringFormatterMessageFactory() |
getLoggerByClass() | Public | Private | 0 method | org.apache.logging.log4j.LoggerTest.getLoggerByClass() |
getLoggerByNullClass() | Public | Private | 0 method | org.apache.logging.log4j.LoggerTest.getLoggerByNullClass() |
getLoggerByNullObject() | Public | Private | 0 method | org.apache.logging.log4j.LoggerTest.getLoggerByNullObject() |
getLoggerByNullString() | Public | Private | 0 method | org.apache.logging.log4j.LoggerTest.getLoggerByNullString() |
getLoggerByObject() | Public | Private | 0 method | org.apache.logging.log4j.LoggerTest.getLoggerByObject() |
getRootLogger() | Public | Private | 0 method | org.apache.logging.log4j.LoggerTest.getRootLogger() |
getStream() | Public | Private | 0 method | org.apache.logging.log4j.LoggerTest.getStream() |
getStream_Marker() | Public | Private | 0 method | org.apache.logging.log4j.LoggerTest.getStream_Marker() |
isAllEnabled() | Public | Private | 0 method | org.apache.logging.log4j.LoggerTest.isAllEnabled() |
isDebugEnabled() | Public | Private | 0 method | org.apache.logging.log4j.LoggerTest.isDebugEnabled() |
isErrorEnabled() | Public | Private | 0 method | org.apache.logging.log4j.LoggerTest.isErrorEnabled() |
isFatalEnabled() | Public | Private | 0 method | org.apache.logging.log4j.LoggerTest.isFatalEnabled() |
isInfoEnabled() | Public | Private | 0 method | org.apache.logging.log4j.LoggerTest.isInfoEnabled() |
isOffEnabled() | Public | Private | 0 method | org.apache.logging.log4j.LoggerTest.isOffEnabled() |
isTraceEnabled() | Public | Private | 0 method | org.apache.logging.log4j.LoggerTest.isTraceEnabled() |
isWarnEnabled() | Public | Private | 0 method | org.apache.logging.log4j.LoggerTest.isWarnEnabled() |
mdc() | Public | Private | 0 method | org.apache.logging.log4j.LoggerTest.mdc() |
printf() | Public | Private | 0 method | org.apache.logging.log4j.LoggerTest.printf() |
setup() | Public | Private | 0 method | org.apache.logging.log4j.LoggerTest.setup() |
structuredData() | Public | Private | 0 method | org.apache.logging.log4j.LoggerTest.structuredData() |
throwing() | Public | Private | 0 method | org.apache.logging.log4j.LoggerTest.throwing() |
before() | Public | Private | 0 method | org.apache.logging.log4j.NoopThreadContextTest.before() |
after() | Public | Private | 0 method | org.apache.logging.log4j.NoopThreadContextTest.after() |
testNoop() | Public | Private | 0 method | org.apache.logging.log4j.NoopThreadContextTest.testNoop() |
TestLogger(String,MessageFactory) | Public | Internal | 1 method | org.apache.logging.log4j.TestLogger.TestLogger(String,MessageFactory) |
Statistics
Stat | Visibility | CouldBeDeclared | MethodsCallingMe |
---|---|---|---|
Sum: | 0 | 0 | 0 |
Average: | 0 | 0 | 0 |
Minimum: | 0 | 0 | 0 |
Maximum: | 0 | 0 | 0 |
Standard deviation: | 0 | 0 | 0 |
Variance: | 0 | 0 | 0 |
![]() | Rule warning: Fields that could have a lower visibility |
warnif count > 0 from f in JustMyCode.Fields where
f.Visibility != f.OptimalVisibility
select new { f,
f.Visibility ,
CouldBeDeclared = f.OptimalVisibility,
f.MethodsUsingMe }
320 fields matched
fields | Visibility | CouldBeDeclared | MethodsUsingMe | Full Name |
---|---|---|---|---|
EVENT_MARKER | Public | Private | 3 methods | org.apache.logging.log4j.EventLogger.EVENT_MARKER |
ROOT_LOGGER_NAME | Public | Private | 0 method | org.apache.logging.log4j.LogManager.ROOT_LOGGER_NAME |
markerName | Public | Internal | 3 methods | org.apache.logging.log4j.AbstractLoggerTest$LogEvent.markerName |
data | Public | Internal | 3 methods | org.apache.logging.log4j.AbstractLoggerTest$LogEvent.data |
t | Public | Internal | 3 methods | org.apache.logging.log4j.AbstractLoggerTest$LogEvent.t |
logger | Public | Private | 1 method | org.apache.logging.log4j.EventLoggerTest.logger |
results | Public | Private | 3 methods | org.apache.logging.log4j.EventLoggerTest.results |
logger | Public | Private | 21 methods | org.apache.logging.log4j.LoggerTest.logger |
results | Public | Private | 14 methods | org.apache.logging.log4j.LoggerTest.results |
RECURSION_PREFIX | Public | Private | 0 method | org.apache.logging.log4j.message.ParameterizedMessage.RECURSION_PREFIX |
RECURSION_SUFFIX | Public | Private | 0 method | org.apache.logging.log4j.message.ParameterizedMessage.RECURSION_SUFFIX |
ERROR_PREFIX | Public | Private | 0 method | org.apache.logging.log4j.message.ParameterizedMessage.ERROR_PREFIX |
ERROR_SEPARATOR | Public | Private | 0 method | org.apache.logging.log4j.message.ParameterizedMessage.ERROR_SEPARATOR |
ERROR_MSG_SEPARATOR | Public | Private | 0 method | org.apache.logging.log4j.message.ParameterizedMessage .ERROR_MSG_SEPARATOR |
ERROR_SUFFIX | Public | Private | 0 method | org.apache.logging.log4j.message.ParameterizedMessage.ERROR_SUFFIX |
TIME_QUALITY | Public | Private | 1 method | org.apache.logging.log4j.message.StructuredDataId.TIME_QUALITY |
ORIGIN | Public | Private | 1 method | org.apache.logging.log4j.message.StructuredDataId.ORIGIN |
META | Public | Private | 1 method | org.apache.logging.log4j.message.StructuredDataId.META |
RESERVED | Public | Private | 0 method | org.apache.logging.log4j.message.StructuredDataId.RESERVED |
array | Public | Private | 1 method | org.apache.logging.log4j.message.FormattedMessageTest.array |
array | Public | Private | 1 method | org.apache.logging.log4j.message.MessageFormatMessageTest.array |
array | Public | Private | 5 methods | org.apache.logging.log4j.message.MessageFormatsPerfTest.array |
array | Public | Private | 1 method | org.apache.logging.log4j.message.StringFormattedMessageTest.array |
DEFAULT_DATE_TIME_FORMAT | Protected | Private | 0 method | org.apache.logging.log4j.simple.SimpleLoggerContext .DEFAULT_DATE_TIME_FORMAT |
SYSTEM_PREFIX | Protected | Private | 0 method | org.apache.logging.log4j.simple.SimpleLoggerContext.SYSTEM_PREFIX |
FLOW_MARKER | Public | Private | 1 method | org.apache.logging.log4j.spi.AbstractLogger.FLOW_MARKER |
ENTRY_MARKER | Public | Private | 2 methods | org.apache.logging.log4j.spi.AbstractLogger.ENTRY_MARKER |
EXIT_MARKER | Public | Private | 2 methods | org.apache.logging.log4j.spi.AbstractLogger.EXIT_MARKER |
EXCEPTION_MARKER | Public | Private | 1 method | org.apache.logging.log4j.spi.AbstractLogger.EXCEPTION_MARKER |
THROWING_MARKER | Public | Private | 2 methods | org.apache.logging.log4j.spi.AbstractLogger.THROWING_MARKER |
CATCHING_MARKER | Public | Private | 2 methods | org.apache.logging.log4j.spi.AbstractLogger.CATCHING_MARKER |
DEFAULT_MESSAGE_FACTORY_CLASS | Public | Private | 3 methods | org.apache.logging.log4j.spi.AbstractLogger .DEFAULT_MESSAGE_FACTORY_CLASS |
logger | Protected | Private | 7 methods | org.apache.logging.log4j.spi.AbstractLoggerWrapper.logger |
INHERITABLE_MAP | Public | Private | 0 method | org.apache.logging.log4j.spi.DefaultThreadContextMap.INHERITABLE_MAP |
stream | Public | Private | 37 methods | org.apache.logging.log4j.spi.LoggerStream.stream |
MAX_STATUS_ENTRIES | Public | Private | 0 method | org.apache.logging.log4j.status.StatusLogger.MAX_STATUS_ENTRIES |
logger | Public | Private | 2 methods | org.apache.logging.log4j.FormatterLoggerManualExample.logger |
loggerConfig | Public | Internal | 13 methods | org.apache.logging.log4j.core.Logger$PrivateConfig.loggerConfig |
config | Public | Internal | 14 methods | org.apache.logging.log4j.core.Logger$PrivateConfig.config |
PROPERTY_CONFIG | Public | Private | 0 method | org.apache.logging.log4j.core.LoggerContext.PROPERTY_CONFIG |
logger1 | Public | Private | 2 methods | org.apache.logging.log4j.core.AppenderRefLevelJsonTest.logger1 |
logger2 | Public | Private | 2 methods | org.apache.logging.log4j.core.AppenderRefLevelJsonTest.logger2 |
logger3 | Public | Private | 2 methods | org.apache.logging.log4j.core.AppenderRefLevelJsonTest.logger3 |
testMarker | Public | Private | 2 methods | org.apache.logging.log4j.core.AppenderRefLevelJsonTest.testMarker |
logger1 | Public | Private | 2 methods | org.apache.logging.log4j.core.AppenderRefLevelTest.logger1 |
logger2 | Public | Private | 2 methods | org.apache.logging.log4j.core.AppenderRefLevelTest.logger2 |
logger3 | Public | Private | 2 methods | org.apache.logging.log4j.core.AppenderRefLevelTest.logger3 |
testMarker | Public | Private | 2 methods | org.apache.logging.log4j.core.AppenderRefLevelTest.testMarker |
logger | Public | Private | 11 methods | org.apache.logging.log4j.core.LoggerTest.logger |
logger | Public | Private | 2 methods | org.apache.logging.log4j.core.LoggerUpdateTest.logger |
logger | Public | Private | 10 methods | org.apache.logging.log4j.core.StrictXMLConfigTest.logger |
UTF_8 | Public | Internal | 12 methods | org.apache.logging.log4j.core.helpers.Charsets.UTF_8 |
PROPERTY_NAME | Public | Private | 0 method | org.apache.logging.log4j.core.helpers.ClockFactory.PROPERTY_NAME |
LOG4J_LOG_EVENT_FACTORY | Public | Private | 0 method | org.apache.logging.log4j.core.helpers.Constants .LOG4J_LOG_EVENT_FACTORY |
LOG4J_CONTEXT_SELECTOR | Public | Private | 0 method | org.apache.logging.log4j.core.helpers.Constants.LOG4J_CONTEXT_SELECTOR |
LOG4J_DEFAULT_STATUS_LEVEL | Public | Private | 0 method | org.apache.logging.log4j.core.helpers.Constants .LOG4J_DEFAULT_STATUS_LEVEL |
JNDI_CONTEXT_NAME | Public | Private | 0 method | org.apache.logging.log4j.core.helpers.Constants.JNDI_CONTEXT_NAME |
MILLIS_IN_SECONDS | Public | Private | 0 method | org.apache.logging.log4j.core.helpers.Constants.MILLIS_IN_SECONDS |
UUID_SEQUENCE | Public | Private | 0 method | org.apache.logging.log4j.core.helpers.UUIDUtil.UUID_SEQUENCE |
THREAD_CONTEXT | Public | Internal | 24 methods | org.apache.logging.log4j.core.impl.ContextAnchor.THREAD_CONTEXT |
JAVA_7U25_COMPENSATION_OFFSET | Public | Internal | 3 methods | org.apache.logging.log4j.core.impl.ReflectiveCallerClassUtility .JAVA_7U25_COMPENSATION_OFFSET |
DEFAULT | Protected | Private | 2 methods | org.apache.logging.log4j.core.impl.ThrowableFormatOptions.DEFAULT |
CLASS_NAME | Public | Private | 0 method | org.apache.logging.log4j.core.impl.ThrowableFormatOptions.CLASS_NAME |
METHOD_NAME | Public | Private | 0 method | org.apache.logging.log4j.core.impl.ThrowableFormatOptions.METHOD_NAME |
LINE_NUMBER | Public | Private | 0 method | org.apache.logging.log4j.core.impl.ThrowableFormatOptions.LINE_NUMBER |
FILE_NAME | Public | Private | 0 method | org.apache.logging.log4j.core.impl.ThrowableFormatOptions.FILE_NAME |
MESSAGE | Public | Private | 0 method | org.apache.logging.log4j.core.impl.ThrowableFormatOptions.MESSAGE |
LOCALIZED_MESSAGE | Public | Private | 0 method | org.apache.logging.log4j.core.impl.ThrowableFormatOptions .LOCALIZED_MESSAGE |
DOMAIN | Public | Private | 0 method | org.apache.logging.log4j.core.jmx.Server.DOMAIN |
executor | Public | Private | 2 methods | org.apache.logging.log4j.core.jmx.Server.executor |
header | Protected | Private | 2 methods | org.apache.logging.log4j.core.layout.AbstractLayout.header |
footer | Protected | Private | 2 methods | org.apache.logging.log4j.core.layout.AbstractLayout.footer |
DEFAULT_CONVERSION_PATTERN | Public | Private | 0 method | org.apache.logging.log4j.core.layout.PatternLayout .DEFAULT_CONVERSION_PATTERN |
TTCC_CONVERSION_PATTERN | Public | Private | 0 method | org.apache.logging.log4j.core.layout.PatternLayout .TTCC_CONVERSION_PATTERN |
SIMPLE_CONVERSION_PATTERN | Public | Private | 0 method | org.apache.logging.log4j.core.layout.PatternLayout .SIMPLE_CONVERSION_PATTERN |
KEY | Public | Private | 0 method | org.apache.logging.log4j.core.layout.PatternLayout.KEY |
DEFAULT_ENTERPRISE_NUMBER | Public | Private | 0 method | org.apache.logging.log4j.core.layout.RFC5424Layout .DEFAULT_ENTERPRISE_NUMBER |
DEFAULT_ID | Public | Private | 0 method | org.apache.logging.log4j.core.layout.RFC5424Layout.DEFAULT_ID |
NEWLINE_PATTERN | Public | Private | 2 methods | org.apache.logging.log4j.core.layout.RFC5424Layout.NEWLINE_PATTERN |
PARAM_VALUE_ESCAPE_PATTERN | Public | Private | 2 methods | org.apache.logging.log4j.core.layout.RFC5424Layout .PARAM_VALUE_ESCAPE_PATTERN |
DEFAULT_MDCID | Protected | Private | 0 method | org.apache.logging.log4j.core.layout.RFC5424Layout.DEFAULT_MDCID |
NEWLINE_PATTERN | Public | Private | 2 methods | org.apache.logging.log4j.core.layout.SyslogLayout.NEWLINE_PATTERN |
ctx | Public | Private | 1 method | org.apache.logging.log4j.core.layout.HTMLLayoutTest.ctx |
root | Public | Private | 2 methods | org.apache.logging.log4j.core.layout.HTMLLayoutTest.root |
cf | Public | Private | 3 methods | org.apache.logging.log4j.core.layout.HTMLLayoutTest.cf |
cf | Public | Private | 3 methods | org.apache.logging.log4j.core.layout.JSONLayoutTest.cf |
ctx | Public | Private | 1 method | org.apache.logging.log4j.core.layout.JSONLayoutTest.ctx |
root | Public | Private | 3 methods | org.apache.logging.log4j.core.layout.JSONLayoutTest.root |
cf | Public | Private | 3 methods | org.apache.logging.log4j.core.layout.PatternLayoutTest.cf |
msgPattern | Public | Private | 2 methods | org.apache.logging.log4j.core.layout.PatternLayoutTest.msgPattern |
OUTPUT_FILE | Public | Private | 2 methods | org.apache.logging.log4j.core.layout.PatternLayoutTest.OUTPUT_FILE |
regexPattern | Public | Private | 0 method | org.apache.logging.log4j.core.layout.PatternLayoutTest.regexPattern |
WITNESS_FILE | Public | Private | 2 methods | org.apache.logging.log4j.core.layout.PatternLayoutTest.WITNESS_FILE |
ctx | Public | Private | 2 methods | org.apache.logging.log4j.core.layout.PatternLayoutTest.ctx |
root | Public | Private | 2 methods | org.apache.logging.log4j.core.layout.PatternLayoutTest.root |
ctx | Public | Private | 1 method | org.apache.logging.log4j.core.layout.RFC5424LayoutTest.ctx |
root | Public | Private | 9 methods | org.apache.logging.log4j.core.layout.RFC5424LayoutTest.root |
cf | Public | Private | 3 methods | org.apache.logging.log4j.core.layout.RFC5424LayoutTest.cf |
ctx | Public | Private | 1 method | org.apache.logging.log4j.core.layout.SerializedLayoutTest.ctx |
root | Public | Private | 2 methods | org.apache.logging.log4j.core.layout.SerializedLayoutTest.root |
Statistics
Stat | Visibility | CouldBeDeclared | MethodsUsingMe |
---|---|---|---|
Sum: | 0 | 0 | 0 |
Average: | 0 | 0 | 0 |
Minimum: | 0 | 0 | 0 |
Maximum: | 0 | 0 | 0 |
Standard deviation: | 0 | 0 | 0 |
Variance: | 0 | 0 | 0 |
![]() | Rule warning: Fields should be declared as private |
warnif count > 0 from f in Application.Fields where
!f.IsPrivate &&
// These conditions filter cases where fields
// doesn't represent state that should be encapsulated.
!f.IsGeneratedByCompiler &&
!f.IsSpecialName &&
!f.IsInitOnly &&
!f.IsLiteral &&
!f.IsEnumValue
select new { f, f.SizeOfInst }
140 fields matched
fields | Size of instance | Full Name |
---|---|---|
OFF | N/A | org.apache.logging.log4j.Level.OFF |
FATAL | N/A | org.apache.logging.log4j.Level.FATAL |
ERROR | N/A | org.apache.logging.log4j.Level.ERROR |
WARN | N/A | org.apache.logging.log4j.Level.WARN |
INFO | N/A | org.apache.logging.log4j.Level.INFO |
DEBUG | N/A | org.apache.logging.log4j.Level.DEBUG |
TRACE | N/A | org.apache.logging.log4j.Level.TRACE |
ALL | N/A | org.apache.logging.log4j.Level.ALL |
markerName | 4 | org.apache.logging.log4j.AbstractLoggerTest$LogEvent.markerName |
data | 4 | org.apache.logging.log4j.AbstractLoggerTest$LogEvent.data |
t | 4 | org.apache.logging.log4j.AbstractLoggerTest$LogEvent.t |
logger | 4 | org.apache.logging.log4j.EventLoggerTest.logger |
results | 4 | org.apache.logging.log4j.EventLoggerTest.results |
logger | 4 | org.apache.logging.log4j.LoggerTest.logger |
results | 4 | org.apache.logging.log4j.LoggerTest.results |
array | 4 | org.apache.logging.log4j.message.FormattedMessageTest.array |
array | 4 | org.apache.logging.log4j.message.MessageFormatMessageTest.array |
array | 4 | org.apache.logging.log4j.message.MessageFormatsPerfTest.array |
array | 4 | org.apache.logging.log4j.message.StringFormattedMessageTest.array |
OsgiFramework | N/A | org.apache.logging.log4j.osgi.AbstractLoadBundleTest.OsgiFramework |
logger | N/A | org.apache.logging.log4j.FormatterLoggerManualExample.logger |
config | 4 | org.apache.logging.log4j.core.Logger.config |
logger1 | 4 | org.apache.logging.log4j.core.AppenderRefLevelJsonTest.logger1 |
logger2 | 4 | org.apache.logging.log4j.core.AppenderRefLevelJsonTest.logger2 |
logger3 | 4 | org.apache.logging.log4j.core.AppenderRefLevelJsonTest.logger3 |
testMarker | 4 | org.apache.logging.log4j.core.AppenderRefLevelJsonTest.testMarker |
logger1 | 4 | org.apache.logging.log4j.core.AppenderRefLevelTest.logger1 |
logger2 | 4 | org.apache.logging.log4j.core.AppenderRefLevelTest.logger2 |
logger3 | 4 | org.apache.logging.log4j.core.AppenderRefLevelTest.logger3 |
testMarker | 4 | org.apache.logging.log4j.core.AppenderRefLevelTest.testMarker |
logger | 4 | org.apache.logging.log4j.core.LoggerTest.logger |
logger | 4 | org.apache.logging.log4j.core.LoggerUpdateTest.logger |
logger | 4 | org.apache.logging.log4j.core.StrictXMLConfigTest.logger |
header | 4 | org.apache.logging.log4j.core.layout.AbstractLayout.header |
footer | 4 | org.apache.logging.log4j.core.layout.AbstractLayout.footer |
ctx | 4 | org.apache.logging.log4j.core.layout.HTMLLayoutTest.ctx |
root | 4 | org.apache.logging.log4j.core.layout.HTMLLayoutTest.root |
cf | N/A | org.apache.logging.log4j.core.layout.HTMLLayoutTest.cf |
cf | N/A | org.apache.logging.log4j.core.layout.JSONLayoutTest.cf |
ctx | 4 | org.apache.logging.log4j.core.layout.JSONLayoutTest.ctx |
root | 4 | org.apache.logging.log4j.core.layout.JSONLayoutTest.root |
cf | N/A | org.apache.logging.log4j.core.layout.PatternLayoutTest.cf |
msgPattern | N/A | org.apache.logging.log4j.core.layout.PatternLayoutTest.msgPattern |
OUTPUT_FILE | N/A | org.apache.logging.log4j.core.layout.PatternLayoutTest.OUTPUT_FILE |
WITNESS_FILE | N/A | org.apache.logging.log4j.core.layout.PatternLayoutTest.WITNESS_FILE |
ctx | 4 | org.apache.logging.log4j.core.layout.PatternLayoutTest.ctx |
root | 4 | org.apache.logging.log4j.core.layout.PatternLayoutTest.root |
ctx | 4 | org.apache.logging.log4j.core.layout.RFC5424LayoutTest.ctx |
root | 4 | org.apache.logging.log4j.core.layout.RFC5424LayoutTest.root |
cf | N/A | org.apache.logging.log4j.core.layout.RFC5424LayoutTest.cf |
ctx | 4 | org.apache.logging.log4j.core.layout.SerializedLayoutTest.ctx |
root | 4 | org.apache.logging.log4j.core.layout.SerializedLayoutTest.root |
cf | N/A | org.apache.logging.log4j.core.layout.SerializedLayoutTest.cf |
ctx | 4 | org.apache.logging.log4j.core.layout.SyslogLayoutTest.ctx |
root | 4 | org.apache.logging.log4j.core.layout.SyslogLayoutTest.root |
cf | N/A | org.apache.logging.log4j.core.layout.SyslogLayoutTest.cf |
cf | N/A | org.apache.logging.log4j.core.layout.XMLLayoutTest.cf |
ctx | 4 | org.apache.logging.log4j.core.layout.XMLLayoutTest.ctx |
root | 4 | org.apache.logging.log4j.core.layout.XMLLayoutTest.root |
logger | 4 | org.apache.logging.log4j.core.pattern.ExtendedThrowableTest.logger |
OUTPUT_FILE | N/A | org.apache.logging.log4j.core.pattern.PatternParserTest.OUTPUT_FILE |
WITNESS_FILE | N/A | org.apache.logging.log4j.core.pattern.PatternParserTest.WITNESS_FILE |
ctx | 4 | org.apache.logging.log4j.core.pattern.PatternParserTest.ctx |
root | 4 | org.apache.logging.log4j.core.pattern.PatternParserTest.root |
logger | 4 | org.apache.logging.log4j.core.pattern.RegexReplacementTest.logger |
logger2 | 4 | org.apache.logging.log4j.core.pattern.RegexReplacementTest.logger2 |
logger | 4 | org.apache.logging.log4j.core.pattern.RootThrowableTest.logger |
logger | 4 | org.apache.logging.log4j.core.pattern.StyleConverterTest.logger |
logger | 4 | org.apache.logging.log4j.core.pattern.ThrowableTest.logger |
CONTEXT_ATTRIBUTE | 0 | org.apache.logging.log4j.core.web.Log4jWebInitializerImpl .CONTEXT_ATTRIBUTE |
SUPPORT_ATTRIBUTE | 0 | org.apache.logging.log4j.core.web.Log4jWebInitializerImpl .SUPPORT_ATTRIBUTE |
count | 4 | org.apache.logging.log4j.core.appender.AbstractManager.count |
logger | 4 | org.apache.logging.log4j.core.appender.FailoverAppenderTest.logger |
onceLogger | 4 | org.apache.logging.log4j.core.appender.FailoverAppenderTest.onceLogger |
context | 4 | org.apache.logging.log4j.core.appender.SocketAppenderTest.context |
root | 4 | org.apache.logging.log4j.core.appender.SocketAppenderTest.root |
ctx | 4 | org.apache.logging.log4j.core.appender.SyslogAppenderTestBase.ctx |
syslogServer | 4 | org.apache.logging.log4j.core.appender.SyslogAppenderTestBase .syslogServer |
appender | 4 | org.apache.logging.log4j.core.appender.SyslogAppenderTestBase.appender |
root | 4 | org.apache.logging.log4j.core.appender.SyslogAppenderTestBase.root |
sentMessages | 4 | org.apache.logging.log4j.core.appender.SyslogAppenderTestBase .sentMessages |
includeNewLine | 4 | org.apache.logging.log4j.core.appender.SyslogAppenderTestBase .includeNewLine |
logger | 4 | org.apache.logging.log4j.core.appender.rolling .AbstractRollingAppenderSizeTest.logger |
logger | 4 | org.apache.logging.log4j.core.appender.rolling .RollingAppenderTimeAndSizeTest.logger |
logger | 4 | org.apache.logging.log4j.core.appender.rolling.RollingAppenderTimeTest .logger |
logger | 4 | org.apache.logging.log4j.core.appender.rolling .RollingAppenderUncompressedTest.logger |
verbose | N/A | org.apache.logging.log4j.core.async.perftest.PerfTest.verbose |
throughput | N/A | org.apache.logging.log4j.core.async.perftest.PerfTest.throughput |
_stats | 4 | org.apache.logging.log4j.core.async.perftest.PerfTestDriver$Setup ._stats |
_count | 4 | org.apache.logging.log4j.core.async.perftest.PerfTestDriver$Stats ._count |
_average | 4 | org.apache.logging.log4j.core.async.perftest.PerfTestDriver$Stats ._average |
_pct99 | 4 | org.apache.logging.log4j.core.async.perftest.PerfTestDriver$Stats ._pct99 |
_pct99_99 | 4 | org.apache.logging.log4j.core.async.perftest.PerfTestDriver$Stats ._pct99_99 |
_latencyRowCount | 4 | org.apache.logging.log4j.core.async.perftest.PerfTestDriver$Stats ._latencyRowCount |
_throughputRowCount | 4 | org.apache.logging.log4j.core.async.perftest.PerfTestDriver$Stats ._throughputRowCount |
expected | 4 | org.apache.logging.log4j.core.async.perftest.PerfTestResultFormatter$1 .expected |
throughput | 4 | org.apache.logging.log4j.core.async.perftest .PerfTestResultFormatter$Stats.throughput |
avgLatency | 4 | org.apache.logging.log4j.core.async.perftest .PerfTestResultFormatter$Stats.avgLatency |
latency99Pct | 4 | org.apache.logging.log4j.core.async.perftest .PerfTestResultFormatter$Stats.latency99Pct |
latency99_99Pct | 4 | org.apache.logging.log4j.core.async.perftest .PerfTestResultFormatter$Stats.latency99_99Pct |
Statistics
Stat | Size of instance |
---|---|
Sum: | 424 |
Average: | 3.93 |
Minimum: | 0 |
Maximum: | 4 |
Standard deviation: | 0.54 |
Variance: | 0.29 |
![]() | Rule warning: Constructors of abstract classes should be declared as protected or private |
// Constructors of an abstract class can only be accessed from this class and derived class.
// Declaring such a constructor with another visibility level is useless and potentially misleading.
warnif count > 0
from t in Application.Types where
t.IsClass &&
t.IsAbstract
let ctors = t.Constructors.Where(c => !c.IsProtected && !c.IsPrivate)
where ctors.Count() > 0
select new { t, ctors }
// Notice that if a constructor of an abstract class is declared as private,
// it can only be accessed from derived classes nested in the abstract class.
25 types matched
types | ctors | Full Name |
---|---|---|
AbstractMessageFactory | 1 method | org.apache.logging.log4j.message.AbstractMessageFactory |
AbstractLogger | 3 methods | org.apache.logging.log4j.spi.AbstractLogger |
AbstractLoadBundleTest | 1 method | org.apache.logging.log4j.osgi.AbstractLoadBundleTest |
AbstractEquinoxLoadBundleTest | 1 method | org.apache.logging.log4j.osgi.equinox.AbstractEquinoxLoadBundleTest |
AbstractFelixLoadBundleTest | 1 method | org.apache.logging.log4j.osgi.felix.AbstractFelixLoadBundleTest |
AbstractLayout<T> | 1 method | org.apache.logging.log4j.core.layout.AbstractLayout |
DatePatternConverter$Formatter | 1 method | org.apache.logging.log4j.core.pattern.DatePatternConverter$Formatter |
NameAbbreviator | 1 method | org.apache.logging.log4j.core.pattern.NameAbbreviator |
AbstractDatabaseAppenderTest$LocalAbstractDatabaseAppender | 1 method | org.apache.logging.log4j.core.appender.db .AbstractDatabaseAppenderTest$LocalAbstractDatabaseAppender |
AbstractDatabaseAppenderTest$LocalAbstractDatabaseManager | 1 method | org.apache.logging.log4j.core.appender.db .AbstractDatabaseAppenderTest$LocalAbstractDatabaseManager |
AbstractJdbcAppenderTest | 1 method | org.apache.logging.log4j.core.appender.db.jdbc .AbstractJdbcAppenderTest |
BasicLogEventEntity | 2 methods | org.apache.logging.log4j.core.appender.db.jpa.BasicLogEventEntity |
AbstractJpaAppenderTest | 1 method | org.apache.logging.log4j.core.appender.db.jpa.AbstractJpaAppenderTest |
AbstractRolloverStrategy | 1 method | org.apache.logging.log4j.core.appender.rolling .AbstractRolloverStrategy |
ConfigurationFactory | 1 method | org.apache.logging.log4j.core.config.ConfigurationFactory |
ResolverUtil$ClassTest | 1 method | org.apache.logging.log4j.core.config.plugins.ResolverUtil$ClassTest |
ResolverUtil$ResourceTest | 1 method | org.apache.logging.log4j.core.config.plugins.ResolverUtil$ResourceTest |
AbstractJMSManager | 1 method | org.apache.logging.log4j.core.net.AbstractJMSManager |
AbstractJMSReceiver | 1 method | org.apache.logging.log4j.core.net.AbstractJMSReceiver |
AbstractSocketManager | 1 method | org.apache.logging.log4j.core.net.AbstractSocketManager |
Layout | 1 method | org.apache.log4j.Layout |
Filter | 1 method | org.apache.log4j.spi.Filter |
AbstractFlumeManager | 1 method | org.apache.logging.log4j.flume.appender.AbstractFlumeManager |
ExceptionAwareTagSupport | 1 method | org.apache.logging.log4j.taglib.ExceptionAwareTagSupport |
LoggingMessageTagSupport | 1 method | org.apache.logging.log4j.taglib.LoggingMessageTagSupport |
Statistics
Stat | ctors |
---|---|
Sum: | 0 |
Average: | 0 |
Minimum: | 0 |
Maximum: | 0 |
Standard deviation: | 0 |
Variance: | 0 |
Purity - Immutability - Side-Effects | 130 |
|
![]() | Rule warning: Fields should be marked as ReadOnly when possible |
warnif count > 0
from f in JustMyCode.Fields where
f.IsImmutable &&
!f.IsInitOnly &&
!f.IsGeneratedByCompiler
select new { f, f.SizeOfInst }
// A field that matches the condition IsImmutable
// is a field that is assigned only by constructors
// of its class.
// For an instance field, this means its value
// will remain constant throught the lifetime
// of the object.
// For a static field, this means its value will
// remain constant throught the lifetime of the
// program.
// In both cases, such field can safely be marked
131 fields matched
fields | Size of instance | Full Name |
---|---|---|
loggerWrapper | N/A | org.apache.logging.log4j.EventLogger.loggerWrapper |
factory | N/A | org.apache.logging.log4j.LogManager.factory |
markerMap | N/A | org.apache.logging.log4j.MarkerManager.markerMap |
all | N/A | org.apache.logging.log4j.ThreadContext.all |
useMap | N/A | org.apache.logging.log4j.ThreadContext.useMap |
useStack | N/A | org.apache.logging.log4j.ThreadContext.useStack |
contextMap | N/A | org.apache.logging.log4j.ThreadContext.contextMap |
contextStack | N/A | org.apache.logging.log4j.ThreadContext.contextStack |
t | N/A | org.apache.logging.log4j.AbstractLoggerTest.t |
obj | N/A | org.apache.logging.log4j.AbstractLoggerTest.obj |
pattern | N/A | org.apache.logging.log4j.AbstractLoggerTest.pattern |
p1 | N/A | org.apache.logging.log4j.AbstractLoggerTest.p1 |
p2 | N/A | org.apache.logging.log4j.AbstractLoggerTest.p2 |
simple | N/A | org.apache.logging.log4j.AbstractLoggerTest.simple |
object | N/A | org.apache.logging.log4j.AbstractLoggerTest.object |
param | N/A | org.apache.logging.log4j.AbstractLoggerTest.param |
marker | N/A | org.apache.logging.log4j.AbstractLoggerTest.marker |
events | N/A | org.apache.logging.log4j.AbstractLoggerTest.events |
context | N/A | org.apache.logging.log4j.TestLoggerContextFactory.context |
NANO_PER_SECOND | N/A | org.apache.logging.log4j.Timer.NANO_PER_SECOND |
NANO_PER_MINUTE | N/A | org.apache.logging.log4j.Timer.NANO_PER_MINUTE |
NANO_PER_HOUR | N/A | org.apache.logging.log4j.Timer.NANO_PER_HOUR |
argArray | 4 | org.apache.logging.log4j.message.FormattedMessage.argArray |
argArray | 4 | org.apache.logging.log4j.message.MessageFormatMessage.argArray |
throwable | 4 | org.apache.logging.log4j.message.MessageFormatMessage.throwable |
argArray | 4 | org.apache.logging.log4j.message.StringFormattedMessage.argArray |
throwable | 4 | org.apache.logging.log4j.message.StringFormattedMessage.throwable |
threads | 4 | org.apache.logging.log4j.message.ThreadDumpMessage.threads |
formattedMessage | 4 | org.apache.logging.log4j.message.ThreadDumpMessage.formattedMessage |
dateFormatter | 4 | org.apache.logging.log4j.simple.SimpleLogger.dateFormatter |
context | N/A | org.apache.logging.log4j.simple.SimpleLoggerContextFactory.context |
stack | N/A | org.apache.logging.log4j.spi.DefaultThreadContextStack.stack |
level | 4 | org.apache.logging.log4j.spi.LoggerStreamTest.level |
logMessage | 4 | org.apache.logging.log4j.spi.LoggerStreamTest.logMessage |
config | N/A | org.apache.logging.log4j.core.LateConfigTest.config |
app | N/A | org.apache.logging.log4j.core.LateConfigTest.app |
app | N/A | org.apache.logging.log4j.core.ShutdownDisabledTest.app |
logger | N/A | org.apache.logging.log4j.core.SimplePerfTest.logger |
lvl | 4 | org.apache.logging.log4j.core.SimplePerfTest.lvl |
rand | N/A | org.apache.logging.log4j.core.SimplePerfTest.rand |
RAND_SIZE | N/A | org.apache.logging.log4j.core.SimplePerfTest.RAND_SIZE |
values | N/A | org.apache.logging.log4j.core.SimplePerfTest.values |
logger | N/A | org.apache.logging.log4j.core.ThreadedPerfTest.logger |
lvl | 4 | org.apache.logging.log4j.core.ThreadedPerfTest.lvl |
lvl | 4 | org.apache.logging.log4j.core.ThreadedTest.lvl |
NANO_PER_SECOND | N/A | org.apache.logging.log4j.core.Timer.NANO_PER_SECOND |
NANO_PER_MINUTE | N/A | org.apache.logging.log4j.core.Timer.NANO_PER_MINUTE |
NANO_PER_HOUR | N/A | org.apache.logging.log4j.core.Timer.NANO_PER_HOUR |
levelMap | 4 | org.apache.logging.log4j.core.filter.DynamicThresholdFilter.levelMap |
defaultThreshold | 4 | org.apache.logging.log4j.core.filter.DynamicThresholdFilter .defaultThreshold |
instance | N/A | org.apache.logging.log4j.core.helpers.CachedClock.instance |
instance | N/A | org.apache.logging.log4j.core.helpers.CoarseCachedClock.instance |
ignoreTCL | N/A | org.apache.logging.log4j.core.helpers.Loader.ignoreTCL |
count | N/A | org.apache.logging.log4j.core.helpers.UUIDUtil.count |
uuidSequence | N/A | org.apache.logging.log4j.core.helpers.UUIDUtil.uuidSequence |
least | N/A | org.apache.logging.log4j.core.helpers.UUIDUtil.least |
selector | 4 | org.apache.logging.log4j.core.impl.Log4jContextFactory.selector |
header | N/A | org.apache.logging.log4j.core.layout.SerializedLayout.header |
rawOption | 4 | org.apache.logging.log4j.core.pattern.ThrowablePatternConverter .rawOption |
msgPattern | N/A | org.apache.logging.log4j.core.pattern.PatternParserTest.msgPattern |
customPattern | N/A | org.apache.logging.log4j.core.pattern.PatternParserTest.customPattern |
nestedPatternHighlight | N/A | org.apache.logging.log4j.core.pattern.PatternParserTest .nestedPatternHighlight |
profiler | N/A | org.apache.logging.log4j.core.util.Profiler.profiler |
profilingModes | N/A | org.apache.logging.log4j.core.util.Profiler.profilingModes |
controllerClazz | N/A | org.apache.logging.log4j.core.util.Profiler.controllerClazz |
isAppenderThread | N/A | org.apache.logging.log4j.core.appender.AsyncAppender.isAppenderThread |
factory | N/A | org.apache.logging.log4j.core.appender.ConsoleAppender.factory |
advertisement | 4 | org.apache.logging.log4j.core.appender.FileAppender.advertisement |
advertisement | 4 | org.apache.logging.log4j.core.appender.RandomAccessFileAppender .advertisement |
advertisement | 4 | org.apache.logging.log4j.core.appender.RollingFileAppender .advertisement |
advertisement | 4 | org.apache.logging.log4j.core.appender.RollingRandomAccessFileAppender .advertisement |
advertisement | 4 | org.apache.logging.log4j.core.appender.SocketAppender.advertisement |
list | N/A | org.apache.logging.log4j.core.appender.SocketAppenderTest.list |
map | N/A | org.apache.logging.log4j.core.appender.rewrite.MapRewritePolicyTest .map |
JVM_START_TIME | N/A | org.apache.logging.log4j.core.appender.rolling .OnStartupTriggeringPolicy.JVM_START_TIME |
frequency | 4 | org.apache.logging.log4j.core.appender.rolling.PatternProcessor .frequency |
factory | N/A | org.apache.logging.log4j.core.appender.rolling.RollingFileManager .factory |
clock | N/A | org.apache.logging.log4j.core.async.AsyncLogger.clock |
executor | N/A | org.apache.logging.log4j.core.async.AsyncLogger.executor |
threadFactory | N/A | org.apache.logging.log4j.core.async.AsyncLoggerConfigHelper .threadFactory |
isAppenderThread | N/A | org.apache.logging.log4j.core.async.AsyncLoggerConfigHelper .isAppenderThread |
_averageOpsPerSec | 4 | org.apache.logging.log4j.core.async.perftest.PerfTestDriver$Stats ._averageOpsPerSec |
properties | 4 | org.apache.logging.log4j.core.config.BaseConfiguration.properties |
root | 4 | org.apache.logging.log4j.core.config.JSONConfiguration.root |
dependencies | N/A | org.apache.logging.log4j.core.config.JSONConfigurationFactory .dependencies |
isActive | 4 | org.apache.logging.log4j.core.config.JSONConfigurationFactory.isActive |
LOG_EVENT_FACTORY | N/A | org.apache.logging.log4j.core.config.LoggerConfig.LOG_EVENT_FACTORY |
appenderRefs | 4 | org.apache.logging.log4j.core.config.LoggerConfig.appenderRefs |
includeLocation | 4 | org.apache.logging.log4j.core.config.LoggerConfig.includeLocation |
strict | 4 | org.apache.logging.log4j.core.config.XMLConfiguration.strict |
schema | 4 | org.apache.logging.log4j.core.config.XMLConfiguration.schema |
properties | N/A | org.apache.logging.log4j.core.config.InMemoryAdvertiser.properties |
jmDNS | N/A | org.apache.logging.log4j.core.net.MulticastDNSAdvertiser.jmDNS |
sslConfig | 4 | org.apache.logging.log4j.core.net.TLSSocketManager.sslConfig |
keyStoreType | 4 | org.apache.logging.log4j.core.net.ssl.KeyStoreConfiguration .keyStoreType |
keyStoreConfig | 4 | org.apache.logging.log4j.core.net.ssl.SSLConfiguration.keyStoreConfig |
trustStoreConfig | 4 | org.apache.logging.log4j.core.net.ssl.SSLConfiguration .trustStoreConfig |
trustStoreType | 4 | org.apache.logging.log4j.core.net.ssl.TrustStoreConfiguration .trustStoreType |
buffer | 4 | org.apache.logging.log4j.core.net.ssl .LegacyBSDTLSSyslogInputStreamReader.buffer |
messageBuffer | 4 | org.apache.logging.log4j.core.net.ssl.TLSSyslogInputStreamReader .messageBuffer |
Statistics
Stat | Size of instance |
---|---|
Sum: | 212 |
Average: | 4 |
Minimum: | 4 |
Maximum: | 4 |
Standard deviation: | 0 |
Variance: | 0 |
![]() | Rule warning: Avoid static fields with a mutable field type |
warnif count > 0
from f in Application.Fields
where f.IsStatic && !f.IsEnumValue && !f.IsGeneratedByCompiler && !f.IsLiteral
let fieldType = f.FieldType
where fieldType != null &&
!fieldType.IsThirdParty &&
!fieldType.IsInterface &&
!fieldType.IsImmutable
select new { f,
mutableFieldType = fieldType ,
isFieldImmutable = f.IsImmutable,
isFieldIsReadOnly = f.IsInitOnly }
// As explained in this blog post
// http://codebetter.com/patricksmacchia/2011/05/04/back-to-basics-usage-of-static-members
// static fields should be used to hold only constant and immutable states.
227 fields matched
fields | mutableFieldType | isFieldImmutable | isFieldIsReadOnly | Full Name |
---|---|---|---|---|
loggerWrapper | AbstractLoggerWrapper | True | False | org.apache.logging.log4j.EventLogger.loggerWrapper |
OFF | Level | False | False | org.apache.logging.log4j.Level.OFF |
FATAL | Level | False | False | org.apache.logging.log4j.Level.FATAL |
ERROR | Level | False | False | org.apache.logging.log4j.Level.ERROR |
WARN | Level | False | False | org.apache.logging.log4j.Level.WARN |
INFO | Level | False | False | org.apache.logging.log4j.Level.INFO |
DEBUG | Level | False | False | org.apache.logging.log4j.Level.DEBUG |
TRACE | Level | False | False | org.apache.logging.log4j.Level.TRACE |
ALL | Level | False | False | org.apache.logging.log4j.Level.ALL |
currentLevel | Level | False | False | org.apache.logging.log4j.AbstractLoggerTest.currentLevel |
events | AbstractLoggerTest$LogEvent | True | False | org.apache.logging.log4j.AbstractLoggerTest.events |
INSTANCE | ParameterizedMessageFactory | True | True | org.apache.logging.log4j.message.ParameterizedMessageFactory.INSTANCE |
INSTANCE | StringFormatterMessageFactory | True | True | org.apache.logging.log4j.message.StringFormatterMessageFactory .INSTANCE |
TIME_QUALITY | StructuredDataId | True | True | org.apache.logging.log4j.message.StructuredDataId.TIME_QUALITY |
ORIGIN | StructuredDataId | True | True | org.apache.logging.log4j.message.StructuredDataId.ORIGIN |
META | StructuredDataId | True | True | org.apache.logging.log4j.message.StructuredDataId.META |
PROPS | PropertiesUtil | True | True | org.apache.logging.log4j.status.StatusLogger.PROPS |
STATUS_LOGGER | StatusLogger | True | True | org.apache.logging.log4j.status.StatusLogger.STATUS_LOGGER |
LOG4J_PROPERTIES | PropertiesUtil | True | True | org.apache.logging.log4j.util.PropertiesUtil.LOG4J_PROPERTIES |
LOGGER | StatusLogger | True | True | org.apache.logging.log4j.core.LoggerContext.LOGGER |
app1 | ListAppender | False | False | org.apache.logging.log4j.core.AppenderRefLevelJsonTest.app1 |
app2 | ListAppender | False | False | org.apache.logging.log4j.core.AppenderRefLevelJsonTest.app2 |
ctx | LoggerContext | False | False | org.apache.logging.log4j.core.AppenderRefLevelJsonTest.ctx |
app1 | ListAppender | False | False | org.apache.logging.log4j.core.AppenderRefLevelTest.app1 |
app2 | ListAppender | False | False | org.apache.logging.log4j.core.AppenderRefLevelTest.app2 |
ctx | LoggerContext | False | False | org.apache.logging.log4j.core.AppenderRefLevelTest.ctx |
ctx | LoggerContext | False | False | org.apache.logging.log4j.core.ExtendedLevelTest.ctx |
list1 | ListAppender | False | False | org.apache.logging.log4j.core.ExtendedLevelTest.list1 |
list2 | ListAppender | False | False | org.apache.logging.log4j.core.ExtendedLevelTest.list2 |
app | ListAppender | False | False | org.apache.logging.log4j.core.FileConfigTest.app |
ctx | LoggerContext | False | False | org.apache.logging.log4j.core.FileConfigTest.ctx |
app | ListAppender | False | False | org.apache.logging.log4j.core.HostNameTest.app |
host | ListAppender | False | False | org.apache.logging.log4j.core.HostNameTest.host |
hostFile | RollingFileAppender | False | False | org.apache.logging.log4j.core.HostNameTest.hostFile |
ctx | LoggerContext | False | False | org.apache.logging.log4j.core.HostNameTest.ctx |
app | ListAppender | True | False | org.apache.logging.log4j.core.LateConfigTest.app |
ctx | LoggerContext | False | False | org.apache.logging.log4j.core.LateConfigTest.ctx |
app | ListAppender | False | False | org.apache.logging.log4j.core.LogEventFactoryTest.app |
ctx | LoggerContext | False | False | org.apache.logging.log4j.core.LogEventFactoryTest.ctx |
fileApp | FileAppender | False | False | org.apache.logging.log4j.core.LoggerDateTest.fileApp |
ctx | LoggerContext | False | False | org.apache.logging.log4j.core.LoggerDateTest.ctx |
app | ListAppender | False | False | org.apache.logging.log4j.core.LoggerTest.app |
host | ListAppender | False | False | org.apache.logging.log4j.core.LoggerTest.host |
noThrown | ListAppender | False | False | org.apache.logging.log4j.core.LoggerTest.noThrown |
ctx | LoggerContext | False | False | org.apache.logging.log4j.core.LoggerTest.ctx |
app | ListAppender | False | False | org.apache.logging.log4j.core.LoggerUpdateTest.app |
host | ListAppender | False | False | org.apache.logging.log4j.core.LoggerUpdateTest.host |
noThrown | ListAppender | False | False | org.apache.logging.log4j.core.LoggerUpdateTest.noThrown |
ctx | LoggerContext | False | False | org.apache.logging.log4j.core.LoggerUpdateTest.ctx |
app | ListAppender | True | False | org.apache.logging.log4j.core.ShutdownDisabledTest.app |
ctx | LoggerContext | False | False | org.apache.logging.log4j.core.ShutdownDisabledTest.ctx |
app | ListAppender | False | False | org.apache.logging.log4j.core.StrictXMLConfigTest.app |
ctx | LoggerContext | False | False | org.apache.logging.log4j.core.StrictXMLConfigTest.ctx |
app | ListAppender | False | False | org.apache.logging.log4j.core.filter.BurstFilterTest.app |
filter | BurstFilter | False | False | org.apache.logging.log4j.core.filter.BurstFilterTest.filter |
ctx | LoggerContext | False | False | org.apache.logging.log4j.core.filter.BurstFilterTest.ctx |
instance | CachedClock | True | False | org.apache.logging.log4j.core.helpers.CachedClock.instance |
LOGGER | StatusLogger | True | True | org.apache.logging.log4j.core.helpers.ClockFactory.LOGGER |
instance | CoarseCachedClock | True | False | org.apache.logging.log4j.core.helpers.CoarseCachedClock.instance |
LOGGER | StatusLogger | True | True | org.apache.logging.log4j.core.impl.Log4jContextFactory.LOGGER |
DEFAULT | ThrowableFormatOptions | True | True | org.apache.logging.log4j.core.impl.ThrowableFormatOptions.DEFAULT |
SECURITY_MANAGER | ThrowableProxy$PrivateSecurityManager | True | True | org.apache.logging.log4j.core.impl.ThrowableProxy.SECURITY_MANAGER |
LOGGER | StatusLogger | True | True | org.apache.logging.log4j.core.jmx.LoggerContextAdmin.LOGGER |
LOGGER | StatusLogger | True | True | org.apache.logging.log4j.core.jmx.Server.LOGGER |
cf | ConfigurationFactory | False | False | org.apache.logging.log4j.core.layout.HTMLLayoutTest.cf |
cf | ConfigurationFactory | False | False | org.apache.logging.log4j.core.layout.JSONLayoutTest.cf |
cf | ConfigurationFactory | False | False | org.apache.logging.log4j.core.layout.PatternLayoutTest.cf |
cf | ConfigurationFactory | False | False | org.apache.logging.log4j.core.layout.RFC5424LayoutTest.cf |
cf | ConfigurationFactory | False | False | org.apache.logging.log4j.core.layout.SerializedLayoutTest.cf |
cf | ConfigurationFactory | False | False | org.apache.logging.log4j.core.layout.SyslogLayoutTest.cf |
cf | ConfigurationFactory | False | False | org.apache.logging.log4j.core.layout.XMLLayoutTest.cf |
COMMA_MATCHER | StrMatcher | True | True | org.apache.logging.log4j.core.lookup.StrMatcher.COMMA_MATCHER |
TAB_MATCHER | StrMatcher | True | True | org.apache.logging.log4j.core.lookup.StrMatcher.TAB_MATCHER |
SPACE_MATCHER | StrMatcher | True | True | org.apache.logging.log4j.core.lookup.StrMatcher.SPACE_MATCHER |
SPLIT_MATCHER | StrMatcher | True | True | org.apache.logging.log4j.core.lookup.StrMatcher.SPLIT_MATCHER |
TRIM_MATCHER | StrMatcher | True | True | org.apache.logging.log4j.core.lookup.StrMatcher.TRIM_MATCHER |
SINGLE_QUOTE_MATCHER | StrMatcher | True | True | org.apache.logging.log4j.core.lookup.StrMatcher.SINGLE_QUOTE_MATCHER |
DOUBLE_QUOTE_MATCHER | StrMatcher | True | True | org.apache.logging.log4j.core.lookup.StrMatcher.DOUBLE_QUOTE_MATCHER |
QUOTE_MATCHER | StrMatcher | True | True | org.apache.logging.log4j.core.lookup.StrMatcher.QUOTE_MATCHER |
NONE_MATCHER | StrMatcher | True | True | org.apache.logging.log4j.core.lookup.StrMatcher.NONE_MATCHER |
DEFAULT_PREFIX | StrMatcher | True | True | org.apache.logging.log4j.core.lookup.StrSubstitutor.DEFAULT_PREFIX |
DEFAULT_SUFFIX | StrMatcher | True | True | org.apache.logging.log4j.core.lookup.StrSubstitutor.DEFAULT_SUFFIX |
INSTANCE | FileLocationPatternConverter | True | True | org.apache.logging.log4j.core.pattern.FileLocationPatternConverter .INSTANCE |
DEFAULT | FormattingInfo | True | True | org.apache.logging.log4j.core.pattern.FormattingInfo.DEFAULT |
INSTANCE | FullLocationPatternConverter | True | True | org.apache.logging.log4j.core.pattern.FullLocationPatternConverter .INSTANCE |
INSTANCE | IntegerPatternConverter | True | True | org.apache.logging.log4j.core.pattern.IntegerPatternConverter.INSTANCE |
INSTANCE | LevelPatternConverter | True | True | org.apache.logging.log4j.core.pattern.LevelPatternConverter.INSTANCE |
INSTANCE | LineLocationPatternConverter | True | True | org.apache.logging.log4j.core.pattern.LineLocationPatternConverter .INSTANCE |
INSTANCE | LineSeparatorPatternConverter | True | True | org.apache.logging.log4j.core.pattern.LineSeparatorPatternConverter .INSTANCE |
INSTANCE | LoggerPatternConverter | True | True | org.apache.logging.log4j.core.pattern.LoggerPatternConverter.INSTANCE |
INSTANCE | MethodLocationPatternConverter | True | True | org.apache.logging.log4j.core.pattern.MethodLocationPatternConverter .INSTANCE |
INSTANCE | NDCPatternConverter | True | True | org.apache.logging.log4j.core.pattern.NDCPatternConverter.INSTANCE |
DEFAULT | NameAbbreviator | True | True | org.apache.logging.log4j.core.pattern.NameAbbreviator.DEFAULT |
INSTANCE | SequenceNumberPatternConverter | True | True | org.apache.logging.log4j.core.pattern.SequenceNumberPatternConverter .INSTANCE |
INSTANCE | ThreadPatternConverter | True | True | org.apache.logging.log4j.core.pattern.ThreadPatternConverter.INSTANCE |
app | ListAppender | False | False | org.apache.logging.log4j.core.pattern.ExtendedThrowableTest.app |
ctx | LoggerContext | False | False | org.apache.logging.log4j.core.pattern.ExtendedThrowableTest.ctx |
app | ListAppender | False | False | org.apache.logging.log4j.core.pattern.RegexReplacementTest.app |
app2 | ListAppender | False | False | org.apache.logging.log4j.core.pattern.RegexReplacementTest.app2 |
ctx | LoggerContext | False | False | org.apache.logging.log4j.core.pattern.RegexReplacementTest.ctx |
Statistics
Stat | mutableFieldType | isFieldImmutable | isFieldIsReadOnly |
---|---|---|---|
Sum: | 0 | 0 | 0 |
Average: | 0 | 0 | 0 |
Minimum: | 0 | 0 | 0 |
Maximum: | 0 | 0 | 0 |
Standard deviation: | 0 | 0 | 0 |
Variance: | 0 | 0 | 0 |
![]() | Rule warning: A field must not be assigned from outside its parent hierarchy types |
warnif count > 0
from f in JustMyCode.Fields.Where(f =>
!f.IsPrivate && !f.IsGeneratedByCompiler &&
!f.IsImmutable && !f.IsEnumValue)
let methodsAssignerOutsideOfMyType = f.MethodsAssigningMe.Where(
m =>!m.IsGeneratedByCompiler &&
m.ParentType != f.ParentType &&
!m.ParentType.DeriveFrom(f.ParentType) )
where methodsAssignerOutsideOfMyType.Count() > 0
select new { f, methodsAssignerOutsideOfMyType }
1 fields matched
field | methodsAssignerOutsideOfMyType | Full Name |
---|---|---|
_stats | 1 method | org.apache.logging.log4j.core.async.perftest.PerfTestDriver$Setup ._stats |
Statistics
Stat | methodsAssignerOutsideOfMyType |
---|---|
Sum: | 0 |
Average: | 0 |
Minimum: | 0 |
Maximum: | 0 |
Standard deviation: | 0 |
Variance: | 0 |
Naming Conventions | 550 |
|
![]() | Rule warning: Instance fields should begin with a lower character |
warnif count > 0 from f in Application.Fields where
!f.NameLike (@"^[a-z]") &&
!f.IsStatic &&
!f.IsLiteral &&
!f.IsGeneratedByCompiler &&
!f.IsSpecialName
select new { f, f.SizeOfInst }
// This naming convention provokes debate.
// Don't hesitate to customize the regex of
// NameLike to your preference.
18 fields matched
fields | Size of instance | Full Name |
---|---|---|
CONTEXT_ATTRIBUTE | 0 | org.apache.logging.log4j.core.web.Log4jWebInitializerImpl .CONTEXT_ATTRIBUTE |
SUPPORT_ATTRIBUTE | 0 | org.apache.logging.log4j.core.web.Log4jWebInitializerImpl .SUPPORT_ATTRIBUTE |
_class | 4 | org.apache.logging.log4j.core.async.perftest.PerfTestDriver$Setup ._class |
_log4jConfig | 4 | org.apache.logging.log4j.core.async.perftest.PerfTestDriver$Setup ._log4jConfig |
_name | 4 | org.apache.logging.log4j.core.async.perftest.PerfTestDriver$Setup ._name |
_systemProperties | 4 | org.apache.logging.log4j.core.async.perftest.PerfTestDriver$Setup ._systemProperties |
_threadCount | 4 | org.apache.logging.log4j.core.async.perftest.PerfTestDriver$Setup ._threadCount |
_temp | 4 | org.apache.logging.log4j.core.async.perftest.PerfTestDriver$Setup ._temp |
_stats | 4 | org.apache.logging.log4j.core.async.perftest.PerfTestDriver$Setup ._stats |
_wait | 4 | org.apache.logging.log4j.core.async.perftest.PerfTestDriver$Setup ._wait |
_runner | 4 | org.apache.logging.log4j.core.async.perftest.PerfTestDriver$Setup ._runner |
_count | 4 | org.apache.logging.log4j.core.async.perftest.PerfTestDriver$Stats ._count |
_average | 4 | org.apache.logging.log4j.core.async.perftest.PerfTestDriver$Stats ._average |
_pct99 | 4 | org.apache.logging.log4j.core.async.perftest.PerfTestDriver$Stats ._pct99 |
_pct99_99 | 4 | org.apache.logging.log4j.core.async.perftest.PerfTestDriver$Stats ._pct99_99 |
_latencyRowCount | 4 | org.apache.logging.log4j.core.async.perftest.PerfTestDriver$Stats ._latencyRowCount |
_throughputRowCount | 4 | org.apache.logging.log4j.core.async.perftest.PerfTestDriver$Stats ._throughputRowCount |
_averageOpsPerSec | 4 | org.apache.logging.log4j.core.async.perftest.PerfTestDriver$Stats ._averageOpsPerSec |
Statistics
Stat | Size of instance |
---|---|
Sum: | 64 |
Average: | 3.56 |
Minimum: | 0 |
Maximum: | 4 |
Standard deviation: | 1.26 |
Variance: | 1.58 |
![]() | Rule warning: Methods name should begin with an lower character |
warnif count > 0 from m in JustMyCode.Methods where
!m.NameLike (@"^[a-z]") &&
!m.IsSpecialName &&
!m.IsGeneratedByCompiler && !m.IsConstructor
select m
// The name of a regular method should
// begin with an Upper letter.
1 methods matched
method | Full Name |
---|---|
TestNoMsg() | org.apache.logging.log4j.core.filter.RegexFilterTest.TestNoMsg() |
Statistics
Stat |
---|
Sum: |
Average: |
Minimum: |
Maximum: |
Standard deviation: |
Variance: |
![]() | Rule warning: Avoid types with name too long |
warnif count > 0 from t in Application.Types
where !t.IsGeneratedByCompiler
where t.SimpleName.Length > 35
select new { t, t.SimpleName }
78 types matched
types | SimpleName | Full Name |
---|---|---|
LoggerTest$TestParameterizedMessageFactory | LoggerTest$TestParameterizedMessageFactory | org.apache.logging.log4j.LoggerTest$TestParameterizedMessageFactory |
LoggerTest$TestStringFormatterMessageFactory | LoggerTest$TestStringFormatterMessageFactory | org.apache.logging.log4j.LoggerTest$TestStringFormatterMessageFactory |
ThreadContextInheritanceTest$TestThread | ThreadContextInheritanceTest$TestThread | org.apache.logging.log4j.ThreadContextInheritanceTest$TestThread |
ThreadDumpMessage$BasicThreadInfoFactory | ThreadDumpMessage$BasicThreadInfoFactory | org.apache.logging.log4j.message .ThreadDumpMessage$BasicThreadInfoFactory |
ThreadDumpMessage$ExtendedThreadInfoFactory | ThreadDumpMessage$ExtendedThreadInfoFactory | org.apache.logging.log4j.message .ThreadDumpMessage$ExtendedThreadInfoFactory |
ThreadDumpMessage$ThreadDumpMessageProxy | ThreadDumpMessage$ThreadDumpMessageProxy | org.apache.logging.log4j.message .ThreadDumpMessage$ThreadDumpMessageProxy |
BasicConfigurationFactory$BasicConfiguration | BasicConfigurationFactory$BasicConfiguration | org.apache.logging.log4j.core .BasicConfigurationFactory$BasicConfiguration |
LogEventFactoryTest$TestLogEventFactory | LogEventFactoryTest$TestLogEventFactory | org.apache.logging.log4j.core.LogEventFactoryTest$TestLogEventFactory |
ThreadedPerfTest$DebugDisabledRunnable | ThreadedPerfTest$DebugDisabledRunnable | org.apache.logging.log4j.core.ThreadedPerfTest$DebugDisabledRunnable |
ThreadedPerfTest$DebugLoggerRunnable | ThreadedPerfTest$DebugLoggerRunnable | org.apache.logging.log4j.core.ThreadedPerfTest$DebugLoggerRunnable |
ThrowableProxy$PrivateSecurityManager | ThrowableProxy$PrivateSecurityManager | org.apache.logging.log4j.core.impl .ThrowableProxy$PrivateSecurityManager |
SerializedLayout$PrivateObjectOutputStream | SerializedLayout$PrivateObjectOutputStream | org.apache.logging.log4j.core.layout .SerializedLayout$PrivateObjectOutputStream |
DatePatternConverter$PatternFormatter | DatePatternConverter$PatternFormatter | org.apache.logging.log4j.core.pattern .DatePatternConverter$PatternFormatter |
DatePatternConverter$UnixMillisFormatter | DatePatternConverter$UnixMillisFormatter | org.apache.logging.log4j.core.pattern .DatePatternConverter$UnixMillisFormatter |
NameAbbreviator$MaxElementAbbreviator | NameAbbreviator$MaxElementAbbreviator | org.apache.logging.log4j.core.pattern .NameAbbreviator$MaxElementAbbreviator |
NameAbbreviator$PatternAbbreviatorFragment | NameAbbreviator$PatternAbbreviatorFragment | org.apache.logging.log4j.core.pattern .NameAbbreviator$PatternAbbreviatorFragment |
ExtendedThrowablePatternConverterTest | ExtendedThrowablePatternConverterTest | org.apache.logging.log4j.core.pattern .ExtendedThrowablePatternConverterTest |
ThrowablePatternConverterTest$LocalizedException | ThrowablePatternConverterTest$LocalizedException | org.apache.logging.log4j.core.pattern .ThrowablePatternConverterTest$LocalizedException |
ClassLoaderContextSelector$PrivateSecurityManager | ClassLoaderContextSelector$PrivateSecurityManager | org.apache.logging.log4j.core.selector .ClassLoaderContextSelector$PrivateSecurityManager |
Log4jServletContainerInitializerTest | Log4jServletContainerInitializerTest | org.apache.logging.log4j.core.web.Log4jServletContainerInitializerTest |
ConsoleAppender$ConsoleManagerFactory | ConsoleAppender$ConsoleManagerFactory | org.apache.logging.log4j.core.appender .ConsoleAppender$ConsoleManagerFactory |
RandomAccessFileManager$DummyOutputStream | RandomAccessFileManager$DummyOutputStream | org.apache.logging.log4j.core.appender .RandomAccessFileManager$DummyOutputStream |
RandomAccessFileManager$RandomAccessFileManagerFactory | RandomAccessFileManager$RandomAccessFileManagerFactory | org.apache.logging.log4j.core.appender .RandomAccessFileManager$RandomAccessFileManagerFactory |
ConsoleAppenderAnsiStyleNameLayoutMain | ConsoleAppenderAnsiStyleNameLayoutMain | org.apache.logging.log4j.core.appender .ConsoleAppenderAnsiStyleNameLayoutMain |
ConsoleAppenderHighlightLayoutDefaultMain | ConsoleAppenderHighlightLayoutDefaultMain | org.apache.logging.log4j.core.appender .ConsoleAppenderHighlightLayoutDefaultMain |
ConsoleAppenderHighlightLayoutLogbackMain | ConsoleAppenderHighlightLayoutLogbackMain | org.apache.logging.log4j.core.appender .ConsoleAppenderHighlightLayoutLogbackMain |
ConsoleAppenderNoAnsiStyleLayoutMain | ConsoleAppenderNoAnsiStyleLayoutMain | org.apache.logging.log4j.core.appender .ConsoleAppenderNoAnsiStyleLayoutMain |
RandomAccessFileAppenderLocationTest | RandomAccessFileAppenderLocationTest | org.apache.logging.log4j.core.appender .RandomAccessFileAppenderLocationTest |
RollingRandomAccessFileAppenderLocationTest | RollingRandomAccessFileAppenderLocationTest | org.apache.logging.log4j.core.appender .RollingRandomAccessFileAppenderLocationTest |
RollingRandomAccessFileAppenderRolloverTest | RollingRandomAccessFileAppenderRolloverTest | org.apache.logging.log4j.core.appender .RollingRandomAccessFileAppenderRolloverTest |
XmlCompactFileAppenderValidationTest | XmlCompactFileAppenderValidationTest | org.apache.logging.log4j.core.appender .XmlCompactFileAppenderValidationTest |
XmlCompactFileAsyncAppenderValidationTest | XmlCompactFileAsyncAppenderValidationTest | org.apache.logging.log4j.core.appender .XmlCompactFileAsyncAppenderValidationTest |
AbstractDatabaseManager$AbstractFactoryData | AbstractDatabaseManager$AbstractFactoryData | org.apache.logging.log4j.core.appender.db .AbstractDatabaseManager$AbstractFactoryData |
AbstractDatabaseAppenderTest$LocalAbstractDatabaseAppender | AbstractDatabaseAppenderTest$LocalAbstractDatabaseAppender | org.apache.logging.log4j.core.appender.db .AbstractDatabaseAppenderTest$LocalAbstractDatabaseAppender |
AbstractDatabaseAppenderTest$LocalAbstractDatabaseManager | AbstractDatabaseAppenderTest$LocalAbstractDatabaseManager | org.apache.logging.log4j.core.appender.db .AbstractDatabaseAppenderTest$LocalAbstractDatabaseManager |
JDBCDatabaseManager$JDBCDatabaseManagerFactory | JDBCDatabaseManager$JDBCDatabaseManagerFactory | org.apache.logging.log4j.core.appender.db.jdbc .JDBCDatabaseManager$JDBCDatabaseManagerFactory |
FactoryMethodConnectionSourceTest$BadReturnTypeFactory | FactoryMethodConnectionSourceTest$BadReturnTypeFactory | org.apache.logging.log4j.core.appender.db.jdbc .FactoryMethodConnectionSourceTest$BadReturnTypeFactory |
FactoryMethodConnectionSourceTest$ConnectionFactory | FactoryMethodConnectionSourceTest$ConnectionFactory | org.apache.logging.log4j.core.appender.db.jdbc .FactoryMethodConnectionSourceTest$ConnectionFactory |
FactoryMethodConnectionSourceTest$DataSourceFactory | FactoryMethodConnectionSourceTest$DataSourceFactory | org.apache.logging.log4j.core.appender.db.jdbc .FactoryMethodConnectionSourceTest$DataSourceFactory |
AbstractLogEventWrapperEntity$NullLogEvent | AbstractLogEventWrapperEntity$NullLogEvent | org.apache.logging.log4j.core.appender.db.jpa .AbstractLogEventWrapperEntity$NullLogEvent |
JPADatabaseManager$JPADatabaseManagerFactory | JPADatabaseManager$JPADatabaseManagerFactory | org.apache.logging.log4j.core.appender.db.jpa .JPADatabaseManager$JPADatabaseManagerFactory |
JpaHyperSqlAppenderTest$BadConstructorEntity1 | JpaHyperSqlAppenderTest$BadConstructorEntity1 | org.apache.logging.log4j.core.appender.db.jpa .JpaHyperSqlAppenderTest$BadConstructorEntity1 |
JpaHyperSqlAppenderTest$BadConstructorEntity2 | JpaHyperSqlAppenderTest$BadConstructorEntity2 | org.apache.logging.log4j.core.appender.db.jpa .JpaHyperSqlAppenderTest$BadConstructorEntity2 |
ContextStackJsonAttributeConverter$1 | ContextStackJsonAttributeConverter$1 | org.apache.logging.log4j.core.appender.db.jpa.converter .ContextStackJsonAttributeConverter$1 |
ContextMapJsonAttributeConverterTest | ContextMapJsonAttributeConverterTest | org.apache.logging.log4j.core.appender.db.jpa.converter .ContextMapJsonAttributeConverterTest |
ContextStackJsonAttributeConverterTest | ContextStackJsonAttributeConverterTest | org.apache.logging.log4j.core.appender.db.jpa.converter .ContextStackJsonAttributeConverterTest |
StackTraceElementAttributeConverterTest | StackTraceElementAttributeConverterTest | org.apache.logging.log4j.core.appender.db.jpa.converter .StackTraceElementAttributeConverterTest |
NoSQLDatabaseManager$NoSQLDatabaseManagerFactory | NoSQLDatabaseManager$NoSQLDatabaseManagerFactory | org.apache.logging.log4j.core.appender.db.nosql .NoSQLDatabaseManager$NoSQLDatabaseManagerFactory |
RollingFileManager$RollingFileManagerFactory | RollingFileManager$RollingFileManagerFactory | org.apache.logging.log4j.core.appender.rolling .RollingFileManager$RollingFileManagerFactory |
RollingRandomAccessFileManager$DummyOutputStream | RollingRandomAccessFileManager$DummyOutputStream | org.apache.logging.log4j.core.appender.rolling .RollingRandomAccessFileManager$DummyOutputStream |
RollingRandomAccessFileManager$FactoryData | RollingRandomAccessFileManager$FactoryData | org.apache.logging.log4j.core.appender.rolling .RollingRandomAccessFileManager$FactoryData |
RollingRandomAccessFileManager$RollingRandomAccessFileManagerFactory | RollingRandomAccessFileManager$RollingRandomAccessFileManagerFactory | org.apache.logging.log4j.core.appender.rolling .RollingRandomAccessFileManager$RollingRandomAccessFileManagerFactory |
OnStartupTriggeringPolicyTest$MyRollingManager | OnStartupTriggeringPolicyTest$MyRollingManager | org.apache.logging.log4j.core.appender.rolling .OnStartupTriggeringPolicyTest$MyRollingManager |
AsyncLoggerConfigHelper$Log4jEventWrapper | AsyncLoggerConfigHelper$Log4jEventWrapper | org.apache.logging.log4j.core.async .AsyncLoggerConfigHelper$Log4jEventWrapper |
AsyncLoggerConfigHelper$Log4jEventWrapperHandler | AsyncLoggerConfigHelper$Log4jEventWrapperHandler | org.apache.logging.log4j.core.async .AsyncLoggerConfigHelper$Log4jEventWrapperHandler |
ConfigurationFactory$ConfigurationSource | ConfigurationFactory$ConfigurationSource | org.apache.logging.log4j.core.config .ConfigurationFactory$ConfigurationSource |
ConfigurationFactory$WeightedFactory | ConfigurationFactory$WeightedFactory | org.apache.logging.log4j.core.config .ConfigurationFactory$WeightedFactory |
DatagramSocketManager$DatagramSocketManagerFactory | DatagramSocketManager$DatagramSocketManagerFactory | org.apache.logging.log4j.core.net .DatagramSocketManager$DatagramSocketManagerFactory |
JMSQueueManager$JMSQueueManagerFactory | JMSQueueManager$JMSQueueManagerFactory | org.apache.logging.log4j.core.net .JMSQueueManager$JMSQueueManagerFactory |
JMSTopicManager$JMSTopicManagerFactory | JMSTopicManager$JMSTopicManagerFactory | org.apache.logging.log4j.core.net .JMSTopicManager$JMSTopicManagerFactory |
SocketServer$ServerConfigurationFactory | SocketServer$ServerConfigurationFactory | org.apache.logging.log4j.core.net .SocketServer$ServerConfigurationFactory |
TCPSocketManager$TCPSocketManagerFactory | TCPSocketManager$TCPSocketManagerFactory | org.apache.logging.log4j.core.net .TCPSocketManager$TCPSocketManagerFactory |
TLSSocketManager$TLSSocketManagerFactory$TLSSocketManagerFactoryExcept ion | TLSSocketManager$TLSSocketManagerFactory$TLSSocketManagerFactoryException | org.apache.logging.log4j.core.net .TLSSocketManager$TLSSocketManagerFactory$TLSSocketManagerFactoryExcep tion |
TLSSocketManager$TLSSocketManagerFactory | TLSSocketManager$TLSSocketManagerFactory | org.apache.logging.log4j.core.net .TLSSocketManager$TLSSocketManagerFactory |
UDPSocketServer$ServerConfigurationFactory | UDPSocketServer$ServerConfigurationFactory | org.apache.logging.log4j.core.net .UDPSocketServer$ServerConfigurationFactory |
AbstractSocketServerTest$ThreadFilter | AbstractSocketServerTest$ThreadFilter | org.apache.logging.log4j.core.net .AbstractSocketServerTest$ThreadFilter |
SocketMessageLossTest$TestSocketServer | SocketMessageLossTest$TestSocketServer | org.apache.logging.log4j.core.net .SocketMessageLossTest$TestSocketServer |
SocketReconnectTest$TestSocketServer | SocketReconnectTest$TestSocketServer | org.apache.logging.log4j.core.net.SocketReconnectTest$TestSocketServer |
BasicConfigurationFactory$BasicConfiguration | BasicConfigurationFactory$BasicConfiguration | org.apache.log4j.BasicConfigurationFactory$BasicConfiguration |
FlumeEmbeddedManager$FlumeManagerFactory | FlumeEmbeddedManager$FlumeManagerFactory | org.apache.logging.log4j.flume.appender .FlumeEmbeddedManager$FlumeManagerFactory |
FlumePersistentManager$BDBManagerFactory | FlumePersistentManager$BDBManagerFactory | org.apache.logging.log4j.flume.appender .FlumePersistentManager$BDBManagerFactory |
FlumePersistentManager$DaemonThreadFactory | FlumePersistentManager$DaemonThreadFactory | org.apache.logging.log4j.flume.appender .FlumePersistentManager$DaemonThreadFactory |
FlumeEmbeddedAgentTest$EventCollector | FlumeEmbeddedAgentTest$EventCollector | org.apache.logging.log4j.flume.appender .FlumeEmbeddedAgentTest$EventCollector |
FlumeEmbeddedAppenderTest$EventCollector | FlumeEmbeddedAppenderTest$EventCollector | org.apache.logging.log4j.flume.appender .FlumeEmbeddedAppenderTest$EventCollector |
FlumePersistentAppenderTest$EventCollector | FlumePersistentAppenderTest$EventCollector | org.apache.logging.log4j.flume.appender .FlumePersistentAppenderTest$EventCollector |
FlumePersistentAppenderTest$ReaderThread | FlumePersistentAppenderTest$ReaderThread | org.apache.logging.log4j.flume.appender .FlumePersistentAppenderTest$ReaderThread |
FlumePersistentAppenderTest$WriterThread | FlumePersistentAppenderTest$WriterThread | org.apache.logging.log4j.flume.appender .FlumePersistentAppenderTest$WriterThread |
LoggingMessageTagSupportTest$MyMessage | LoggingMessageTagSupportTest$MyMessage | org.apache.logging.log4j.taglib.LoggingMessageTagSupportTest$MyMessage |
Statistics
Stat | SimpleName |
---|---|
Sum: | 0 |
Average: | 0 |
Minimum: | 0 |
Maximum: | 0 |
Standard deviation: | 0 |
Variance: | 0 |
![]() | Rule warning: Avoid methods with name too long |
warnif count > 0 from m in Application.Methods where
!m.IsGeneratedByCompiler &&
((!m.IsSpecialName && m.SimpleName.Length > 35) ||
// Property getter/setter are prefixed with "get_" "set_" of length 4.
( m.IsSpecialName && m.SimpleName.Length - 4 > 35))
select new { m, m.SimpleName }
// The regex matches methods with name longer
// than 35 characters.
// Method Name doesn't contain the type and package
// prefix, FullName does.
// The regex computes the method name length from
// the beginning until the first open parenthesis
// or first lower than (for generic methods).
// Explicit Interface Implementation methods are
// discarded because their names are prefixed
// with the interface name.
214 methods matched
methods | SimpleName | Full Name |
---|---|---|
LoggerTest$TestParameterizedMessageFactory() | LoggerTest$TestParameterizedMessageFactory | org.apache.logging.log4j.LoggerTest$TestParameterizedMessageFactory .LoggerTest$TestParameterizedMessageFactory() |
LoggerTest$TestStringFormatterMessageFactory() | LoggerTest$TestStringFormatterMessageFactory | org.apache.logging.log4j.LoggerTest$TestStringFormatterMessageFactory .LoggerTest$TestStringFormatterMessageFactory() |
getLogger_Class_ParameterizedMessageFactory() | getLogger_Class_ParameterizedMessageFactory | org.apache.logging.log4j.LoggerTest .getLogger_Class_ParameterizedMessageFactory() |
getLogger_Class_StringFormatterMessageFactory() | getLogger_Class_StringFormatterMessageFactory | org.apache.logging.log4j.LoggerTest .getLogger_Class_StringFormatterMessageFactory() |
getLogger_Object_ParameterizedMessageFactory() | getLogger_Object_ParameterizedMessageFactory | org.apache.logging.log4j.LoggerTest .getLogger_Object_ParameterizedMessageFactory() |
getLogger_Object_StringFormatterMessageFactory() | getLogger_Object_StringFormatterMessageFactory | org.apache.logging.log4j.LoggerTest .getLogger_Object_StringFormatterMessageFactory() |
getLogger_String_MessageFactoryMismatch() | getLogger_String_MessageFactoryMismatch | org.apache.logging.log4j.LoggerTest .getLogger_String_MessageFactoryMismatch() |
getLogger_String_ParameterizedMessageFactory() | getLogger_String_ParameterizedMessageFactory | org.apache.logging.log4j.LoggerTest .getLogger_String_ParameterizedMessageFactory() |
getLogger_String_StringFormatterMessageFactory() | getLogger_String_StringFormatterMessageFactory | org.apache.logging.log4j.LoggerTest .getLogger_String_StringFormatterMessageFactory() |
ThreadContextInheritanceTest$TestThread(ThreadContextInheritanceTest ,StringBuilder) | ThreadContextInheritanceTest$TestThread | org.apache.logging.log4j.ThreadContextInheritanceTest$TestThread .ThreadContextInheritanceTest$TestThread(ThreadContextInheritanceTest ,StringBuilder) |
testGetContextReturnsEmptyMapIfEmpty() | testGetContextReturnsEmptyMapIfEmpty | org.apache.logging.log4j.ThreadContextInheritanceTest .testGetContextReturnsEmptyMapIfEmpty() |
testGetImmutableContextReturnsEmptyMapIfEmpty() | testGetImmutableContextReturnsEmptyMapIfEmpty | org.apache.logging.log4j.ThreadContextInheritanceTest .testGetImmutableContextReturnsEmptyMapIfEmpty() |
testGetImmutableContextReturnsImmutableMapIfNonEmpty() | testGetImmutableContextReturnsImmutableMapIfNonEmpty | org.apache.logging.log4j.ThreadContextInheritanceTest .testGetImmutableContextReturnsImmutableMapIfNonEmpty() |
testGetImmutableContextReturnsImmutableMapIfEmpty() | testGetImmutableContextReturnsImmutableMapIfEmpty | org.apache.logging.log4j.ThreadContextInheritanceTest .testGetImmutableContextReturnsImmutableMapIfEmpty() |
testGetImmutableStackReturnsEmptyStackIfEmpty() | testGetImmutableStackReturnsEmptyStackIfEmpty | org.apache.logging.log4j.ThreadContextInheritanceTest .testGetImmutableStackReturnsEmptyStackIfEmpty() |
testGetContextReturnsEmptyMapIfEmpty() | testGetContextReturnsEmptyMapIfEmpty | org.apache.logging.log4j.ThreadContextTest .testGetContextReturnsEmptyMapIfEmpty() |
testGetImmutableContextReturnsEmptyMapIfEmpty() | testGetImmutableContextReturnsEmptyMapIfEmpty | org.apache.logging.log4j.ThreadContextTest .testGetImmutableContextReturnsEmptyMapIfEmpty() |
testGetImmutableContextReturnsImmutableMapIfNonEmpty() | testGetImmutableContextReturnsImmutableMapIfNonEmpty | org.apache.logging.log4j.ThreadContextTest .testGetImmutableContextReturnsImmutableMapIfNonEmpty() |
testGetImmutableContextReturnsImmutableMapIfEmpty() | testGetImmutableContextReturnsImmutableMapIfEmpty | org.apache.logging.log4j.ThreadContextTest .testGetImmutableContextReturnsImmutableMapIfEmpty() |
testGetImmutableStackReturnsEmptyStackIfEmpty() | testGetImmutableStackReturnsEmptyStackIfEmpty | org.apache.logging.log4j.ThreadContextTest .testGetImmutableStackReturnsEmptyStackIfEmpty() |
ThreadDumpMessage$BasicThreadInfoFactory() | ThreadDumpMessage$BasicThreadInfoFactory | org.apache.logging.log4j.message .ThreadDumpMessage$BasicThreadInfoFactory .ThreadDumpMessage$BasicThreadInfoFactory() |
ThreadDumpMessage$ExtendedThreadInfoFactory() | ThreadDumpMessage$ExtendedThreadInfoFactory | org.apache.logging.log4j.message .ThreadDumpMessage$ExtendedThreadInfoFactory .ThreadDumpMessage$ExtendedThreadInfoFactory() |
ThreadDumpMessage$ThreadDumpMessageProxy(ThreadDumpMessage) | ThreadDumpMessage$ThreadDumpMessageProxy | org.apache.logging.log4j.message .ThreadDumpMessage$ThreadDumpMessageProxy .ThreadDumpMessage$ThreadDumpMessageProxy(ThreadDumpMessage) |
testDoesNothingIfConstructedWithUseMapIsFalse() | testDoesNothingIfConstructedWithUseMapIsFalse | org.apache.logging.log4j.spi.DefaultThreadContextMapTest .testDoesNothingIfConstructedWithUseMapIsFalse() |
testGetImmutableMapReturnsNullIfEmpty() | testGetImmutableMapReturnsNullIfEmpty | org.apache.logging.log4j.spi.DefaultThreadContextMapTest .testGetImmutableMapReturnsNullIfEmpty() |
testGetImmutableMapReturnsImmutableMapIfNonEmpty() | testGetImmutableMapReturnsImmutableMapIfNonEmpty | org.apache.logging.log4j.spi.DefaultThreadContextMapTest .testGetImmutableMapReturnsImmutableMapIfNonEmpty() |
testGetImmutableMapCopyNotAffectdByContextMapChanges() | testGetImmutableMapCopyNotAffectdByContextMapChanges | org.apache.logging.log4j.spi.DefaultThreadContextMapTest .testGetImmutableMapCopyNotAffectdByContextMapChanges() |
testThreadLocalNotInheritableByDefault() | testThreadLocalNotInheritableByDefault | org.apache.logging.log4j.spi.DefaultThreadContextMapTest .testThreadLocalNotInheritableByDefault() |
testThreadLocalInheritableIfConfigured() | testThreadLocalInheritableIfConfigured | org.apache.logging.log4j.spi.DefaultThreadContextMapTest .testThreadLocalInheritableIfConfigured() |
testDoesNothingIfConstructedWithUseStackIsFalse() | testDoesNothingIfConstructedWithUseStackIsFalse | org.apache.logging.log4j.spi.DefaultThreadContextStackTest .testDoesNothingIfConstructedWithUseStackIsFalse() |
testIteratorReturnsInListOrderNotStackOrder() | testIteratorReturnsInListOrderNotStackOrder | org.apache.logging.log4j.spi.DefaultThreadContextStackTest .testIteratorReturnsInListOrderNotStackOrder() |
testIteratorReturnsInListOrderNotStackOrder() | testIteratorReturnsInListOrderNotStackOrder | org.apache.logging.log4j.spi.MutableThreadContextStackTest .testIteratorReturnsInListOrderNotStackOrder() |
BasicConfigurationFactory$BasicConfiguration(BasicConfigurationFactory ) | BasicConfigurationFactory$BasicConfiguration | org.apache.logging.log4j.core .BasicConfigurationFactory$BasicConfiguration .BasicConfigurationFactory$BasicConfiguration (BasicConfigurationFactory) |
LogEventFactoryTest$TestLogEventFactory() | LogEventFactoryTest$TestLogEventFactory | org.apache.logging.log4j.core.LogEventFactoryTest$TestLogEventFactory .LogEventFactoryTest$TestLogEventFactory() |
getLogger_String_MessageFactoryMismatch() | getLogger_String_MessageFactoryMismatch | org.apache.logging.log4j.core.LoggerTest .getLogger_String_MessageFactoryMismatch() |
getLogger_String_MessageFactoryMismatchNull() | getLogger_String_MessageFactoryMismatchNull | org.apache.logging.log4j.core.LoggerTest .getLogger_String_MessageFactoryMismatchNull() |
ThreadedPerfTest$DebugDisabledRunnable(ThreadedPerfTest) | ThreadedPerfTest$DebugDisabledRunnable | org.apache.logging.log4j.core.ThreadedPerfTest$DebugDisabledRunnable .ThreadedPerfTest$DebugDisabledRunnable(ThreadedPerfTest) |
ThreadedPerfTest$DebugLoggerRunnable(ThreadedPerfTest) | ThreadedPerfTest$DebugLoggerRunnable | org.apache.logging.log4j.core.ThreadedPerfTest$DebugLoggerRunnable .ThreadedPerfTest$DebugLoggerRunnable(ThreadedPerfTest) |
testReturnDefaultIfNameIsUnsupported() | testReturnDefaultIfNameIsUnsupported | org.apache.logging.log4j.core.helpers.CharsetsTest .testReturnDefaultIfNameIsUnsupported() |
testReturnRequestedCharsetIfSupported() | testReturnRequestedCharsetIfSupported | org.apache.logging.log4j.core.helpers.CharsetsTest .testReturnRequestedCharsetIfSupported() |
testFileFromUriWithPlusCharactersInName() | testFileFromUriWithPlusCharactersInName | org.apache.logging.log4j.core.helpers.FileUtilsTest .testFileFromUriWithPlusCharactersInName() |
testFileFromUriWithPlusCharactersConvertedToSpacesIfFileDoesNotExist() | testFileFromUriWithPlusCharactersConvertedToSpacesIfFileDoesNotExist | org.apache.logging.log4j.core.helpers.FileUtilsTest .testFileFromUriWithPlusCharactersConvertedToSpacesIfFileDoesNotExist( ) |
testGetCorrectedFilePathUriWithoutBackslashes() | testGetCorrectedFilePathUriWithoutBackslashes | org.apache.logging.log4j.core.helpers.FileUtilsTest .testGetCorrectedFilePathUriWithoutBackslashes() |
testGetCorrectedFilePathUriWithBackslashes() | testGetCorrectedFilePathUriWithBackslashes | org.apache.logging.log4j.core.helpers.FileUtilsTest .testGetCorrectedFilePathUriWithBackslashes() |
ThrowableProxy$PrivateSecurityManager() | ThrowableProxy$PrivateSecurityManager | org.apache.logging.log4j.core.impl .ThrowableProxy$PrivateSecurityManager .ThrowableProxy$PrivateSecurityManager() |
testSingleOptionFullAndMultipleFilters() | testSingleOptionFullAndMultipleFilters | org.apache.logging.log4j.core.impl.ThrowableFormatOptionsTest .testSingleOptionFullAndMultipleFilters() |
testSingleOptionNoneAndMultipleFilters() | testSingleOptionNoneAndMultipleFilters | org.apache.logging.log4j.core.impl.ThrowableFormatOptionsTest .testSingleOptionNoneAndMultipleFilters() |
testSingleOptionShortAndMultipleFilters() | testSingleOptionShortAndMultipleFilters | org.apache.logging.log4j.core.impl.ThrowableFormatOptionsTest .testSingleOptionShortAndMultipleFilters() |
testSingleOptionDepthAndMultipleFilters() | testSingleOptionDepthAndMultipleFilters | org.apache.logging.log4j.core.impl.ThrowableFormatOptionsTest .testSingleOptionDepthAndMultipleFilters() |
unregisterAsyncLoggerRingBufferAdmins(String,MBeanServer) | unregisterAsyncLoggerRingBufferAdmins | org.apache.logging.log4j.core.jmx.Server .unregisterAsyncLoggerRingBufferAdmins(String,MBeanServer) |
unregisterAsyncLoggerConfigRingBufferAdmins(String,MBeanServer) | unregisterAsyncLoggerConfigRingBufferAdmins | org.apache.logging.log4j.core.jmx.Server .unregisterAsyncLoggerConfigRingBufferAdmins(String,MBeanServer) |
testEscapeQuotesButDoesNotEscapeEquals() | testEscapeQuotesButDoesNotEscapeEquals | org.apache.logging.log4j.core.jmx.ServerTest .testEscapeQuotesButDoesNotEscapeEquals() |
testEscapeQuotesButDoesNotEscapeComma() | testEscapeQuotesButDoesNotEscapeComma | org.apache.logging.log4j.core.jmx.ServerTest .testEscapeQuotesButDoesNotEscapeComma() |
testEscapeQuotesButDoesNotEscapeColon() | testEscapeQuotesButDoesNotEscapeColon | org.apache.logging.log4j.core.jmx.ServerTest .testEscapeQuotesButDoesNotEscapeColon() |
SerializedLayout$PrivateObjectOutputStream(SerializedLayout ,OutputStream) | SerializedLayout$PrivateObjectOutputStream | org.apache.logging.log4j.core.layout .SerializedLayout$PrivateObjectOutputStream .SerializedLayout$PrivateObjectOutputStream(SerializedLayout ,OutputStream) |
DatePatternConverter$PatternFormatter(SimpleDateFormat) | DatePatternConverter$PatternFormatter | org.apache.logging.log4j.core.pattern .DatePatternConverter$PatternFormatter .DatePatternConverter$PatternFormatter(SimpleDateFormat) |
DatePatternConverter$UnixMillisFormatter() | DatePatternConverter$UnixMillisFormatter | org.apache.logging.log4j.core.pattern .DatePatternConverter$UnixMillisFormatter .DatePatternConverter$UnixMillisFormatter() |
NameAbbreviator$MaxElementAbbreviator(int) | NameAbbreviator$MaxElementAbbreviator | org.apache.logging.log4j.core.pattern .NameAbbreviator$MaxElementAbbreviator .NameAbbreviator$MaxElementAbbreviator(int) |
NameAbbreviator$PatternAbbreviatorFragment(int,char) | NameAbbreviator$PatternAbbreviatorFragment | org.apache.logging.log4j.core.pattern .NameAbbreviator$PatternAbbreviatorFragment .NameAbbreviator$PatternAbbreviatorFragment(int,char) |
ExtendedThrowablePatternConverterTest() | ExtendedThrowablePatternConverterTest | org.apache.logging.log4j.core.pattern .ExtendedThrowablePatternConverterTest .ExtendedThrowablePatternConverterTest() |
ThrowablePatternConverterTest$LocalizedException() | ThrowablePatternConverterTest$LocalizedException | org.apache.logging.log4j.core.pattern .ThrowablePatternConverterTest$LocalizedException .ThrowablePatternConverterTest$LocalizedException() |
ClassLoaderContextSelector$PrivateSecurityManager() | ClassLoaderContextSelector$PrivateSecurityManager | org.apache.logging.log4j.core.selector .ClassLoaderContextSelector$PrivateSecurityManager .ClassLoaderContextSelector$PrivateSecurityManager() |
Log4jServletContainerInitializerTest() | Log4jServletContainerInitializerTest | org.apache.logging.log4j.core.web.Log4jServletContainerInitializerTest .Log4jServletContainerInitializerTest() |
testOnStartupWithServletVersion3_xEffectiveVersion2_x() | testOnStartupWithServletVersion3_xEffectiveVersion2_x | org.apache.logging.log4j.core.web.Log4jServletContainerInitializerTest .testOnStartupWithServletVersion3_xEffectiveVersion2_x() |
testOnStartupWithServletVersion3_xEffectiveVersion3_xDisabledTrue() | testOnStartupWithServletVersion3_xEffectiveVersion3_xDisabledTrue | org.apache.logging.log4j.core.web.Log4jServletContainerInitializerTest .testOnStartupWithServletVersion3_xEffectiveVersion3_xDisabledTrue() |
testOnStartupWithServletVersion3_xEffectiveVersion3_xDisabledTRUE() | testOnStartupWithServletVersion3_xEffectiveVersion3_xDisabledTRUE | org.apache.logging.log4j.core.web.Log4jServletContainerInitializerTest .testOnStartupWithServletVersion3_xEffectiveVersion3_xDisabledTRUE() |
testOnStartupWithServletVersion3_xEffectiveVersion3_x() | testOnStartupWithServletVersion3_xEffectiveVersion3_x | org.apache.logging.log4j.core.web.Log4jServletContainerInitializerTest .testOnStartupWithServletVersion3_xEffectiveVersion3_x() |
testOnStartupCanceledDueToPreExistingFilter() | testOnStartupCanceledDueToPreExistingFilter | org.apache.logging.log4j.core.web.Log4jServletContainerInitializerTest .testOnStartupCanceledDueToPreExistingFilter() |
testOnStartupFailedDueToInitializerFailure() | testOnStartupFailedDueToInitializerFailure | org.apache.logging.log4j.core.web.Log4jServletContainerInitializerTest .testOnStartupFailedDueToInitializerFailure() |
testSetLoggerContextBeforeInitialize() | testSetLoggerContextBeforeInitialize | org.apache.logging.log4j.core.web.Log4jWebInitializerImplTest .testSetLoggerContextBeforeInitialize() |
testClearLoggerContextBeforeInitialize() | testClearLoggerContextBeforeInitialize | org.apache.logging.log4j.core.web.Log4jWebInitializerImplTest .testClearLoggerContextBeforeInitialize() |
testInitializeWithNoParametersThenSetLoggerContextThenDeinitialize() | testInitializeWithNoParametersThenSetLoggerContextThenDeinitialize | org.apache.logging.log4j.core.web.Log4jWebInitializerImplTest .testInitializeWithNoParametersThenSetLoggerContextThenDeinitialize() |
testInitializeWithClassLoaderNoParametersThenSetLoggerContextThenDeini tialize() | testInitializeWithClassLoaderNoParametersThenSetLoggerContextThenDeinitialize | org.apache.logging.log4j.core.web.Log4jWebInitializerImplTest .testInitializeWithClassLoaderNoParametersThenSetLoggerContextThenDein itialize() |
testInitializeFailsAfterDeinitialize() | testInitializeFailsAfterDeinitialize | org.apache.logging.log4j.core.web.Log4jWebInitializerImplTest .testInitializeFailsAfterDeinitialize() |
testInitializeUsingJndiSelectorFails() | testInitializeUsingJndiSelectorFails | org.apache.logging.log4j.core.web.Log4jWebInitializerImplTest .testInitializeUsingJndiSelectorFails() |
ConsoleAppender$ConsoleManagerFactory() | ConsoleAppender$ConsoleManagerFactory | org.apache.logging.log4j.core.appender .ConsoleAppender$ConsoleManagerFactory .ConsoleAppender$ConsoleManagerFactory() |
RandomAccessFileManager$DummyOutputStream() | RandomAccessFileManager$DummyOutputStream | org.apache.logging.log4j.core.appender .RandomAccessFileManager$DummyOutputStream .RandomAccessFileManager$DummyOutputStream() |
RandomAccessFileManager$RandomAccessFileManagerFactory() | RandomAccessFileManager$RandomAccessFileManagerFactory | org.apache.logging.log4j.core.appender .RandomAccessFileManager$RandomAccessFileManagerFactory .RandomAccessFileManager$RandomAccessFileManagerFactory() |
ConsoleAppenderAnsiStyleNameLayoutMain() | ConsoleAppenderAnsiStyleNameLayoutMain | org.apache.logging.log4j.core.appender .ConsoleAppenderAnsiStyleNameLayoutMain .ConsoleAppenderAnsiStyleNameLayoutMain() |
ConsoleAppenderAnsiStyleNameLayoutMain() | ConsoleAppenderAnsiStyleNameLayoutMain | org.apache.logging.log4j.core.appender .ConsoleAppenderAnsiStyleNameLayoutMain .ConsoleAppenderAnsiStyleNameLayoutMain() |
ConsoleAppenderHighlightLayoutDefaultMain() | ConsoleAppenderHighlightLayoutDefaultMain | org.apache.logging.log4j.core.appender .ConsoleAppenderHighlightLayoutDefaultMain .ConsoleAppenderHighlightLayoutDefaultMain() |
ConsoleAppenderHighlightLayoutDefaultMain() | ConsoleAppenderHighlightLayoutDefaultMain | org.apache.logging.log4j.core.appender .ConsoleAppenderHighlightLayoutDefaultMain .ConsoleAppenderHighlightLayoutDefaultMain() |
ConsoleAppenderHighlightLayoutLogbackMain() | ConsoleAppenderHighlightLayoutLogbackMain | org.apache.logging.log4j.core.appender .ConsoleAppenderHighlightLayoutLogbackMain .ConsoleAppenderHighlightLayoutLogbackMain() |
ConsoleAppenderHighlightLayoutLogbackMain() | ConsoleAppenderHighlightLayoutLogbackMain | org.apache.logging.log4j.core.appender .ConsoleAppenderHighlightLayoutLogbackMain .ConsoleAppenderHighlightLayoutLogbackMain() |
ConsoleAppenderNoAnsiStyleLayoutMain() | ConsoleAppenderNoAnsiStyleLayoutMain | org.apache.logging.log4j.core.appender .ConsoleAppenderNoAnsiStyleLayoutMain .ConsoleAppenderNoAnsiStyleLayoutMain() |
ConsoleAppenderNoAnsiStyleLayoutMain() | ConsoleAppenderNoAnsiStyleLayoutMain | org.apache.logging.log4j.core.appender .ConsoleAppenderNoAnsiStyleLayoutMain .ConsoleAppenderNoAnsiStyleLayoutMain() |
RandomAccessFileAppenderLocationTest() | RandomAccessFileAppenderLocationTest | org.apache.logging.log4j.core.appender .RandomAccessFileAppenderLocationTest .RandomAccessFileAppenderLocationTest() |
testWrite_dataExceedingMinBufferSize() | testWrite_dataExceedingMinBufferSize | org.apache.logging.log4j.core.appender.RandomAccessFileManagerTest .testWrite_dataExceedingMinBufferSize() |
testAppendDoesNotOverwriteExistingFile() | testAppendDoesNotOverwriteExistingFile | org.apache.logging.log4j.core.appender.RandomAccessFileManagerTest .testAppendDoesNotOverwriteExistingFile() |
RollingRandomAccessFileAppenderLocationTest() | RollingRandomAccessFileAppenderLocationTest | org.apache.logging.log4j.core.appender .RollingRandomAccessFileAppenderLocationTest .RollingRandomAccessFileAppenderLocationTest() |
RollingRandomAccessFileAppenderRolloverTest() | RollingRandomAccessFileAppenderRolloverTest | org.apache.logging.log4j.core.appender .RollingRandomAccessFileAppenderRolloverTest .RollingRandomAccessFileAppenderRolloverTest() |
checkTheNumberOfSentAndReceivedMessages() | checkTheNumberOfSentAndReceivedMessages | org.apache.logging.log4j.core.appender.SyslogAppenderTestBase .checkTheNumberOfSentAndReceivedMessages() |
checkTheEqualityOfSentAndReceivedMessages() | checkTheEqualityOfSentAndReceivedMessages | org.apache.logging.log4j.core.appender.SyslogAppenderTestBase .checkTheEqualityOfSentAndReceivedMessages() |
XmlCompactFileAppenderValidationTest() | XmlCompactFileAppenderValidationTest | org.apache.logging.log4j.core.appender .XmlCompactFileAppenderValidationTest .XmlCompactFileAppenderValidationTest() |
XmlCompactFileAsyncAppenderValidationTest() | XmlCompactFileAsyncAppenderValidationTest | org.apache.logging.log4j.core.appender .XmlCompactFileAsyncAppenderValidationTest .XmlCompactFileAsyncAppenderValidationTest() |
AbstractDatabaseManager$AbstractFactoryData(int) | AbstractDatabaseManager$AbstractFactoryData | org.apache.logging.log4j.core.appender.db .AbstractDatabaseManager$AbstractFactoryData .AbstractDatabaseManager$AbstractFactoryData(int) |
AbstractDatabaseAppenderTest$LocalAbstractDatabaseAppender(String ,Filter,boolean ,AbstractDatabaseAppenderTest$LocalAbstractDatabaseManager) | AbstractDatabaseAppenderTest$LocalAbstractDatabaseAppender | org.apache.logging.log4j.core.appender.db .AbstractDatabaseAppenderTest$LocalAbstractDatabaseAppender .AbstractDatabaseAppenderTest$LocalAbstractDatabaseAppender(String ,Filter,boolean ,AbstractDatabaseAppenderTest$LocalAbstractDatabaseManager) |
AbstractDatabaseAppenderTest$LocalAbstractDatabaseManager(String,int) | AbstractDatabaseAppenderTest$LocalAbstractDatabaseManager | org.apache.logging.log4j.core.appender.db .AbstractDatabaseAppenderTest$LocalAbstractDatabaseManager .AbstractDatabaseAppenderTest$LocalAbstractDatabaseManager(String,int) |
JDBCDatabaseManager$JDBCDatabaseManagerFactory() | JDBCDatabaseManager$JDBCDatabaseManagerFactory | org.apache.logging.log4j.core.appender.db.jdbc .JDBCDatabaseManager$JDBCDatabaseManagerFactory .JDBCDatabaseManager$JDBCDatabaseManagerFactory() |
testPerformanceOfAppenderWith10000Events() | testPerformanceOfAppenderWith10000Events | org.apache.logging.log4j.core.appender.db.jdbc .AbstractJdbcAppenderTest.testPerformanceOfAppenderWith10000Events() |
Statistics
Stat | SimpleName |
---|---|
Sum: | 0 |
Average: | 0 |
Minimum: | 0 |
Maximum: | 0 |
Standard deviation: | 0 |
Variance: | 0 |
![]() | Rule warning: Avoid fields with name too long |
warnif count > 0 from f in Application.Fields where
!f.IsGeneratedByCompiler &&
f.Name.Length > 35
select f
// The regex matches fields with name longer
// than 35 characters.
// Field Name doesn't contain the type and
// package prefix, FullName does.
3 fields matched
fields | Full Name |
---|---|
NUM_100NS_INTERVALS_SINCE_UUID_EPOCH | org.apache.logging.log4j.core.helpers.UUIDUtil .NUM_100NS_INTERVALS_SINCE_UUID_EPOCH |
NUM_100NS_INTERVALS_SINCE_UUID_EPOCH | org.apache.logging.log4j.core.helpers.UUIDTest .NUM_100NS_INTERVALS_SINCE_UUID_EPOCH |
IS_LOG4J_AUTO_INITIALIZATION_DISABLED | org.apache.logging.log4j.core.web.Log4jWebSupport .IS_LOG4J_AUTO_INITIALIZATION_DISABLED |
Statistics
Stat |
---|
Sum: |
Average: |
Minimum: |
Maximum: |
Standard deviation: |
Variance: |
Source Files Organization | 220 |
|
![]() | Rule warning: Avoid defining multiple types in a source file |
warnif count > 0
// Build a lookup indexed by source files, values being a sequence of types defined in the source file.
let lookup = Application.Types.Where(t =>
t.SourceFileDeclAvailable &&
// except nested types and types generated by compilers!
!t.IsGeneratedByCompiler &&
!t.IsNested)
// It could make sense to not apply this rule for enumerations.
// && !t.IsEnumeration)
// We use multi-key, since a type can be declared in multiple source files.
.ToMultiKeyLookup(t2 => t2.SourceDecls.Select(d => d.SourceFile))
from @group in lookup where @group.Count() > 1
let sourceFile = @group.Key
// CQLinq doesn't let indexing result with sourceFile
// so we choose a typeIndex in types,
// preferably the type that has the file name.
let typeWithSourceFileName = @group.FirstOrDefault(t3 => t3.SimpleName == sourceFile.FileNameWithoutExtension)
let typeIndex = typeWithSourceFileName ?? @group.First()
select new { typeIndex,
types = @group as IEnumerable<IType>,
sourceFile.FilePathString }
54 types matched
types | types | FilePathString | Full Name |
---|---|---|---|
MarkerManager | 10 types | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/MarkerManager.java | org.apache.logging.log4j.MarkerManager |
ThreadContext | 9 types | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/ThreadContext.java | org.apache.logging.log4j.ThreadContext |
ThreadDumpMessage | 5 types | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/message/ThreadDumpMessage.java | org.apache.logging.log4j.message.ThreadDumpMessage |
LoggerStream | 7 types | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/spi/LoggerStream.java | org.apache.logging.log4j.spi.LoggerStream |
StatusLogger | 3 types | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/status/StatusLogger.java | org.apache.logging.log4j.status.StatusLogger |
Filter | 3 types | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/Filter.java | org.apache.logging.log4j.core.Filter |
LoggerContext | 3 types | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/LoggerContext.java | org.apache.logging.log4j.core.LoggerContext |
BurstFilter | 7 types | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/BurstFilter.java | org.apache.logging.log4j.core.filter.BurstFilter |
Log4jLogEvent | 3 types | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/Log4jLogEvent.java | org.apache.logging.log4j.core.impl.Log4jLogEvent |
ThrowableProxy | 3 types | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/ThrowableProxy.java | org.apache.logging.log4j.core.impl.ThrowableProxy |
HTMLLayout | 5 types | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/HTMLLayout.java | org.apache.logging.log4j.core.layout.HTMLLayout |
RFC5424Layout | 6 types | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/RFC5424Layout.java | org.apache.logging.log4j.core.layout.RFC5424Layout |
SerializedLayout | 3 types | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/SerializedLayout.java | org.apache.logging.log4j.core.layout.SerializedLayout |
StrMatcher | 11 types | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/StrMatcher.java | org.apache.logging.log4j.core.lookup.StrMatcher |
AbstractStyleNameConverter | 17 types | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/AbstractStyleNameConverter.java | org.apache.logging.log4j.core.pattern.AbstractStyleNameConverter |
DatePatternConverter | 8 types | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/DatePatternConverter.java | org.apache.logging.log4j.core.pattern.DatePatternConverter |
NameAbbreviator | 7 types | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/NameAbbreviator.java | org.apache.logging.log4j.core.pattern.NameAbbreviator |
ClassLoaderContextSelector | 2 types | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/selector/ClassLoaderContextSelector.java | org.apache.logging.log4j.core.selector.ClassLoaderContextSelector |
AsyncAppender | 5 types | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AsyncAppender.java | org.apache.logging.log4j.core.appender.AsyncAppender |
ConsoleAppender | 14 types | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/ConsoleAppender.java | org.apache.logging.log4j.core.appender.ConsoleAppender |
FileManager | 3 types | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/FileManager.java | org.apache.logging.log4j.core.appender.FileManager |
RandomAccessFileManager | 5 types | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RandomAccessFileManager.java | org.apache.logging.log4j.core.appender.RandomAccessFileManager |
AbstractDatabaseManager | 3 types | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/AbstractDatabaseManager.java | org.apache.logging.log4j.core.appender.db.AbstractDatabaseManager |
JDBCDatabaseManager | 4 types | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jdbc/JDBCDatabaseManager.java | org.apache.logging.log4j.core.appender.db.jdbc.JDBCDatabaseManager |
AbstractLogEventWrapperEntity | 16 types | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jpa/AbstractLogEventWrapperEntity.java | org.apache.logging.log4j.core.appender.db.jpa .AbstractLogEventWrapperEntity |
JPADatabaseManager | 3 types | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jpa/JPADatabaseManager.java | org.apache.logging.log4j.core.appender.db.jpa.JPADatabaseManager |
RollingFileManager | 7 types | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java | org.apache.logging.log4j.core.appender.rolling.RollingFileManager |
RollingRandomAccessFileManager | 5 types | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingRandomAccessFileManager.java | org.apache.logging.log4j.core.appender.rolling .RollingRandomAccessFileManager |
AsyncLoggerConfig | 2 types | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLoggerConfig.java | org.apache.logging.log4j.core.async.AsyncLoggerConfig |
AsyncLoggerConfigHelper | 3 types | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLoggerConfigHelper.java | org.apache.logging.log4j.core.async.AsyncLoggerConfigHelper |
ConfigurationFactory | 7 types | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationFactory.java | org.apache.logging.log4j.core.config.ConfigurationFactory |
JSONConfiguration | 2 types | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/JSONConfiguration.java | org.apache.logging.log4j.core.config.JSONConfiguration |
LoggerConfig | 2 types | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/LoggerConfig.java | org.apache.logging.log4j.core.config.LoggerConfig |
XMLConfiguration | 2 types | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/XMLConfiguration.java | org.apache.logging.log4j.core.config.XMLConfiguration |
PluginManager | 4 types | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/PluginManager.java | org.apache.logging.log4j.core.config.plugins.PluginManager |
ResolverUtil | 13 types | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/ResolverUtil.java | org.apache.logging.log4j.core.config.plugins.ResolverUtil |
DatagramSocketManager | 2 types | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/net/DatagramSocketManager.java | org.apache.logging.log4j.core.net.DatagramSocketManager |
JMSQueueManager | 3 types | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/net/JMSQueueManager.java | org.apache.logging.log4j.core.net.JMSQueueManager |
JMSTopicManager | 3 types | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/net/JMSTopicManager.java | org.apache.logging.log4j.core.net.JMSTopicManager |
SMTPManager | 2 types | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/net/SMTPManager.java | org.apache.logging.log4j.core.net.SMTPManager |
SocketServer | 6 types | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/net/SocketServer.java | org.apache.logging.log4j.core.net.SocketServer |
TCPSocketManager | 7 types | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/net/TCPSocketManager.java | org.apache.logging.log4j.core.net.TCPSocketManager |
TLSSocketManager | 2 types | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/net/TLSSocketManager.java | org.apache.logging.log4j.core.net.TLSSocketManager |
UDPSocketServer | 3 types | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/net/UDPSocketServer.java | org.apache.logging.log4j.core.net.UDPSocketServer |
Category | 4 types | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-1.2-api/src/main/java/org/apache/log4j/Category.java | org.apache.log4j.Category |
LogManager | 18 types | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-1.2-api/src/main/java/org/apache/log4j/LogManager.java | org.apache.log4j.LogManager |
Logger | 3 types | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-1.2-api/src/main/java/org/apache/log4j/Logger.java | org.apache.log4j.Logger |
Log4jLoggerFactory | 4 types | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-slf4j-impl/src/main/java/org/slf4j/helpers/Log4jLoggerFactory.java | org.slf4j.helpers.Log4jLoggerFactory |
LogFactoryImpl | 3 types | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-jcl/src/main/java/org/apache/logging/log4j/jcl/LogFactoryImpl.java | org.apache.logging.log4j.jcl.LogFactoryImpl |
FlumeAvroManager | 2 types | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumeAvroManager.java | org.apache.logging.log4j.flume.appender.FlumeAvroManager |
FlumeEmbeddedManager | 4 types | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumeEmbeddedManager.java | org.apache.logging.log4j.flume.appender.FlumeEmbeddedManager |
FlumePersistentManager | 12 types | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumePersistentManager.java | org.apache.logging.log4j.flume.appender.FlumePersistentManager |
LogEventFactory | 3 types | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-samples/flume-common/src/main/java/org/apache/logging/log4j/samples/app/LogEventFactory.java | org.apache.logging.log4j.samples.app.LogEventFactory |
LoggingApp | 4 types | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-samples/flume-common/src/main/java/org/apache/logging/log4j/samples/app/LoggingApp.java | org.apache.logging.log4j.samples.app.LoggingApp |
Statistics
Stat | types | FilePathString |
---|---|---|
Sum: | 0 | 0 |
Average: | 0 | 0 |
Minimum: | 0 | 0 |
Maximum: | 0 | 0 |
Standard deviation: | 0 | 0 |
Variance: | 0 | 0 |
![]() | Rule warning: package name should correspond to file location |
// For a good code organization,
// do mirror the packages hierarchy and the source files directories tree.
warnif count > 0
from n in Application.Packages
// Replace dots by spaces in package name
let dirCorresponding = n.Name.Replace('.', ' ')
// Look at source file decl of JustMyCode type's declared in n
from t in n.ChildTypes
where JustMyCode.Contains(t) && t.SourceFileDeclAvailable
from decl in t.SourceDecls
let sourceFilePath = decl.SourceFile.FilePath.ToString()
// Replace dots and path separators by spaces in source files names
where !sourceFilePath.Replace('.',' ').Replace('\\',' ').Contains(dirCorresponding)
select new { t, dirCorresponding , sourceFilePath }
747 types matched
types | dirCorresponding | sourceFilePath | Full Name |
---|---|---|---|
EventLogger | org apache logging log4j | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/EventLogger.java | org.apache.logging.log4j.EventLogger |
Level | org apache logging log4j | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/Level.java | org.apache.logging.log4j.Level |
LogManager | org apache logging log4j | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/LogManager.java | org.apache.logging.log4j.LogManager |
Logger | org apache logging log4j | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/Logger.java | org.apache.logging.log4j.Logger |
LoggingException | org apache logging log4j | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/LoggingException.java | org.apache.logging.log4j.LoggingException |
Marker | org apache logging log4j | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/Marker.java | org.apache.logging.log4j.Marker |
MarkerManager$Log4jMarker | org apache logging log4j | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/MarkerManager.java | org.apache.logging.log4j.MarkerManager$Log4jMarker |
MarkerManager$Log4jMarker | org apache logging log4j | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/MarkerManager.java | org.apache.logging.log4j.MarkerManager$Log4jMarker |
MarkerManager$Log4jMarker | org apache logging log4j | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/MarkerManager.java | org.apache.logging.log4j.MarkerManager$Log4jMarker |
MarkerManager$Log4jMarker | org apache logging log4j | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/MarkerManager.java | org.apache.logging.log4j.MarkerManager$Log4jMarker |
MarkerManager$Log4jMarker | org apache logging log4j | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/MarkerManager.java | org.apache.logging.log4j.MarkerManager$Log4jMarker |
MarkerManager$Log4jMarker | org apache logging log4j | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/MarkerManager.java | org.apache.logging.log4j.MarkerManager$Log4jMarker |
MarkerManager$Log4jMarker | org apache logging log4j | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/MarkerManager.java | org.apache.logging.log4j.MarkerManager$Log4jMarker |
MarkerManager$Log4jMarker | org apache logging log4j | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/MarkerManager.java | org.apache.logging.log4j.MarkerManager$Log4jMarker |
MarkerManager$Log4jMarker | org apache logging log4j | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/MarkerManager.java | org.apache.logging.log4j.MarkerManager$Log4jMarker |
MarkerManager | org apache logging log4j | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/MarkerManager.java | org.apache.logging.log4j.MarkerManager |
ThreadContext$ContextStack | org apache logging log4j | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/ThreadContext.java | org.apache.logging.log4j.ThreadContext$ContextStack |
ThreadContext$ContextStack | org apache logging log4j | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/ThreadContext.java | org.apache.logging.log4j.ThreadContext$ContextStack |
ThreadContext$ContextStack | org apache logging log4j | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/ThreadContext.java | org.apache.logging.log4j.ThreadContext$ContextStack |
ThreadContext$ContextStack | org apache logging log4j | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/ThreadContext.java | org.apache.logging.log4j.ThreadContext$ContextStack |
ThreadContext$ContextStack | org apache logging log4j | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/ThreadContext.java | org.apache.logging.log4j.ThreadContext$ContextStack |
ThreadContext$ContextStack | org apache logging log4j | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/ThreadContext.java | org.apache.logging.log4j.ThreadContext$ContextStack |
ThreadContext$ContextStack | org apache logging log4j | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/ThreadContext.java | org.apache.logging.log4j.ThreadContext$ContextStack |
ThreadContext$ContextStack | org apache logging log4j | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/ThreadContext.java | org.apache.logging.log4j.ThreadContext$ContextStack |
ThreadContext | org apache logging log4j | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/ThreadContext.java | org.apache.logging.log4j.ThreadContext |
AbstractMessageFactory | org apache logging log4j message | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/message/AbstractMessageFactory.java | org.apache.logging.log4j.message.AbstractMessageFactory |
BasicThreadInformation | org apache logging log4j message | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/message/BasicThreadInformation.java | org.apache.logging.log4j.message.BasicThreadInformation |
ExtendedThreadInformation | org apache logging log4j message | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/message/ExtendedThreadInformation.java | org.apache.logging.log4j.message.ExtendedThreadInformation |
FormattedMessage | org apache logging log4j message | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/message/FormattedMessage.java | org.apache.logging.log4j.message.FormattedMessage |
FormattedMessageFactory | org apache logging log4j message | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/message/FormattedMessageFactory.java | org.apache.logging.log4j.message.FormattedMessageFactory |
LocalizedMessage | org apache logging log4j message | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/message/LocalizedMessage.java | org.apache.logging.log4j.message.LocalizedMessage |
LocalizedMessageFactory | org apache logging log4j message | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/message/LocalizedMessageFactory.java | org.apache.logging.log4j.message.LocalizedMessageFactory |
LoggerNameAwareMessage | org apache logging log4j message | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/message/LoggerNameAwareMessage.java | org.apache.logging.log4j.message.LoggerNameAwareMessage |
MapMessage | org apache logging log4j message | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/message/MapMessage.java | org.apache.logging.log4j.message.MapMessage |
Message | org apache logging log4j message | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/message/Message.java | org.apache.logging.log4j.message.Message |
MessageFactory | org apache logging log4j message | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/message/MessageFactory.java | org.apache.logging.log4j.message.MessageFactory |
MessageFormatMessage | org apache logging log4j message | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/message/MessageFormatMessage.java | org.apache.logging.log4j.message.MessageFormatMessage |
MessageFormatMessageFactory | org apache logging log4j message | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/message/MessageFormatMessageFactory.java | org.apache.logging.log4j.message.MessageFormatMessageFactory |
MultiformatMessage | org apache logging log4j message | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/message/MultiformatMessage.java | org.apache.logging.log4j.message.MultiformatMessage |
ObjectMessage | org apache logging log4j message | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/message/ObjectMessage.java | org.apache.logging.log4j.message.ObjectMessage |
ParameterizedMessage | org apache logging log4j message | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/message/ParameterizedMessage.java | org.apache.logging.log4j.message.ParameterizedMessage |
ParameterizedMessageFactory | org apache logging log4j message | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/message/ParameterizedMessageFactory.java | org.apache.logging.log4j.message.ParameterizedMessageFactory |
SimpleMessage | org apache logging log4j message | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/message/SimpleMessage.java | org.apache.logging.log4j.message.SimpleMessage |
StringFormattedMessage | org apache logging log4j message | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/message/StringFormattedMessage.java | org.apache.logging.log4j.message.StringFormattedMessage |
StringFormatterMessageFactory | org apache logging log4j message | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/message/StringFormatterMessageFactory.java | org.apache.logging.log4j.message.StringFormatterMessageFactory |
StructuredDataId | org apache logging log4j message | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/message/StructuredDataId.java | org.apache.logging.log4j.message.StructuredDataId |
StructuredDataMessage | org apache logging log4j message | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/message/StructuredDataMessage.java | org.apache.logging.log4j.message.StructuredDataMessage |
ThreadDumpMessage$BasicThreadInfoFactory | org apache logging log4j message | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/message/ThreadDumpMessage.java | org.apache.logging.log4j.message .ThreadDumpMessage$BasicThreadInfoFactory |
ThreadDumpMessage$ExtendedThreadInfoFactory | org apache logging log4j message | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/message/ThreadDumpMessage.java | org.apache.logging.log4j.message .ThreadDumpMessage$ExtendedThreadInfoFactory |
ThreadDumpMessage$ThreadDumpMessageProxy | org apache logging log4j message | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/message/ThreadDumpMessage.java | org.apache.logging.log4j.message .ThreadDumpMessage$ThreadDumpMessageProxy |
ThreadDumpMessage$ThreadDumpMessageProxy | org apache logging log4j message | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/message/ThreadDumpMessage.java | org.apache.logging.log4j.message .ThreadDumpMessage$ThreadDumpMessageProxy |
ThreadDumpMessage$ThreadInfoFactory | org apache logging log4j message | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/message/ThreadDumpMessage.java | org.apache.logging.log4j.message.ThreadDumpMessage$ThreadInfoFactory |
ThreadDumpMessage | org apache logging log4j message | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/message/ThreadDumpMessage.java | org.apache.logging.log4j.message.ThreadDumpMessage |
ThreadInformation | org apache logging log4j message | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/message/ThreadInformation.java | org.apache.logging.log4j.message.ThreadInformation |
TimestampMessage | org apache logging log4j message | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/message/TimestampMessage.java | org.apache.logging.log4j.message.TimestampMessage |
SimpleLogger | org apache logging log4j simple | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/simple/SimpleLogger.java | org.apache.logging.log4j.simple.SimpleLogger |
SimpleLoggerContext | org apache logging log4j simple | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/simple/SimpleLoggerContext.java | org.apache.logging.log4j.simple.SimpleLoggerContext |
SimpleLoggerContextFactory | org apache logging log4j simple | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/simple/SimpleLoggerContextFactory.java | org.apache.logging.log4j.simple.SimpleLoggerContextFactory |
AbstractLogger | org apache logging log4j spi | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/spi/AbstractLogger.java | org.apache.logging.log4j.spi.AbstractLogger |
AbstractLoggerWrapper | org apache logging log4j spi | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/spi/AbstractLoggerWrapper.java | org.apache.logging.log4j.spi.AbstractLoggerWrapper |
DefaultThreadContextMap | org apache logging log4j spi | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/spi/DefaultThreadContextMap.java | org.apache.logging.log4j.spi.DefaultThreadContextMap |
DefaultThreadContextStack | org apache logging log4j spi | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/spi/DefaultThreadContextStack.java | org.apache.logging.log4j.spi.DefaultThreadContextStack |
LoggerContext | org apache logging log4j spi | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/spi/LoggerContext.java | org.apache.logging.log4j.spi.LoggerContext |
LoggerContextFactory | org apache logging log4j spi | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/spi/LoggerContextFactory.java | org.apache.logging.log4j.spi.LoggerContextFactory |
LoggerStream$HelperStream | org apache logging log4j spi | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/spi/LoggerStream.java | org.apache.logging.log4j.spi.LoggerStream$HelperStream |
LoggerStream$HelperStream | org apache logging log4j spi | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/spi/LoggerStream.java | org.apache.logging.log4j.spi.LoggerStream$HelperStream |
LoggerStream$HelperStream | org apache logging log4j spi | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/spi/LoggerStream.java | org.apache.logging.log4j.spi.LoggerStream$HelperStream |
LoggerStream$HelperStream | org apache logging log4j spi | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/spi/LoggerStream.java | org.apache.logging.log4j.spi.LoggerStream$HelperStream |
LoggerStream$HelperStream | org apache logging log4j spi | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/spi/LoggerStream.java | org.apache.logging.log4j.spi.LoggerStream$HelperStream |
LoggerStream$HelperStream | org apache logging log4j spi | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/spi/LoggerStream.java | org.apache.logging.log4j.spi.LoggerStream$HelperStream |
LoggerStream | org apache logging log4j spi | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/spi/LoggerStream.java | org.apache.logging.log4j.spi.LoggerStream |
MutableThreadContextStack | org apache logging log4j spi | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/spi/MutableThreadContextStack.java | org.apache.logging.log4j.spi.MutableThreadContextStack |
Provider | org apache logging log4j spi | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/spi/Provider.java | org.apache.logging.log4j.spi.Provider |
StandardLevel | org apache logging log4j spi | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/spi/StandardLevel.java | org.apache.logging.log4j.spi.StandardLevel |
ThreadContextMap | org apache logging log4j spi | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/spi/ThreadContextMap.java | org.apache.logging.log4j.spi.ThreadContextMap |
ThreadContextStack | org apache logging log4j spi | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/spi/ThreadContextStack.java | org.apache.logging.log4j.spi.ThreadContextStack |
StatusConsoleListener | org apache logging log4j status | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/status/StatusConsoleListener.java | org.apache.logging.log4j.status.StatusConsoleListener |
StatusData | org apache logging log4j status | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/status/StatusData.java | org.apache.logging.log4j.status.StatusData |
StatusListener | org apache logging log4j status | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/status/StatusListener.java | org.apache.logging.log4j.status.StatusListener |
StatusLogger$BoundedQueue<E> | org apache logging log4j status | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/status/StatusLogger.java | org.apache.logging.log4j.status.StatusLogger$BoundedQueue |
StatusLogger$BoundedQueue<E> | org apache logging log4j status | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/status/StatusLogger.java | org.apache.logging.log4j.status.StatusLogger$BoundedQueue |
StatusLogger | org apache logging log4j status | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/status/StatusLogger.java | org.apache.logging.log4j.status.StatusLogger |
EnglishEnums | org apache logging log4j util | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/util/EnglishEnums.java | org.apache.logging.log4j.util.EnglishEnums |
PropertiesUtil | org apache logging log4j util | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/util/PropertiesUtil.java | org.apache.logging.log4j.util.PropertiesUtil |
ProviderUtil | org apache logging log4j util | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-api/src/main/java/org/apache/logging/log4j/util/ProviderUtil.java | org.apache.logging.log4j.util.ProviderUtil |
AbstractServer | org apache logging log4j core | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/AbstractServer.java | org.apache.logging.log4j.core.AbstractServer |
Appender | org apache logging log4j core | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/Appender.java | org.apache.logging.log4j.core.Appender |
ErrorHandler | org apache logging log4j core | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/ErrorHandler.java | org.apache.logging.log4j.core.ErrorHandler |
Filter$Result | org apache logging log4j core | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/Filter.java | org.apache.logging.log4j.core.Filter$Result |
Filter$Result | org apache logging log4j core | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/Filter.java | org.apache.logging.log4j.core.Filter$Result |
Filter | org apache logging log4j core | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/Filter.java | org.apache.logging.log4j.core.Filter |
Layout<T> | org apache logging log4j core | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/Layout.java | org.apache.logging.log4j.core.Layout |
LifeCycle | org apache logging log4j core | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/LifeCycle.java | org.apache.logging.log4j.core.LifeCycle |
LogEvent | org apache logging log4j core | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/LogEvent.java | org.apache.logging.log4j.core.LogEvent |
Logger$PrivateConfig | org apache logging log4j core | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/Logger.java | org.apache.logging.log4j.core.Logger$PrivateConfig |
Logger$PrivateConfig | org apache logging log4j core | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/Logger.java | org.apache.logging.log4j.core.Logger$PrivateConfig |
Logger$PrivateConfig | org apache logging log4j core | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/Logger.java | org.apache.logging.log4j.core.Logger$PrivateConfig |
Logger$PrivateConfig | org apache logging log4j core | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/Logger.java | org.apache.logging.log4j.core.Logger$PrivateConfig |
Logger$PrivateConfig | org apache logging log4j core | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/Logger.java | org.apache.logging.log4j.core.Logger$PrivateConfig |
Logger$PrivateConfig | org apache logging log4j core | /Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/Logger.java | org.apache.logging.log4j.core.Logger$PrivateConfig |
Statistics
Stat | dirCorresponding | sourceFilePath |
---|---|---|
Sum: | 0 | 0 |
Average: | 0 | 0 |
Minimum: | 0 | 0 |
Maximum: | 0 | 0 |
Standard deviation: | 0 | 0 |
Variance: | 0 | 0 |
Object Oriented Design
warnif count > 0
from baseClass in JustMyCode.Types
where baseClass.IsClass && baseClass.NbChildren > 0 // <-- for optimization!
let derivedClassesUsed = baseClass.DerivedTypes.UsedBy(baseClass)
where derivedClassesUsed.Count() > 0
select new { baseClass, derivedClassesUsed }
6 types matched
types | derivedClassesUsed | Full Name |
---|---|---|
AbstractLogger | 1 type | org.apache.logging.log4j.spi.AbstractLogger |
StrMatcher | 5 types | org.apache.logging.log4j.core.lookup.StrMatcher |
NameAbbreviator | 3 types | org.apache.logging.log4j.core.pattern.NameAbbreviator |
ConfigurationFactory | 1 type | org.apache.logging.log4j.core.config.ConfigurationFactory |
Category | 1 type | org.apache.log4j.Category |
Priority | 1 type | org.apache.log4j.Priority |
Statistics
Stat | derivedClassesUsed |
---|---|
Sum: | 0 |
Average: | 0 |
Minimum: | 0 |
Maximum: | 0 |
Standard deviation: | 0 |
Variance: | 0 |
warnif count > 0 from t in JustMyCode.Types
where t.IsClass
let baseClasses = t.BaseClasses.ExceptThirdParty()
// Warn for classes with 3 or more base classes.
// Notice that we don't count third-party classes
// because this rule concerns your code design,
// not third-party libraries consumed design.
where baseClasses.Count() >= 3
select new { t, baseClasses,
// The metric value DepthOfInheritance takes account
// of third-party base classes
t.DepthOfInheritance }
// Branches too long in the derivation should be avoided.
// See the definition of the DepthOfInheritance metric here
// http://www.jarchitect.com/Metrics#DIT
40 types matched
types | baseClasses | Depth of inheritance | Full Name |
---|---|---|---|
AbstractStyleNameConverter$Black | 3 types | 4 | org.apache.logging.log4j.core.pattern.AbstractStyleNameConverter$Black |
AbstractStyleNameConverter$Blue | 3 types | 4 | org.apache.logging.log4j.core.pattern.AbstractStyleNameConverter$Blue |
AbstractStyleNameConverter$Cyan | 3 types | 4 | org.apache.logging.log4j.core.pattern.AbstractStyleNameConverter$Cyan |
AbstractStyleNameConverter$Green | 3 types | 4 | org.apache.logging.log4j.core.pattern.AbstractStyleNameConverter$Green |
AbstractStyleNameConverter$Magenta | 3 types | 4 | org.apache.logging.log4j.core.pattern .AbstractStyleNameConverter$Magenta |
AbstractStyleNameConverter$Red | 3 types | 4 | org.apache.logging.log4j.core.pattern.AbstractStyleNameConverter$Red |
AbstractStyleNameConverter$White | 3 types | 4 | org.apache.logging.log4j.core.pattern.AbstractStyleNameConverter$White |
AbstractStyleNameConverter$Yellow | 3 types | 4 | org.apache.logging.log4j.core.pattern .AbstractStyleNameConverter$Yellow |
ClassNamePatternConverter | 3 types | 4 | org.apache.logging.log4j.core.pattern.ClassNamePatternConverter |
ExtendedThrowablePatternConverter | 3 types | 4 | org.apache.logging.log4j.core.pattern .ExtendedThrowablePatternConverter |
LoggerPatternConverter | 3 types | 4 | org.apache.logging.log4j.core.pattern.LoggerPatternConverter |
RootThrowablePatternConverter | 3 types | 4 | org.apache.logging.log4j.core.pattern.RootThrowablePatternConverter |
ConsoleAppender | 3 types | 4 | org.apache.logging.log4j.core.appender.ConsoleAppender |
FileAppender | 3 types | 4 | org.apache.logging.log4j.core.appender.FileAppender |
RandomAccessFileAppender | 3 types | 4 | org.apache.logging.log4j.core.appender.RandomAccessFileAppender |
RollingFileAppender | 3 types | 4 | org.apache.logging.log4j.core.appender.RollingFileAppender |
RollingRandomAccessFileAppender | 3 types | 4 | org.apache.logging.log4j.core.appender.RollingRandomAccessFileAppender |
SocketAppender | 3 types | 4 | org.apache.logging.log4j.core.appender.SocketAppender |
SyslogAppender | 4 types | 5 | org.apache.logging.log4j.core.appender.SyslogAppender |
TLSSyslogAppender | 5 types | 6 | org.apache.logging.log4j.core.appender.TLSSyslogAppender |
AbstractDatabaseAppenderTest$LocalAbstractDatabaseAppender | 3 types | 4 | org.apache.logging.log4j.core.appender.db .AbstractDatabaseAppenderTest$LocalAbstractDatabaseAppender |
JDBCAppender | 3 types | 4 | org.apache.logging.log4j.core.appender.db.jdbc.JDBCAppender |
JPAAppender | 3 types | 4 | org.apache.logging.log4j.core.appender.db.jpa.JPAAppender |
NoSQLAppender | 3 types | 4 | org.apache.logging.log4j.core.appender.db.nosql.NoSQLAppender |
RollingFileManager | 3 types | 4 | org.apache.logging.log4j.core.appender.rolling.RollingFileManager |
RollingRandomAccessFileManager | 4 types | 5 | org.apache.logging.log4j.core.appender.rolling .RollingRandomAccessFileManager |
OnStartupTriggeringPolicyTest$MyRollingManager | 4 types | 5 | org.apache.logging.log4j.core.appender.rolling .OnStartupTriggeringPolicyTest$MyRollingManager |
DatagramSocketManager | 3 types | 4 | org.apache.logging.log4j.core.net.DatagramSocketManager |
TCPSocketManager | 3 types | 4 | org.apache.logging.log4j.core.net.TCPSocketManager |
TLSSocketManager | 4 types | 5 | org.apache.logging.log4j.core.net.TLSSocketManager |
InMemoryAppender | 3 types | 4 | org.apache.logging.log4j.test.appender.InMemoryAppender |
FlumePersistentManager | 3 types | 4 | org.apache.logging.log4j.flume.appender.FlumePersistentManager |
DebugTag | 3 types | 6 | org.apache.logging.log4j.taglib.DebugTag |
ErrorTag | 3 types | 6 | org.apache.logging.log4j.taglib.ErrorTag |
FatalTag | 3 types | 6 | org.apache.logging.log4j.taglib.FatalTag |
InfoTag | 3 types | 6 | org.apache.logging.log4j.taglib.InfoTag |
LogTag | 3 types | 6 | org.apache.logging.log4j.taglib.LogTag |
TraceTag | 3 types | 6 | org.apache.logging.log4j.taglib.TraceTag |
WarnTag | 3 types | 6 | org.apache.logging.log4j.taglib.WarnTag |
LoggingMessageTagSupportTest$1 | 3 types | 6 | org.apache.logging.log4j.taglib.LoggingMessageTagSupportTest$1 |
Statistics
Stat | baseClasses | Depth of inheritance |
---|---|---|
Sum: | 0 | 182 |
Average: | 0 | 4.55 |
Minimum: | 0 | 4 |
Maximum: | 0 | 6 |
Standard deviation: | 0 | 0.84 |
Variance: | 0 | 0.7 |
warnif count > 0 from t in JustMyCode.Types where
t.IsClass &&
t.NbChildren ==0 &&
!t.IsFinal &&
!t.IsStatic
// && !t.IsPublic <-- You might want to add this condition
// if you are developping a framework
// with classes that are intended to be
// sub-classed by your clients.
orderby t.NbLinesOfCode descending
select new { t, t.NbLinesOfCode }
710 types matched
types | # lines of code (LOC) | Full Name |
---|---|---|
AbstractLoggerTest | 514 | org.apache.logging.log4j.AbstractLoggerTest |
NoSQLDatabaseManagerTest | 351 | org.apache.logging.log4j.core.appender.db.nosql .NoSQLDatabaseManagerTest |
RFC5424Layout | 280 | org.apache.logging.log4j.core.layout.RFC5424Layout |
Log4jWebInitializerImplTest | 266 | org.apache.logging.log4j.core.web.Log4jWebInitializerImplTest |
RFC5424LayoutTest | 241 | org.apache.logging.log4j.core.layout.RFC5424LayoutTest |
ParameterizedMessage | 224 | org.apache.logging.log4j.message.ParameterizedMessage |
DefaultThreadContextStackTest | 222 | org.apache.logging.log4j.spi.DefaultThreadContextStackTest |
MutableThreadContextStackTest | 222 | org.apache.logging.log4j.spi.MutableThreadContextStackTest |
LoggerTest | 221 | org.apache.log4j.LoggerTest |
TestConfigurator | 219 | org.apache.logging.log4j.core.config.TestConfigurator |
StrSubstitutor | 218 | org.apache.logging.log4j.core.lookup.StrSubstitutor |
ThrowableProxy | 211 | org.apache.logging.log4j.core.impl.ThrowableProxy |
FlumePersistentManager$WriterThread | 210 | org.apache.logging.log4j.flume.appender .FlumePersistentManager$WriterThread |
LoggerTest | 208 | org.apache.logging.log4j.LoggerTest |
FlumeAppenderTest | 199 | org.apache.logging.log4j.flume.appender.FlumeAppenderTest |
XMLConfiguration | 193 | org.apache.logging.log4j.core.config.XMLConfiguration |
FlumePersistentAppenderTest | 191 | org.apache.logging.log4j.flume.appender.FlumePersistentAppenderTest |
SLF4JLogger | 176 | org.slf4j.impl.SLF4JLogger |
JSONConfiguration | 173 | org.apache.logging.log4j.core.config.JSONConfiguration |
XMLLayout | 171 | org.apache.logging.log4j.core.layout.XMLLayout |
JSONLayout | 164 | org.apache.logging.log4j.core.layout.JSONLayout |
DebugDisabledPerformanceComparison | 151 | org.apache.logging.log4j.DebugDisabledPerformanceComparison |
AbstractDatabaseManagerTest | 146 | org.apache.logging.log4j.core.appender.db.AbstractDatabaseManagerTest |
DefaultRolloverStrategy | 145 | org.apache.logging.log4j.core.appender.rolling.DefaultRolloverStrategy |
LoggingMessageTagSupportTest | 139 | org.apache.logging.log4j.taglib.LoggingMessageTagSupportTest |
FlumeEmbeddedAppenderTest | 138 | org.apache.logging.log4j.flume.appender.FlumeEmbeddedAppenderTest |
LoggerTest | 132 | org.apache.logging.log4j.core.LoggerTest |
ResolverUtil | 131 | org.apache.logging.log4j.core.config.plugins.ResolverUtil |
PluginManager | 130 | org.apache.logging.log4j.core.config.plugins.PluginManager |
MulticastDNSAdvertiser | 121 | org.apache.logging.log4j.core.net.MulticastDNSAdvertiser |
FlumeEmbeddedAgentTest | 121 | org.apache.logging.log4j.flume.appender.FlumeEmbeddedAgentTest |
PatternProcessor | 119 | org.apache.logging.log4j.core.appender.rolling.PatternProcessor |
FileAppenderTest | 117 | org.apache.logging.log4j.core.appender.FileAppenderTest |
ThrowableAttributeConverter | 115 | org.apache.logging.log4j.core.appender.db.jpa.converter .ThrowableAttributeConverter |
ClassLoaderContextSelector | 113 | org.apache.logging.log4j.core.selector.ClassLoaderContextSelector |
SSLConfiguration | 113 | org.apache.logging.log4j.core.net.ssl.SSLConfiguration |
DefaultThreadContextStack | 110 | org.apache.logging.log4j.spi.DefaultThreadContextStack |
PatternProcessorTest | 109 | org.apache.logging.log4j.core.appender.rolling.PatternProcessorTest |
ThreadContextInheritanceTest | 108 | org.apache.logging.log4j.ThreadContextInheritanceTest |
SetLoggerTagTest | 104 | org.apache.logging.log4j.taglib.SetLoggerTagTest |
SmtpRequest | 102 | org.apache.logging.dumbster.smtp.SmtpRequest |
FlumePersistentManager | 102 | org.apache.logging.log4j.flume.appender.FlumePersistentManager |
SMTPManager | 101 | org.apache.logging.log4j.core.net.SMTPManager |
ThreadContextTest | 100 | org.apache.logging.log4j.ThreadContextTest |
ExtendedThreadInformation | 99 | org.apache.logging.log4j.message.ExtendedThreadInformation |
SimpleSmtpServer | 99 | org.apache.logging.dumbster.smtp.SimpleSmtpServer |
PerformanceComparison | 98 | org.apache.logging.log4j.PerformanceComparison |
ClientGUI | 98 | org.apache.logging.log4j.jmx.gui.ClientGUI |
DefaultThreadContextMapTest | 97 | org.apache.logging.log4j.spi.DefaultThreadContextMapTest |
Log4jLogEvent | 97 | org.apache.logging.log4j.core.impl.Log4jLogEvent |
Timer | 96 | org.apache.logging.log4j.Timer |
Timer | 96 | org.apache.logging.log4j.core.Timer |
DriverManagerConnectionSourceTest | 95 | org.apache.logging.log4j.core.appender.db.jdbc .DriverManagerConnectionSourceTest |
Log4jServletContainerInitializerTest | 94 | org.apache.logging.log4j.core.web.Log4jServletContainerInitializerTest |
LocalizedMessage | 93 | org.apache.logging.log4j.message.LocalizedMessage |
ColumnConfigTest | 92 | org.apache.logging.log4j.core.appender.db.jdbc.ColumnConfigTest |
PatternLayoutTest | 91 | org.apache.logging.log4j.core.layout.PatternLayoutTest |
SMTPAppenderTest | 91 | org.apache.logging.log4j.core.appender.SMTPAppenderTest |
LevelPatternConverterTest | 89 | org.apache.logging.log4j.core.pattern.LevelPatternConverterTest |
LoggerTest | 88 | org.apache.logging.slf4j.LoggerTest |
AsyncLogger | 87 | org.apache.logging.log4j.core.async.AsyncLogger |
SocketAppenderTest | 86 | org.apache.logging.log4j.core.appender.SocketAppenderTest |
FlumeEvent | 86 | org.apache.logging.log4j.flume.appender.FlumeEvent |
LoggerStreamTest | 85 | org.apache.logging.log4j.spi.LoggerStreamTest |
FlumePersistentPerf | 85 | org.apache.logging.log4j.flume.appender.FlumePersistentPerf |
PerfTestDriver | 84 | org.apache.logging.log4j.core.async.perftest.PerfTestDriver |
PerfTestResultFormatter | 84 | org.apache.logging.log4j.core.async.perftest.PerfTestResultFormatter |
ThrowablePatternConverterTest | 81 | org.apache.logging.log4j.core.pattern.ThrowablePatternConverterTest |
AsyncLoggerConfigHelper | 81 | org.apache.logging.log4j.core.async.AsyncLoggerConfigHelper |
CategoryTest | 80 | org.apache.log4j.CategoryTest |
LoggerContextAdmin | 77 | org.apache.logging.log4j.core.jmx.LoggerContextAdmin |
ListAppender | 77 | org.apache.logging.log4j.test.appender.ListAppender |
StrictXMLConfigTest | 76 | org.apache.logging.log4j.core.StrictXMLConfigTest |
Log4jServletFilterTest | 75 | org.apache.logging.log4j.core.web.Log4jServletFilterTest |
LevelTest | 75 | org.apache.log4j.LevelTest |
SimplePerfTest | 73 | org.apache.logging.log4j.core.SimplePerfTest |
MapRewritePolicyTest | 73 | org.apache.logging.log4j.core.appender.rewrite.MapRewritePolicyTest |
LoggerTest | 73 | org.apache.logging.slf4j.LoggerTest |
FilterPerformanceComparison | 72 | org.apache.logging.log4j.FilterPerformanceComparison |
RollingRandomAccessFileManagerTest | 72 | org.apache.logging.log4j.core.appender.rolling .RollingRandomAccessFileManagerTest |
XMLConfigurationTest | 71 | org.apache.logging.log4j.core.config.XMLConfigurationTest |
SLF4JLogger | 71 | org.apache.logging.slf4j.SLF4JLogger |
FlumeEmbeddedManager$FlumeManagerFactory | 71 | org.apache.logging.log4j.flume.appender .FlumeEmbeddedManager$FlumeManagerFactory |
BurstFilterTest | 70 | org.apache.logging.log4j.core.filter.BurstFilterTest |
FileRenameActionTest | 69 | org.apache.logging.log4j.core.appender.rolling.helper .FileRenameActionTest |
ConfigurationFactory$Factory | 68 | org.apache.logging.log4j.core.config.ConfigurationFactory$Factory |
LoggerAwareTagSupportTest | 67 | org.apache.logging.log4j.taglib.LoggerAwareTagSupportTest |
MessageFormatsPerfTest | 66 | org.apache.logging.log4j.message.MessageFormatsPerfTest |
ResolverUtilTest | 66 | org.apache.logging.log4j.core.config.plugins.ResolverUtilTest |
FormattedMessage | 65 | org.apache.logging.log4j.message.FormattedMessage |
AbstractDatabaseAppenderTest | 64 | org.apache.logging.log4j.core.appender.db.AbstractDatabaseAppenderTest |
SimpleLogger | 62 | org.apache.logging.log4j.simple.SimpleLogger |
PerformanceRun | 62 | org.apache.logging.log4j.PerformanceRun |
RingBufferLogEventTest | 62 | org.apache.logging.log4j.core.async.RingBufferLogEventTest |
PatternParserTest | 60 | org.apache.logging.log4j.core.pattern.PatternParserTest |
SocketReconnectTest | 60 | org.apache.logging.log4j.core.net.SocketReconnectTest |
Logger$PrivateConfig | 59 | org.apache.logging.log4j.core.Logger$PrivateConfig |
ThreadContextMapFilter | 59 | org.apache.logging.log4j.core.filter.ThreadContextMapFilter |
WebLookupTest | 59 | org.apache.logging.log4j.core.web.WebLookupTest |
AdvertiserTest | 58 | org.apache.logging.log4j.core.config.AdvertiserTest |
Statistics
Stat | # lines of code (LOC) |
---|---|
Sum: | 22 035 |
Average: | 31.04 |
Minimum: | 0 |
Maximum: | 514 |
Standard deviation: | 46.84 |
Variance: | 2 193 |
warnif count > 0
from t in Application.Types
where !t.IsStatic && !t.IsAbstract && t.IsClass
// All ctors of a singleton are private
where t.Constructors.Where(ctor => !ctor.IsPrivate).Count() == 0
// A singleton contains one static field of its parent type, to reference the unique instance
let staticFieldInstances = t.StaticFields.WithFieldType(t)
where staticFieldInstances.Count() == 1
select new { t, staticFieldInstance = staticFieldInstances.First() }
// The Singleton pattern consists in syntactically enforcing that a class
// has just one unique instance.
// At first glance, this pattern looks appealing and it is widely used.
// However, we discourage you from using singleton classes because experience
// shows that singletons often result in less testable and less maintainable code.
// More details available in these discussions:
// http://codebetter.com/patricksmacchia/2011/05/04/back-to-basics-usage-of-static-members/
// http://adamschepis.com/blog/2011/05/02/im-adam-and-im-a-recovering-singleton-addict/
17 types matched
types | staticFieldInstance | Full Name |
---|---|---|
StatusLogger | STATUS_LOGGER | org.apache.logging.log4j.status.StatusLogger |
CachedClock | instance | org.apache.logging.log4j.core.helpers.CachedClock |
CoarseCachedClock | instance | org.apache.logging.log4j.core.helpers.CoarseCachedClock |
FileLocationPatternConverter | INSTANCE | org.apache.logging.log4j.core.pattern.FileLocationPatternConverter |
FullLocationPatternConverter | INSTANCE | org.apache.logging.log4j.core.pattern.FullLocationPatternConverter |
IntegerPatternConverter | INSTANCE | org.apache.logging.log4j.core.pattern.IntegerPatternConverter |
LevelPatternConverter | INSTANCE | org.apache.logging.log4j.core.pattern.LevelPatternConverter |
LineLocationPatternConverter | INSTANCE | org.apache.logging.log4j.core.pattern.LineLocationPatternConverter |
LineSeparatorPatternConverter | INSTANCE | org.apache.logging.log4j.core.pattern.LineSeparatorPatternConverter |
LoggerPatternConverter | INSTANCE | org.apache.logging.log4j.core.pattern.LoggerPatternConverter |
MethodLocationPatternConverter | INSTANCE | org.apache.logging.log4j.core.pattern.MethodLocationPatternConverter |
NDCPatternConverter | INSTANCE | org.apache.logging.log4j.core.pattern.NDCPatternConverter |
SequenceNumberPatternConverter | INSTANCE | org.apache.logging.log4j.core.pattern.SequenceNumberPatternConverter |
ThreadPatternConverter | INSTANCE | org.apache.logging.log4j.core.pattern.ThreadPatternConverter |
NullEnumeration | INSTANCE | org.apache.log4j.helpers.NullEnumeration |
StaticLoggerBinder | SINGLETON | org.slf4j.impl.StaticLoggerBinder |
StaticMDCBinder | SINGLETON | org.slf4j.impl.StaticMDCBinder |
Statistics
Stat | staticFieldInstance |
---|---|
Sum: | 0 |
Average: | 0 |
Minimum: | 0 |
Maximum: | 0 |
Standard deviation: | 0 |
Variance: | 0 |
// Assigning static fields from instance methods leads to
// poorly maintainable and non thread-safe code.
// It is advised to assign static fields inline or from class constructor.
warnif count > 0
from f in Application.Fields where
f.IsStatic &&
!f.IsLiteral &&
!f.IsInitOnly &&
!f.IsGeneratedByCompiler &&
// Contract API define such a insideContractEvaluation static field
f.Name != "insideContractEvaluation"
let assignedBy = f.MethodsAssigningMe.Where(m => !m.IsStatic)
where assignedBy .Count() > 0
select new { f, assignedBy }
40 fields matched
fields | assignedBy | Full Name |
---|---|---|
currentLevel | 12 methods | org.apache.logging.log4j.AbstractLoggerTest.currentLevel |
stringTime | 1 method | org.apache.logging.log4j.message.MessageFormatsPerfTest.stringTime |
paramTime | 1 method | org.apache.logging.log4j.message.MessageFormatsPerfTest.paramTime |
msgFormatTime | 1 method | org.apache.logging.log4j.message.MessageFormatsPerfTest.msgFormatTime |
formattedTime | 1 method | org.apache.logging.log4j.message.MessageFormatsPerfTest.formattedTime |
list1 | 1 method | org.apache.logging.log4j.core.ExtendedLevelTest.list1 |
list2 | 1 method | org.apache.logging.log4j.core.ExtendedLevelTest.list2 |
config | 1 method | org.apache.logging.log4j.core.FileConfigTest.config |
app | 1 method | org.apache.logging.log4j.core.FileConfigTest.app |
config | 1 method | org.apache.logging.log4j.core.HostNameTest.config |
app | 1 method | org.apache.logging.log4j.core.HostNameTest.app |
host | 1 method | org.apache.logging.log4j.core.HostNameTest.host |
hostFile | 1 method | org.apache.logging.log4j.core.HostNameTest.hostFile |
ctx | 1 method | org.apache.logging.log4j.core.LateConfigTest.ctx |
config | 1 method | org.apache.logging.log4j.core.LoggerDateTest.config |
fileApp | 1 method | org.apache.logging.log4j.core.LoggerDateTest.fileApp |
config | 1 method | org.apache.logging.log4j.core.LoggerTest.config |
app | 1 method | org.apache.logging.log4j.core.LoggerTest.app |
host | 1 method | org.apache.logging.log4j.core.LoggerTest.host |
noThrown | 1 method | org.apache.logging.log4j.core.LoggerTest.noThrown |
config | 1 method | org.apache.logging.log4j.core.LoggerUpdateTest.config |
app | 1 method | org.apache.logging.log4j.core.LoggerUpdateTest.app |
host | 1 method | org.apache.logging.log4j.core.LoggerUpdateTest.host |
noThrown | 1 method | org.apache.logging.log4j.core.LoggerUpdateTest.noThrown |
config | 1 method | org.apache.logging.log4j.core.ShutdownDisabledTest.config |
tcpCount | 1 method | org.apache.logging.log4j.core.appender.SocketAppenderTest.tcpCount |
udpCount | 1 method | org.apache.logging.log4j.core.appender.SocketAppenderTest.udpCount |
verbose | 1 method | org.apache.logging.log4j.core.async.perftest.PerfTest.verbose |
throughput | 5 methods | org.apache.logging.log4j.core.async.perftest.PerfTest.throughput |
pluginTypeMap | 1 method | org.apache.logging.log4j.core.config.plugins.PluginManager .pluginTypeMap |
receiver | 1 method | org.apache.logging.log4j.core.net.JMSQueueFailoverTest.receiver |
config | 1 method | org.apache.logging.log4j.core.net.JMSQueueFailoverTest.config |
app | 1 method | org.apache.logging.log4j.core.net.JMSQueueFailoverTest.app |
config | 1 method | org.apache.logging.log4j.core.net.JMSTopicFailoverTest.config |
app | 1 method | org.apache.logging.log4j.core.net.JMSTopicFailoverTest.app |
config | 1 method | org.apache.log4j.LoggingTest.config |
ctx | 1 method | org.apache.logging.log4j.flume.appender.FlumeEmbeddedAgentTest.ctx |
ctx | 1 method | org.apache.logging.log4j.flume.appender.FlumeEmbeddedAppenderTest.ctx |
ctx | 1 method | org.apache.logging.log4j.flume.appender.FlumePersistentAppenderTest .ctx |
ctx | 1 method | org.apache.logging.log4j.flume.appender.FlumePersistentPerf.ctx |
Statistics
Stat | assignedBy |
---|---|
Sum: | 0 |
Average: | 0 |
Minimum: | 0 |
Maximum: | 0 |
Standard deviation: | 0 |
Variance: | 0 |
warnif count > 0 from t in JustMyCode.Types where
t.IsInterface &&
t.NbMethods == 0
select new { t, t.TypesThatImplementMe }
// Interfaces define members that provide a behavior
// or usage contract. The functionality described by
// the interface can be adopted by any type,
// regardless of where the type appears in the
// inheritance hierarchy. A type implements an
// interface by providing implementations for the
// interface's members. An empty interface does not
// define any members, and as such, does not define
// a contract that can be implemented.
// If your design includes empty interfaces that
// types are expected to implement, you are probably
// using an interface as a marker, or a way of
// identifying a group of types. If this identification
// will occur at runtime, the correct way to accomplish
// this is to use a custom attribute. Use the presence
// or absence of the attribute, or the attribute's
// properties, to identify the target types. If the
// identification must occurs at compile time, then using
// an empty interface is acceptable.
1 types matched
type | TypesThatImplementMe | Full Name |
---|---|---|
AnsiConverter | 2 types | org.apache.logging.log4j.core.pattern.AnsiConverter |
Statistics
Stat | TypesThatImplementMe |
---|---|
Sum: | 0 |
Average: | 0 |
Minimum: | 0 |
Maximum: | 0 |
Standard deviation: | 0 |
Variance: | 0 |
API Breaking Changes
|
// This rule warns if a publicly visible type is
// not publicly visible anymore or if it has been removed.
// Such type can break the code of your clients.
warnif count > 0 from t in codeBase.OlderVersion().Application.Types
where t.IsPubliclyVisible &&
// The type has been removed and its parent project hasn't been removed ...
( (t.WasRemoved() && !t.ParentProject.WasRemoved()) ||
// ... or the type is not publicly visible anymore
!t.WasRemoved() && !t.NewerVersion().IsPubliclyVisible)
select new { t,
NewVisibility = (t.WasRemoved() ? " " : t.NewerVersion().Visibility.ToString()) }
No types matched
// This rule warns if a publicly visible method is
// not publicly visible anymore or if it has been removed.
// Such method can break the code of your clients.
warnif count > 0 from m in codeBase.OlderVersion().Application.Methods
where m.IsPubliclyVisible &&
// The method has been removed and its parent type hasn't been removed ...
( (m.WasRemoved() && !m.ParentType.WasRemoved()) ||
// ... or the method is not publicly visible anymore
!m.WasRemoved() && !m.NewerVersion().IsPubliclyVisible)
select new { m,
NewVisibility = (m.WasRemoved() ? " " : m.NewerVersion().Visibility.ToString()) }
No methods matched
// This rule warns if a publicly visible field is
// not publicly visible anymore or if it has been removed.
// Such field can break the code of your clients.
warnif count > 0 from f in codeBase.OlderVersion().Application.Fields
where f.IsPubliclyVisible &&
// The field has been removed and its parent type hasn't been removed ...
( (f.WasRemoved() && !f.ParentType.WasRemoved()) ||
// ... or the field is not publicly visible anymore
!f.WasRemoved() && !f.NewerVersion().IsPubliclyVisible)
select new { f,
NewVisibility = (f.WasRemoved() ? " " : f.NewerVersion().Visibility.ToString()) }
No fields matched
// This rule warns if a publicly visible interface or abstract class
// has been changed and contains new abstract methods or
// if some abstract methods have been removed.
// This can break the code of clients
// that implement such interface or derive from such abstract class.
warnif count > 0 from tNewer in Application.Types where
(tNewer.IsInterface || tNewer.IsClass && tNewer.IsAbstract) &&
tNewer.IsPubliclyVisible &&
tNewer.IsPresentInBothBuilds()
let tOlder = tNewer.OlderVersion() where tOlder.IsPubliclyVisible
let methodsRemoved = tOlder.Methods.Where(m => m.IsAbstract && m.WasRemoved())
let methodsAdded = tNewer.Methods.Where(m2 => m2.IsAbstract && m2.WasAdded())
where methodsAdded.Count() > 0 || methodsRemoved.Count() > 0
select new { tNewer, methodsAdded, methodsRemoved }
No types matched
// Immutability is a strong property on a type.
// Breaking immutability can result in serious problem for an algorithm consummer
// that has been written taking account of the type immutability.
// To visualize changes in code, right-click a matched type and select:
// - Compare older and newer versions of source file
// - Compare older and newer versions disassembled with Reflector
warnif count > 0
from t in Application.Types where
t.IsPresentInBothBuilds() &&
!t.IsStatic &&
!t.IsImmutable &&
t.OlderVersion().IsImmutable
let mutableFields = from f in t.InstanceFields where !f.IsImmutable select f
select new { t, mutableFields }
No types matched
// List types that are new in the public surface of your projects
from t in Application.Types
where t.IsPubliclyVisible &&
// The type has been removed and its parent project hasn't been removed ...
( (t.WasAdded() && !t.ParentProject.WasAdded()) ||
// ... or the type existed but was not publicly visible
!t.WasAdded() && !t.OlderVersion().IsPubliclyVisible)
select new { t,
OldVisibility = (t.WasAdded() ? " " : t.OlderVersion().Visibility.ToString()) }
No types matched
// List methods that are new in the public surface of your projects
from m in Application.Methods
where m.IsPubliclyVisible &&
// The method has been removed and its parent project hasn'm been removed ...
( (m.WasAdded() && !m.ParentType.WasAdded()) ||
// ... or the t existed but was not publicly visible
!m.WasAdded() && !m.OlderVersion().IsPubliclyVisible)
select new { m,
OldVisibility = (m.WasAdded() ? " " : m.OlderVersion().Visibility.ToString()) }
No methods matched
// List fields that are new in the public surface of your projects
from f in Application.Fields
where f.IsPubliclyVisible &&
// The method has been removed and its parent project hasn'f been removed ...
( (f.WasAdded() && !f.ParentType.WasAdded()) ||
// ... or the t existed but was not publicly visible
!f.WasAdded() && !f.OlderVersion().IsPubliclyVisible)
select new { f,
OldVisibility = (f.WasAdded() ? " " : f.OlderVersion().Visibility.ToString()) }
No fields matched
Code Diff Summary
|
from a in Application.Projects where a.WasAdded()
select new { a, a.NbLinesOfCode }
No projects matched
from a in codeBase.OlderVersion().Application.Projects where a.WasRemoved()
select new { a, a.NbLinesOfCode }
No projects matched
from a in Application.Projects where a.CodeWasChanged()
select new { a, a.NbLinesOfCode,
oldNbLinesOfCode = a.OlderVersion().NbLinesOfCode.GetValueOrDefault() ,
delta = (int) a.NbLinesOfCode.GetValueOrDefault() - a.OlderVersion().NbLinesOfCode.GetValueOrDefault() }
No projects matched
from n in Application.Packages where
!n.ParentProject.WasAdded() &&
n.WasAdded()
select new { n, n.NbLinesOfCode }
No packages matched
from n in codeBase.OlderVersion().Application.Packages where
!n.ParentProject.WasRemoved() &&
n.WasRemoved()
select new { n, n.NbLinesOfCode }
No packages matched
from n in Application.Packages where n.CodeWasChanged()
select new { n, n.NbLinesOfCode,
oldNbLinesOfCode = n.OlderVersion().NbLinesOfCode.GetValueOrDefault() ,
delta = (int) n.NbLinesOfCode.GetValueOrDefault() - n.OlderVersion().NbLinesOfCode.GetValueOrDefault() }
No packages matched
from t in Application.Types where
!t.ParentPackage.WasAdded() &&
t.WasAdded()
select new { t, t.NbLinesOfCode }
No types matched
from t in codeBase.OlderVersion().Application.Types where
!t.ParentPackage.WasRemoved() &&
t.WasRemoved()
select new { t, t.NbLinesOfCode }
No types matched
// To visualize changes in code, right-click a matched type and select:
// - Compare older and newer versions of source file
// - Compare older and newer versions disassembled with Reflector
from t in Application.Types where t.CodeWasChanged()
//select new { t, t.NbLinesOfCode }
select new { t, t.NbLinesOfCode,
oldNbLinesOfCode = t.OlderVersion().NbLinesOfCode ,
delta = (int?) t.NbLinesOfCode - t.OlderVersion().NbLinesOfCode }
/*from t in Application.Types where t.CodeWasChanged() && t.IsPresentInBothBuild
select new { t, t.NbLinesOfCode,
oldNbLinesOfCode = t.OlderVersion().NbLinesOfCode ,
delta = (int) t.NbLinesOfCode - t.OlderVersion().NbLinesOfCode }*/
No types matched
let typesRemoved = codeBase.OlderVersion().Types.Where(t => t.WasRemoved())
let typesAdded = Types.Where(t2 => t2.WasAdded())
from tMoved in typesAdded.Join(
typesRemoved,
t3 => t3.Name,
t4 => t4.Name,
(tNewer, tOlder) => new { tNewer,
OlderParentpackage = tOlder.ParentPackage,
OlderParentproject = tOlder.ParentProject } )
select tMoved
No types matched
let typesChanged = Application.Types.Where(t2 => t2.CodeWasChanged()).ToHashSet()
from t in JustMyCode.Types.UsingAny(typesChanged) where
!t.CodeWasChanged() &&
!t.WasAdded()
let typesChangedUsed = t.TypesUsed.Intersect(typesChanged)
select new { t, typesChangedUsed }
No types matched
let typesChanged = Application.Types.Where(t2 => t2.CodeWasChanged()).ToHashSet()
// 'depth' represents a code metric defined on types using
// directly or indirectly any type where code was changed.
let depth = JustMyCode.Types.DepthOfIsUsingAny(typesChanged)
from t in depth.DefinitionDomain where
!t.CodeWasChanged() &&
!t.WasAdded()
let typesChangedDirectlyUsed = t.TypesUsed.Intersect(typesChanged)
let depthOfUsingTypesChanged = depth[t]
orderby depthOfUsingTypesChanged
select new { t, depthOfUsingTypesChanged, typesChangedDirectlyUsed }
No types matched
from m in Application.Methods where
!m.ParentType.WasAdded() &&
m.WasAdded()
select new { m, m.NbLinesOfCode }
No methods matched
from m in codeBase.OlderVersion().Application.Methods where
!m.ParentType.WasRemoved() &&
m.WasRemoved()
select new { m, m.NbLinesOfCode }
No methods matched
// To visualize changes in code, right-click a matched method and select:
// - Compare older and newer versions of source file
// - Compare older and newer versions disassembled with Reflector
from m in Application.Methods where m.CodeWasChanged()
select new { m, m.NbLinesOfCode,
oldNbLinesOfCode = m.OlderVersion().NbLinesOfCode ,
delta = (int?) m.NbLinesOfCode - m.OlderVersion().NbLinesOfCode }
No methods matched
let methodsChanged = Application.Methods.Where(m2 => m2.CodeWasChanged()).ToHashSet()
from m in JustMyCode.Methods.UsingAny(methodsChanged ) where
!m.CodeWasChanged() &&
!m.WasAdded()
let methodsChangedCalled = m.MethodsCalled.Intersect(methodsChanged)
select new { m, methodsChangedCalled }
No methods matched
let methodsChanged = Application.Methods.Where(m2 => m2.CodeWasChanged()).ToHashSet()
// 'depth' represents a code metric defined on methods using
// directly or indirectly any method where code was changed.
let depth = JustMyCode.Methods.DepthOfIsUsingAny(methodsChanged)
from m in depth.DefinitionDomain where
!m.CodeWasChanged() &&
!m.WasAdded()
let methodsChangedDirectlyUsed = m.MethodsCalled.Intersect(methodsChanged)
let depthOfUsingMethodsChanged = depth[m]
orderby depthOfUsingMethodsChanged
select new { m, depthOfUsingMethodsChanged, methodsChangedDirectlyUsed }
No methods matched
from f in Application.Fields where
!f.ParentType.WasAdded() &&
f.WasAdded()
select new { f }
No fields matched
from f in codeBase.OlderVersion().Application.Fields where
!f.ParentType.WasRemoved() &&
f.WasRemoved()
select new { f }
No fields matched
from t in ThirdParty.Types where t.IsUsedRecently()
select new { t, t.Methods, t.Fields, t.TypesUsingMe }
No types matched
from t in codeBase.OlderVersion().Types where t.IsNotUsedAnymore()
select new { t, t.Methods, t.Fields, TypesThatUsedMe = t.TypesUsingMe }
No types matched
from m in ThirdParty.Methods where
m.IsUsedRecently() &&
!m.ParentType.IsUsedRecently()
select new { m, m.MethodsCallingMe }
No methods matched
from m in codeBase.OlderVersion().Methods where
m.IsNotUsedAnymore() &&
!m.ParentType.IsNotUsedAnymore()
select new { m, MethodsThatCalledMe = m.MethodsCallingMe}
No methods matched
from f in ThirdParty.Fields where
f.IsUsedRecently() &&
!f.ParentType.IsUsedRecently()
select new { f, f.MethodsUsingMe }
No fields matched
from f in codeBase.OlderVersion().Fields where
f.IsNotUsedAnymore() &&
!f.ParentType.IsNotUsedAnymore()
select new { f, MethodsThatUsedMe = f.MethodsUsingMe }
No fields matched
Dead Code
|
warnif count > 0
// Filter procedure for types that should'nt be considered as dead
let canTypeBeConsideredAsDeadProc = new Func<IType, bool>(
t2 => !t2.IsPublic && // Public types might be used by client applications of your projects.
t2.Name != "Program" &&
!t2.IsGeneratedByCompiler
)
// Select types unused
let typesUnused =
from t4 in JustMyCode.Types where
t4.NbTypesUsingMe == 0 && canTypeBeConsideredAsDeadProc(t4)
select t4
// Dead types = types used only by unused types (recursive)
let deadTypesMetric = typesUnused.FillIterative(
types => from t3 in codeBase.Application.Types.UsedByAny(types).Except(types)
where canTypeBeConsideredAsDeadProc(t3) &&
t3.TypesUsingMe.Intersect(types).Count() == t3.NbTypesUsingMe
select t3)
from t in deadTypesMetric.DefinitionDomain
select new { t, t.TypesUsingMe, depth = deadTypesMetric[t] }
2 types matched
types | TypesUsingMe | depth | Full Name |
---|---|---|---|
ClockFactoryTest$MyClock | 0 type | 0 | org.apache.logging.log4j.core.helpers.ClockFactoryTest$MyClock |
CachedDateFormat | 0 type | 0 | org.apache.logging.log4j.core.pattern.CachedDateFormat |
Statistics
Stat | TypesUsingMe | depth |
---|---|---|
Sum: | 0 | 0 |
Average: | 0 | 0 |
Minimum: | 0 | 0 |
Maximum: | 0 | 0 |
Standard deviation: | 0 | 0 |
Variance: | 0 | 0 |
warnif count > 0
// Filter procedure for methods that should'nt be considered as dead
let canMethodBeConsideredAsDeadProc = new Func<IMethod, bool>(
m => !m.IsPubliclyVisible && // Public methods might be used by client applications of your projects.
!m.IsEntryPoint && // Main() method is not used by-design.
!m.IsClassConstructor && // The BC code never explicitely calls class constructors.
!(m.IsConstructor && // Don't take account of protected ctor that might be call by a derived ctors.
m.IsProtected) &&
!m.IsGeneratedByCompiler)
// Get methods unused
let methodsUnused =
from m2 in JustMyCode.Methods where
m2.NbMethodsCallingMe == 0 &&
canMethodBeConsideredAsDeadProc(m2)
select m2
// Dead methods = methods used only by unused methods (recursive)
let deadMethodsMetric = methodsUnused.FillIterative(
methods => // Unique loop, just to let a chance to build the hashset.
from o in (new object()).ToEnumerable()
// Use a hashet to make Intersect calls much faster!
let hashset = methods.ToHashSet()
from m3 in codeBase.Application.Methods.UsedByAny(methods).Except(methods)
where canMethodBeConsideredAsDeadProc(m3) &&
// Select methods called only by methods already considered as dead
hashset.Intersect(m3.MethodsCallingMe).Count() == m3.NbMethodsCallingMe
select m3)
from m4 in JustMyCode.Methods.Intersect(deadMethodsMetric.DefinitionDomain)
select new { m4, m4.MethodsCallingMe, depth = deadMethodsMetric[m4] }
313 methods matched
methods | MethodsCallingMe | depth | Full Name |
---|---|---|---|
EventLogger() | 0 method | 0 | org.apache.logging.log4j.EventLogger.EventLogger() |
getName() | 0 method | 0 | org.apache.logging.log4j.MarkerManager$Log4jMarker.getName() |
getParent() | 0 method | 0 | org.apache.logging.log4j.MarkerManager$Log4jMarker.getParent() |
isInstanceOf(Marker) | 0 method | 0 | org.apache.logging.log4j.MarkerManager$Log4jMarker.isInstanceOf(Marker ) |
isInstanceOf(String) | 0 method | 0 | org.apache.logging.log4j.MarkerManager$Log4jMarker.isInstanceOf(String ) |
equals(Object) | 0 method | 0 | org.apache.logging.log4j.MarkerManager$Log4jMarker.equals(Object) |
hashCode() | 0 method | 0 | org.apache.logging.log4j.MarkerManager$Log4jMarker.hashCode() |
toString() | 0 method | 0 | org.apache.logging.log4j.MarkerManager$Log4jMarker.toString() |
MarkerManager() | 0 method | 0 | org.apache.logging.log4j.MarkerManager.MarkerManager() |
ThreadContext() | 0 method | 0 | org.apache.logging.log4j.ThreadContext.ThreadContext() |
run() | 0 method | 0 | org.apache.logging.log4j.ThreadContextInheritanceTest$TestThread.run() |
run() | 0 method | 0 | org.apache.logging.log4j.ThreadContextTest$TestThread.run() |
BasicThreadInformation(Thread) | 1 method | 1 | org.apache.logging.log4j.message.BasicThreadInformation .BasicThreadInformation(Thread) |
equals(Object) | 0 method | 0 | org.apache.logging.log4j.message.BasicThreadInformation.equals(Object) |
hashCode() | 0 method | 0 | org.apache.logging.log4j.message.BasicThreadInformation.hashCode() |
printThreadInfo(StringBuilder) | 0 method | 0 | org.apache.logging.log4j.message.BasicThreadInformation .printThreadInfo(StringBuilder) |
printStack(StringBuilder,StackTraceElement[]) | 0 method | 0 | org.apache.logging.log4j.message.BasicThreadInformation.printStack (StringBuilder,StackTraceElement[]) |
ExtendedThreadInformation(ThreadInfo) | 1 method | 1 | org.apache.logging.log4j.message.ExtendedThreadInformation .ExtendedThreadInformation(ThreadInfo) |
printThreadInfo(StringBuilder) | 0 method | 0 | org.apache.logging.log4j.message.ExtendedThreadInformation .printThreadInfo(StringBuilder) |
printStack(StringBuilder,StackTraceElement[]) | 0 method | 0 | org.apache.logging.log4j.message.ExtendedThreadInformation.printStack (StringBuilder,StackTraceElement[]) |
formatLock(StringBuilder,LockInfo) | 1 method | 1 | org.apache.logging.log4j.message.ExtendedThreadInformation.formatLock (StringBuilder,LockInfo) |
formatState(StringBuilder,ThreadInfo) | 1 method | 1 | org.apache.logging.log4j.message.ExtendedThreadInformation.formatState (StringBuilder,ThreadInfo) |
writeObject(ObjectOutputStream) | 0 method | 0 | org.apache.logging.log4j.message.FormattedMessage.writeObject (ObjectOutputStream) |
readObject(ObjectInputStream) | 0 method | 0 | org.apache.logging.log4j.message.FormattedMessage.readObject (ObjectInputStream) |
writeObject(ObjectOutputStream) | 0 method | 0 | org.apache.logging.log4j.message.LocalizedMessage.writeObject (ObjectOutputStream) |
readObject(ObjectInputStream) | 0 method | 0 | org.apache.logging.log4j.message.LocalizedMessage.readObject (ObjectInputStream) |
writeObject(ObjectOutputStream) | 0 method | 0 | org.apache.logging.log4j.message.MessageFormatMessage.writeObject (ObjectOutputStream) |
readObject(ObjectInputStream) | 0 method | 0 | org.apache.logging.log4j.message.MessageFormatMessage.readObject (ObjectInputStream) |
writeObject(ObjectOutputStream) | 0 method | 0 | org.apache.logging.log4j.message.ObjectMessage.writeObject (ObjectOutputStream) |
readObject(ObjectInputStream) | 0 method | 0 | org.apache.logging.log4j.message.ObjectMessage.readObject (ObjectInputStream) |
writeObject(ObjectOutputStream) | 0 method | 0 | org.apache.logging.log4j.message.StringFormattedMessage.writeObject (ObjectOutputStream) |
readObject(ObjectInputStream) | 0 method | 0 | org.apache.logging.log4j.message.StringFormattedMessage.readObject (ObjectInputStream) |
createThreadInfo() | 0 method | 0 | org.apache.logging.log4j.message .ThreadDumpMessage$BasicThreadInfoFactory.createThreadInfo() |
createThreadInfo() | 0 method | 0 | org.apache.logging.log4j.message .ThreadDumpMessage$ExtendedThreadInfoFactory.createThreadInfo() |
readResolve() | 0 method | 0 | org.apache.logging.log4j.message .ThreadDumpMessage$ThreadDumpMessageProxy.readResolve() |
readObject(ObjectInputStream) | 0 method | 0 | org.apache.logging.log4j.message.ThreadDumpMessage.readObject (ObjectInputStream) |
run() | 0 method | 0 | org.apache.logging.log4j.message.ThreadDumpMessageTest$Thread1.run() |
run() | 0 method | 0 | org.apache.logging.log4j.message.ThreadDumpMessageTest$Thread2.run() |
log(int) | 1 method | 2 | org.apache.logging.log4j.spi.LoggerStream$HelperStream.log(int) |
extractLine(int) | 1 method | 3 | org.apache.logging.log4j.spi.LoggerStream$HelperStream.extractLine(int ) |
leftShiftBuffer(int) | 1 method | 4 | org.apache.logging.log4j.spi.LoggerStream$HelperStream.leftShiftBuffer (int) |
write(int) | 1 method | 1 | org.apache.logging.log4j.spi.LoggerStream$HelperStream.write(int) |
write(byte[],int,int) | 0 method | 0 | org.apache.logging.log4j.spi.LoggerStream$HelperStream.write(byte[] ,int,int) |
StatusLogger$BoundedQueue<E>(StatusLogger,int) | 1 method | 1 | org.apache.logging.log4j.status.StatusLogger$BoundedQueue .StatusLogger$BoundedQueue<E>(StatusLogger,int) |
add(Object) | 0 method | 0 | org.apache.logging.log4j.status.StatusLogger$BoundedQueue.add(Object) |
StatusLogger() | 0 method | 0 | org.apache.logging.log4j.status.StatusLogger.StatusLogger() |
EnglishEnums() | 0 method | 0 | org.apache.logging.log4j.util.EnglishEnums.EnglishEnums() |
ProviderUtil() | 0 method | 0 | org.apache.logging.log4j.util.ProviderUtil.ProviderUtil() |
log4jIsDebug(int) | 0 method | 0 | org.apache.logging.log4j.DebugDisabledPerformanceComparison .log4jIsDebug(int) |
run() | 0 method | 0 | org.apache.logging.log4j.FilterPerformanceComparison$Worker.run() |
run() | 0 method | 0 | org.apache.logging.log4j.core.LoggerContext$ShutdownThread.run() |
nextInt() | 0 method | 0 | org.apache.logging.log4j.core.SimplePerfTest$SimpleRandom.nextInt() |
getState() | 1 method | 1 | org.apache.logging.log4j.core.ThreadedTest$State.getState() |
toString() | 0 method | 0 | org.apache.logging.log4j.core.ThreadedTest$State.toString() |
getDelay(TimeUnit) | 0 method | 0 | org.apache.logging.log4j.core.filter.BurstFilter$LogDelay.getDelay (TimeUnit) |
equals(Object) | 0 method | 0 | org.apache.logging.log4j.core.filter.BurstFilter$LogDelay.equals (Object) |
hashCode() | 0 method | 0 | org.apache.logging.log4j.core.filter.BurstFilter$LogDelay.hashCode() |
CompositeFilter() | 0 method | 0 | org.apache.logging.log4j.core.filter.CompositeFilter.CompositeFilter() |
Assert() | 0 method | 0 | org.apache.logging.log4j.core.helpers.Assert.Assert() |
CachedClock$1(CachedClock,String) | 1 method | 1 | org.apache.logging.log4j.core.helpers.CachedClock$1.CachedClock$1 (CachedClock,String) |
run() | 0 method | 0 | org.apache.logging.log4j.core.helpers.CachedClock$1.run() |
CachedClock() | 0 method | 0 | org.apache.logging.log4j.core.helpers.CachedClock.CachedClock() |
Charsets() | 0 method | 0 | org.apache.logging.log4j.core.helpers.Charsets.Charsets() |
ClockFactory() | 0 method | 0 | org.apache.logging.log4j.core.helpers.ClockFactory.ClockFactory() |
CoarseCachedClock$1(CoarseCachedClock,String) | 1 method | 1 | org.apache.logging.log4j.core.helpers.CoarseCachedClock$1 .CoarseCachedClock$1(CoarseCachedClock,String) |
run() | 0 method | 0 | org.apache.logging.log4j.core.helpers.CoarseCachedClock$1.run() |
CoarseCachedClock() | 0 method | 0 | org.apache.logging.log4j.core.helpers.CoarseCachedClock .CoarseCachedClock() |
Constants() | 0 method | 0 | org.apache.logging.log4j.core.helpers.Constants.Constants() |
FileUtils() | 0 method | 0 | org.apache.logging.log4j.core.helpers.FileUtils.FileUtils() |
Loader() | 0 method | 0 | org.apache.logging.log4j.core.helpers.Loader.Loader() |
NameUtil() | 0 method | 0 | org.apache.logging.log4j.core.helpers.NameUtil.NameUtil() |
NetUtils() | 0 method | 0 | org.apache.logging.log4j.core.helpers.NetUtils.NetUtils() |
OptionConverter() | 0 method | 0 | org.apache.logging.log4j.core.helpers.OptionConverter.OptionConverter( ) |
Transform() | 0 method | 0 | org.apache.logging.log4j.core.helpers.Transform.Transform() |
UUIDUtil() | 0 method | 0 | org.apache.logging.log4j.core.helpers.UUIDUtil.UUIDUtil() |
ClockFactoryTest$MyClock() | 0 method | 0 | org.apache.logging.log4j.core.helpers.ClockFactoryTest$MyClock .ClockFactoryTest$MyClock() |
currentTimeMillis() | 0 method | 0 | org.apache.logging.log4j.core.helpers.ClockFactoryTest$MyClock .currentTimeMillis() |
run() | 0 method | 0 | org.apache.logging.log4j.core.helpers.UUIDTest$Worker.run() |
ContextAnchor() | 0 method | 0 | org.apache.logging.log4j.core.impl.ContextAnchor.ContextAnchor() |
readResolve() | 0 method | 0 | org.apache.logging.log4j.core.impl.Log4jLogEvent$LogEventProxy .readResolve() |
readObject(ObjectInputStream) | 0 method | 0 | org.apache.logging.log4j.core.impl.Log4jLogEvent.readObject (ObjectInputStream) |
ReflectiveCallerClassUtility() | 0 method | 0 | org.apache.logging.log4j.core.impl.ReflectiveCallerClassUtility .ReflectiveCallerClassUtility() |
Server() | 0 method | 0 | org.apache.logging.log4j.core.jmx.Server.Server() |
valueOf(String) | 0 method | 0 | org.apache.logging.log4j.core.layout.HTMLLayout$FontSize.valueOf (String) |
check(String) | 0 method | 0 | org.apache.logging.log4j.core.layout.RFC5424Layout$ExcludeChecker .check(String) |
check(String) | 0 method | 0 | org.apache.logging.log4j.core.layout.RFC5424Layout$IncludeChecker .check(String) |
check(String) | 0 method | 0 | org.apache.logging.log4j.core.layout.RFC5424Layout$NoopChecker.check (String) |
writeStreamHeader() | 0 method | 0 | org.apache.logging.log4j.core.layout .SerializedLayout$PrivateObjectOutputStream.writeStreamHeader() |
SerializedLayout() | 0 method | 0 | org.apache.logging.log4j.core.layout.SerializedLayout.SerializedLayout () |
testUnixTime(String) | 0 method | 0 | org.apache.logging.log4j.core.layout.PatternLayoutTest.testUnixTime (String) |
isMatch(char[],int,int,int) | 0 method | 0 | org.apache.logging.log4j.core.lookup.StrMatcher$CharMatcher.isMatch (char[],int,int,int) |
isMatch(char[],int,int,int) | 0 method | 0 | org.apache.logging.log4j.core.lookup.StrMatcher$CharSetMatcher.isMatch (char[],int,int,int) |
isMatch(char[],int,int,int) | 0 method | 0 | org.apache.logging.log4j.core.lookup.StrMatcher$NoMatcher.isMatch (char[],int,int,int) |
isMatch(char[],int,int,int) | 0 method | 0 | org.apache.logging.log4j.core.lookup.StrMatcher$StringMatcher.isMatch (char[],int,int,int) |
isMatch(char[],int,int,int) | 0 method | 0 | org.apache.logging.log4j.core.lookup.StrMatcher$TrimMatcher.isMatch (char[],int,int,int) |
getLevel() | 0 method | 0 | org.apache.logging.log4j.core.lookup.DateLookupTest$MyLogEvent .getLevel() |
getLoggerName() | 0 method | 0 | org.apache.logging.log4j.core.lookup.DateLookupTest$MyLogEvent .getLoggerName() |
getSource() | 0 method | 0 | org.apache.logging.log4j.core.lookup.DateLookupTest$MyLogEvent .getSource() |
getMessage() | 0 method | 0 | org.apache.logging.log4j.core.lookup.DateLookupTest$MyLogEvent .getMessage() |
getMarker() | 0 method | 0 | org.apache.logging.log4j.core.lookup.DateLookupTest$MyLogEvent .getMarker() |
Statistics
Stat | MethodsCallingMe | depth |
---|---|---|
Sum: | 0 | 41 |
Average: | 0 | 0.13 |
Minimum: | 0 | 0 |
Maximum: | 0 | 4 |
Standard deviation: | 0 | 0.48 |
Variance: | 0 | 0.23 |
warnif count > 0
from f in JustMyCode.Fields where
f.NbMethodsUsingMe == 0 &&
!f.IsPublic && // Although not recommended, public fields might be used by client applications of your projects.
!f.IsLiteral && // The BC code never explicitely uses literal fields.
!f.IsEnumValue && // The BC code never explicitely uses enumeration value.
f.Name!= "serialVersionUID" &&
!f.IsInitOnly
select f
11 fields matched
fields | Full Name |
---|---|
config | org.apache.logging.log4j.core.LateConfigTest.config |
app | org.apache.logging.log4j.core.LateConfigTest.app |
app | org.apache.logging.log4j.core.ShutdownDisabledTest.app |
advertisedConfiguration | org.apache.logging.log4j.core.config.BaseConfiguration .advertisedConfiguration |
app | org.apache.log4j.LoggingTest.app |
logger | org.apache.logging.slf4j.LoggerTest.logger |
slf4jLogger | org.apache.logging.slf4j.LoggerTest.slf4jLogger |
context | org.apache.logging.slf4j.LoggerTest.context |
root | org.apache.logging.slf4j.LoggerTest.root |
rootLogger | org.apache.logging.slf4j.LoggerTest.rootLogger |
list | org.apache.logging.slf4j.LoggerTest.list |
Statistics
Stat |
---|
Sum: |
Average: |
Minimum: |
Maximum: |
Standard deviation: |
Variance: |
Trend Charts
Lines of Code
Rules Violated
Rules Violations
Percentage Coverage by Tests

Max
Average
Third-Party Usage
Projects Dependencies
Assembly | Depends on | Is referenced by |
---|---|---|
classes v1.0 | - | - |
jackson-core-2.2.2 v1.0 | - | - |
javax.mail-1.5.0 v1.0 | - | - |
commons-logging-1.1.3 v1.0 | - | - |
flume-ng-core-1.0.0-incubating v1.0 | - | - |
servlet-api-2.2 v1.0 | - | - |
spring-test-3.1.2.RELEASE v1.0 | - | - |
jconsole v1.0 | - | - |
org.eclipse.osgi-3.6.0.v20100517 v1.0 | - | - |
MISSING v1.0 | - | - |
javax.persistence-2.1.0 v1.0 | - | - |
jackson-databind-2.2.2 v1.0 | - | - |
lightcouch-0.0.6 v1.0 | - | - |
mongo-java-driver-2.11.2 v1.0 | - | - |
disruptor-3.0.0.beta3 v1.0 | - | - |
geronimo-jms_1.1_spec-1.0 v1.0 | - | - |
jsse v1.0 | - | - |
javax.servlet-api-3.0.1 v1.0 | - | - |
slf4j-ext-1.5.10 v1.0 | - | - |
servlet-api-2.5 v1.0 | - | - |
logback-classic-0.9.26 v1.0 | - | - |
flume-ng-sdk-1.2.0 v1.0 | - | - |
flume-ng-embedded-agent-1.4.0 v1.0 | - | - |
je-5.0.73 v1.0 | - | - |
jce v1.0 | - | - |
commons-lang3-3.2.1 v1.0 | - | - |
core-4.3.0 v1.0 | - | - |
easymock-2.3 v1.0 | - | - |
mockejb-0.6-beta2 v1.0 | - | - |
h2-1.3.158 v1.0 | - | - |
logback-core-0.9.26 v1.0 | - | - |
velocity-1.7 v1.0 | - | - |
jsp-api-2.1 v1.0 | - | - |
spring-webmvc-2.5.6 v1.0 | - | - |
log4j-api v1.0 | classes v1.0 ; MISSING v1.0 ; commons-lang3-3.2.1 v1.0 ; org.eclipse.osgi-3.6.0.v20100517 v1.0 ; | log4j-core v1.0 ; log4j-1.2-api v1.0 ; log4j-slf4j-impl v1.0 ; log4j-to-slf4j v1.0 ; log4j-jcl v1.0 ; log4j-flume-ng v1.0 ; log4j-taglib v1.0 ; log4j-samples-flume-common v1.0 ; |
log4j-core v1.0 | classes v1.0 ; log4j-api v1.0 ; javax.persistence-2.1.0 v1.0 ; jackson-core-2.2.2 v1.0 ; jackson-databind-2.2.2 v1.0 ; lightcouch-0.0.6 v1.0 ; mongo-java-driver-2.11.2 v1.0 ; disruptor-3.0.0.beta3 v1.0 ; org.eclipse.osgi-3.6.0.v20100517 v1.0 ; core-4.3.0 v1.0 ; jce v1.0 ; servlet-api-2.2 v1.0 ; geronimo-jms_1.1_spec-1.0 v1.0 ; javax.mail-1.5.0 v1.0 ; jsse v1.0 ; javax.servlet-api-3.0.1 v1.0 ; servlet-api-2.5 v1.0 ; MISSING v1.0 ; log4j-1.2-api v1.0 ; slf4j-ext-1.5.10 v1.0 ; easymock-2.3 v1.0 ; mockejb-0.6-beta2 v1.0 ; h2-1.3.158 v1.0 ; logback-classic-0.9.26 v1.0 ; logback-core-0.9.26 v1.0 ; spring-test-3.1.2.RELEASE v1.0 ; | log4j-1.2-api v1.0 ; log4j-slf4j-impl v1.0 ; log4j-jcl v1.0 ; log4j-flume-ng v1.0 ; log4j-taglib v1.0 ; log4j-jmx-gui v1.0 ; log4j-samples-flume-common v1.0 ; |
log4j-core-osgi-async v1.0 | - | - |
log4j-core-osgi-jpa v1.0 | - | - |
log4j-1.2-osgi-api v1.0 | - | - |
log4j-core-osgi-net v1.0 | - | - |
log4j-core-osgi-nosql-couchdb v1.0 | - | - |
log4j-core-osgi-nosql-mongodb v1.0 | - | - |
log4j-core-osgi-reduced v1.0 | - | - |
log4j-1.2-api v1.0 | classes v1.0 ; log4j-api v1.0 ; log4j-core v1.0 ; MISSING v1.0 ; velocity-1.7 v1.0 ; | log4j-core v1.0 ; |
log4j-slf4j-impl v1.0 | classes v1.0 ; log4j-api v1.0 ; slf4j-ext-1.5.10 v1.0 ; MISSING v1.0 ; log4j-core v1.0 ; | - |
log4j-to-slf4j v1.0 | log4j-api v1.0 ; classes v1.0 ; MISSING v1.0 ; | - |
log4j-jcl v1.0 | commons-logging-1.1.3 v1.0 ; log4j-api v1.0 ; classes v1.0 ; MISSING v1.0 ; log4j-core v1.0 ; | - |
log4j-flume-ng v1.0 | classes v1.0 ; log4j-core v1.0 ; flume-ng-core-1.0.0-incubating v1.0 ; log4j-api v1.0 ; flume-ng-sdk-1.2.0 v1.0 ; flume-ng-embedded-agent-1.4.0 v1.0 ; je-5.0.73 v1.0 ; jce v1.0 ; MISSING v1.0 ; | - |
log4j-taglib v1.0 | classes v1.0 ; servlet-api-2.2 v1.0 ; log4j-api v1.0 ; jsp-api-2.1 v1.0 ; MISSING v1.0 ; log4j-core v1.0 ; spring-test-3.1.2.RELEASE v1.0 ; | - |
log4j-jmx-gui v1.0 | classes v1.0 ; log4j-core v1.0 ; jconsole v1.0 ; | - |
log4j-samples-flume-common v1.0 | classes v1.0 ; log4j-api v1.0 ; MISSING v1.0 ; spring-webmvc-2.5.6 v1.0 ; servlet-api-2.2 v1.0 ; log4j-core v1.0 ; | - |
log4j-samples-flume-remote v1.0 | - | - |
log4j-samples-flume-embedded v1.0 | - | - |
Projects Build Order
Dependency cycles between Java Projects is a major code smell and it is recommended to refactor the code to avoid cycles.
Also, dependency cycles between Java Projects prevent from finding a build order between Java Projects
Analysis Log : Information and Warnings
The Warnings can reveal potential flaws concerning the health of the build process.
A particular warn can be disabled through the JArchitect interactive UI, panel Error List, tick the checkbox Disabled corresponding to the warn to disable.
Kind | Message |
---|---|
Info | 09.22.2014 11:05:14 Begin full analysis with JArchitect v4.0.0.8041 |
Info | No Baseline for Comparison loaded. |
Info | Bytecode parsing |
Warning | No classes founds for project:log4j-core-osgi-async under output directory:/Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-osgi/core-osgi-async; please check if the project was built |
Warning | No classes founds for project:log4j-core-osgi-jpa under output directory:/Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-osgi/core-osgi-jpa; please check if the project was built |
Warning | No classes founds for project:log4j-1.2-osgi-api under output directory:/Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-osgi/core-osgi-legacy-api; please check if the project was built |
Warning | No classes founds for project:log4j-core-osgi-net under output directory:/Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-osgi/core-osgi-net; please check if the project was built |
Warning | No classes founds for project:log4j-core-osgi-nosql-couchdb under output directory:/Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-osgi/core-osgi-nosql-couchdb; please check if the project was built |
Warning | No classes founds for project:log4j-core-osgi-nosql-mongodb under output directory:/Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-osgi/core-osgi-nosql-mongodb; please check if the project was built |
Warning | No classes founds for project:log4j-core-osgi-reduced under output directory:/Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-osgi/core-osgi-reduced; please check if the project was built |
Warning | No classes founds for project:log4j-samples-flume-remote under output directory:/Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-samples/flume-remote; please check if the project was built |
Warning | No classes founds for project:log4j-samples-flume-embedded under output directory:/Users/cy/Documents/Development/log4j2-trunk/log4j-trunk/log4j-samples/flume-embedded; please check if the project was built |
Info | Third Party parsing |
Info | Parsing Source Files |
Warning | Cycle detected: log4j-core ; log4j-1.2-api ; |
Info | 09.22.2014 11:05:23 Analyse dependencies of your application. |
Info | 09.22.2014 11:05:23 Building the report (standard). |
Info | 09.22.2014 11:05:24 Log trend metrics values. |
Info | 09.22.2014 11:05:24 Execute queries and rules |
Warning | 11 critical rules are violated. - Types too big - critical - Methods too complex - critical - Methods with too many parameters - critical - Prefer primitive types to boxed primitives - Always override hashcode when you override equals - Always override toString - Prefer interfaces to abstract classes - Use interfaces only to define types - Avoid using raw types - Don't force gabrage collector - ... |