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]

Reply via email to