Rahul Akolkar a écrit :
Thanks Luc, and I appreciate the findbugs run!
On 5/17/08, Luc Maisonobe <[EMAIL PROTECTED]> wrote:
<snip/>
Generating the site on Linux, with maven 2 and JDK 1.6.0_06 gives me a few
warnings for tests javadoc (references not found for @link pointing to SCXML
itself). This are details.
<snap/>
True, seems the test Javadoc isn't finding the source classes, will
need to look into the configuration.
What bother me a little more is that I have run findbugs-maven-plugin
version 1.1.1 with default settings on the release candidate, and it found a
few bugs (27). These bugs fall into a small set of categories:
- incomplete synchronization on some fields,
- non-transient and non-serializable fields
- missing serialVersionUID
- fields not initialized in constructors
- non-localized toLowerCase
- use of System.exit
Of course, some of them may be false positive (probably the two last).
I don't know if the synchronization problems are real problems or not. So I
would temporarily vote -1 and can change it if you tell me these problems
are not real.
<snip/>
I ran the plugin myself and have appended the report here [3].
Heres the breakdown listed a bit differently:
* 19 serialization issues - Most are non-transient non-serializable
fields which are interface types whose implementations are expected to
be serializable (for instance, JCL/ACL Log is mostly considered OK
from a serialization perspective in v1.0.4+). Moreover, the JUnit
tests actually test for serialization, they will at random try to
write active instances to disk (see target/serialization directory
where you should find 100+ of serialized instances written out) and
read them back in before proceeding with the rest of the test. We know
serialization works atleast for the subset the tests exercise.
* 5 synchronization issues (2 inconsistent sync, 3 field not
initialized in constructor) - This has to do with library-specific
patterns. For the inconsistent sync ones, see Javadoc notes in
getter/setter for SCXMLExecutor.stateMachine (IOW, some bits are
considered immutable once configured for the lifetime of the executor)
and this thread [1] as an example. Separately, findbugs is not always
able to recognize lazy initialization. For the not initialized in
constructor reports, see the Invoker lifecycle documented here [2]
etc. Multiple folks have reported stress testing the library over the
three years so there is also some anecdotal evidence that it works
when used as designed :-)
* 2 issues in StandaloneUtils class in test package - Its a command
line tool / toy that can be used to better understand SCXML (you can
load up a document, fire events using the command line, watch
transitions etc.), the merit of the issues reported in this context is
debatable.
* 1 performance issue - Doesn't seem to be a deal breaker.
If you think any of these should be fixed immediately, I'll gladly do
it, but please also suggest a fix if you can (I don't know what the
fixes would be since I think in a particular way on each of these
issues and I'll have to fabricate fixes which I don't care to do :-).
OK. Everything seems therefore to be either under control or false
positive from findbugs.
I therefore change my vote to +1.
Luc
-Rahul
[1] http://markmail.org/message/4zvgpo36o3kgoyz5
[2]
http://commons.apache.org/scxml/0.7/apidocs/org/apache/commons/scxml/invoke/Invoker.html
[3]
Inconsistent synchronization of
org.apache.commons.scxml.SCXMLExecutor.errorReporter; locked 76% of
time MT_CORRECTNESS IS2_INCONSISTENT_SYNC 337
Inconsistent synchronization of
org.apache.commons.scxml.SCXMLExecutor.stateMachine; locked 77% of
time MT_CORRECTNESS IS2_INCONSISTENT_SYNC 340
Method org.apache.commons.scxml.SCXMLExecutor.updateStatus(Step) uses
Collection.toArray() with zero-length array argument PERFORMANCE
ITA_INEFFICIENT_TO_ARRAY 549
Class org.apache.commons.scxml.SCXMLExecutor defines non-transient
non-serializable instance field log BAD_PRACTICE SE_BAD_FIELD Not
available
Class org.apache.commons.scxml.env.SimpleContext defines non-transient
non-serializable instance field log BAD_PRACTICE SE_BAD_FIELD Not
available
Class org.apache.commons.scxml.env.SimpleDispatcher defines
non-transient non-serializable instance field log BAD_PRACTICE
SE_BAD_FIELD Not available
Class org.apache.commons.scxml.env.SimpleErrorHandler defines
non-transient non-serializable instance field log BAD_PRACTICE
SE_BAD_FIELD Not available
Class org.apache.commons.scxml.env.SimpleErrorReporter defines
non-transient non-serializable instance field log BAD_PRACTICE
SE_BAD_FIELD Not available
Class org.apache.commons.scxml.env.SimpleSCXMLListener defines
non-transient non-serializable instance field log BAD_PRACTICE
SE_BAD_FIELD Not available
Class org.apache.commons.scxml.env.SimpleScheduler defines
non-transient non-serializable instance field log BAD_PRACTICE
SE_BAD_FIELD Not available
Class org.apache.commons.scxml.env.Tracer defines non-transient
non-serializable instance field errHandler BAD_PRACTICE SE_BAD_FIELD
Not available
Class org.apache.commons.scxml.env.Tracer defines non-transient
non-serializable instance field scxmlListener BAD_PRACTICE
SE_BAD_FIELD Not available
Class org.apache.commons.scxml.env.URLResolver defines non-transient
non-serializable instance field log BAD_PRACTICE SE_BAD_FIELD Not
available
Class org.apache.commons.scxml.env.jsp.ELEvaluator defines
non-transient non-serializable instance field log BAD_PRACTICE
SE_BAD_FIELD Not available
The field org.apache.commons.scxml.env.jsp.ELEvaluator.ee is transient
but isn't set by deserialization BAD_PRACTICE
SE_TRANSIENT_FIELD_NOT_RESTORED Not available
Class org.apache.commons.scxml.env.jsp.ELEvaluator$BuiltinFunctionMapper
defines non-transient non-serializable instance field log BAD_PRACTICE
SE_BAD_FIELD Not available
Class org.apache.commons.scxml.env.jsp.ELEvaluator$ContextWrapper
defines non-transient non-serializable instance field log BAD_PRACTICE
SE_BAD_FIELD Not available
org.apache.commons.scxml.env.jsp.RootContext is Serializable; consider
declaring a serialVersionUID BAD_PRACTICE SE_NO_SERIALVERSIONID Not
available
SimpleSCXMLInvoker.executor not initialized in constructor STYLE
UWF_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR Not available
SimpleSCXMLInvoker.parentSCInstance not initialized in constructor
STYLE UWF_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR Not available
Class org.apache.commons.scxml.model.Assign defines non-transient
non-serializable instance field pathResolver BAD_PRACTICE SE_BAD_FIELD
Not available
Class org.apache.commons.scxml.model.Data defines non-transient
non-serializable instance field node BAD_PRACTICE SE_BAD_FIELD Not
available
Class org.apache.commons.scxml.model.Invoke defines non-transient
non-serializable instance field pathResolver BAD_PRACTICE SE_BAD_FIELD
Not available
Send.delay not initialized in constructor STYLE
UWF_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR Not available
Class org.apache.commons.scxml.semantics.SCXMLSemanticsImpl defines
non-transient non-serializable instance field appLog BAD_PRACTICE
SE_BAD_FIELD Not available
org.apache.commons.scxml.test.StandaloneUtils Use of non-localized
String.toUpperCase() or String.toLowerCase I18N DM_CONVERT_CASE 157
org.apache.commons.scxml.test.StandaloneUtils.execute(String,
Evaluator) invokes System.exit(...), which shuts down the entire
virtual machine BAD_PRACTICE DM_EXIT 83
---------------------------------------------------------------------
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]