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 :-). -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]