Dear all,
That's a very interesting idea! Especially because checkstyle, PMD, and
SAD (for Software Architectural Defect, the name of our framework) do
not work at the same level of "abstraction". If I am not mistaked,
checkstyle checks coding standards at the source code line level, PMD
checks at structure of the method (loops, clones...), while SAD checks
for the structure of the classes. Thus, a comparison/combination of the
three tool could be most interesting on a project.
Thank you!
Sincerely,
Yann-Gaël
Yoav Shapira a écrit :
And it'd be interesting to see a comparison of your tool to checkstyle
and PMD, both fairly well-established and good tools for the same
purpose...
On 2/25/06, Scott Deboy <[EMAIL PROTECTED]> wrote:
That is a very old version of log4j. Feel free to analyze a recent release (or
the current release), we'd be happy to hear your results.
Thanks
Scott Deboy
COMOTIV SYSTEMS
111 SW Columbia Street Ste. 950
Portland, OR 97201
Telephone: 503.224.7496
Cell: 503.997.1367
Fax: 503.222.0185
[EMAIL PROTECTED]
www.comotivsystems.com
-----Original Message-----
From: Yann-Gaël Guéhéneuc [mailto:[EMAIL PROTECTED]
Sent: Sat 2/25/2006 2:54 PM
To: log4j-dev@logging.apache.org; Naouel Moha
Subject: Detection of design defects
Dear log4j developers,
We are a team of software engineers doing research on design
defects (antipatterns, codesmells...) in the Departement of Informatics
and Operations Research at University of Montreal. We develop a
framework to describe design defects synthetically and to detect these
in program source code automatically. We are currently performing
experiments to assess our detection algorithms.
We selected log4j as an obvious case study because it is a
well-known, widely spread, and mature software. Also, we use log4j for
our own teaching and research projects.
Would you be interested in helping us assessing our detection
algorithms? We would be very grateful if you could provide us with your
expertise on the development of log4j to help us in understanding why
certain classes are erroneously highlighted as design defects by our
algorithms. It is important for us to have your comments because we are
by no means experts in the implementation of log4j and we would be bias
by our own implementation of the detection algorithms. Also, you might
find our detection algorithms useful to improve the design and
implementation of certain classes and, thus, to ease the maintenance and
evolution of log4j. Of course, we will make our detection algorithms
available to you and your community when they are validated.
We applied our algorithms on log4j v1.2.1 and generated potential
candidate classes for the follwing design defects (from the Brown's
AntiPatterns book):
- Blob, a large class doing all the work, only using small Data Class to
store/to retrieve data.
- Functional Decomposition, a class that does not conform fully to the
OO paradigm, such as not using inheritance and polymorphism.
- Spaghetti Code, a class with long methods and too many "global" variables.
- Swiss Army Knife, a class implementing too many functionnalities
and-or providing too many services.
We attach to this message some results of our detection
algorithms. The classes named in these files are *candidate* design
defects and we already found manually many false positive cases (i.e.,
class highlighted as design defects which are not). We cannot provide
you now with the complete results as your anti-spam filter rejects .zip
files, let us know if we can transfer you the results in another way.
Would it be possible that you kindly help us in improving our algorithms
or point us to someone
who could help us?
If you have any questions or comments, please feel free to contact
either myself or Naouel Moha, Ph.D. student working full-time on this
project.
Best regards,
Yann-Gaël
--
# Results of the detection
############################## Results of the detection of the Blob #
DataClass
1.100.DataClass.1.Name = org.apache.log4j.chainsaw.ControlPanel
1.100.DataClass.1.NAD = 2.0
1.100.DataClass.1.NMD = 2.0
# ControllerClass
1.100.ControllerClass.2.Name = org.apache.log4j.chainsaw.ControlPanel
############################## Results of the detection of the Blob #
DataClass
2.100.DataClass.1.Name = org.apache.log4j.lf5.LogLevelFormatException
2.100.DataClass.1.NAD = 0.0
2.100.DataClass.1.NMD = 1.0
# LargeClass
2.100.LargeClass.2.Name = org.apache.log4j.lf5.LogLevel
2.100.LargeClass.2.NAD = 19.0
2.100.LargeClass.2.NMD = 18.0
############################## Results of the detection of the Blob #
LargeClass
3.100.LargeClass.1.Name = org.apache.log4j.lf5.viewer.LogBrokerMonitor
3.100.LargeClass.1.NAD = 29.0
3.100.LargeClass.1.NMD = 105.0
# DataClass
3.100.DataClass.2.Name = org.apache.log4j.lf5.viewer.LogFactor5ErrorDialog
3.100.DataClass.2.NAD = 0.0
3.100.DataClass.2.NMD = 1.0
--
Yann-Gaël Guéhéneuc, Ph.D.
Professeur adjoint / Assistant professor
Ptidej Project Team Leader
GEODES - Group of Open and Distributed Systems,
Experimental Software Engineering
DIRO, Université de Montréal 1-514-343-6782 (Téléphone / Phone)
C.P. 6128, succursale Centre-Ville 1-514-343-5834 (Télécopie / Fax)
Montréal, QC, H3C 3J7, Canada www.ptidej.net
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
--
Yoav Shapira
System Design and Management Fellow
MIT Sloan School of Management
Cambridge, MA, USA
[EMAIL PROTECTED] / www.yoavshapira.com
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
--
Yann-Gaël Guéhéneuc, Ph.D.
Professeur adjoint / Assistant professor
Ptidej Project Team Leader
GEODES - Group of Open and Distributed Systems,
Experimental Software Engineering
DIRO, Université de Montréal 1-514-343-6782 (Téléphone / Phone)
C.P. 6128, succursale Centre-Ville 1-514-343-5834 (Télécopie / Fax)
Montréal, QC, H3C 3J7, Canada www.ptidej.net
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]