FindBugs Report
Project Information
Project: /Users/agi/workspace/jomic/settings/jomic.fb
FindBugs version: 0.8.8
Code analyzed:
- /Users/agi/workspace/jomic/lib/jomic.jar
Contents
Warnings
Click on a warning row to see full context information.
| IL |
There is an apparent infinite recursive loop in net.sf.jomic.tools.CopyDirTask.start(). |
|
Bug type IL_INFINITE_RECURSIVE_LOOP (click for details)
In class net.sf.jomic.tools.CopyDirTask
In method net.sf.jomic.tools.CopyDirTask.start()
At CopyDirTask.java:[line 49]
|
| NP |
Possible null pointer dereference in net.sf.jomic.ui.FramelessJomicMenuBar.() |
|
Bug type NP_NULL_ON_SOME_PATH (click for details)
In class net.sf.jomic.ui.FramelessJomicMenuBar
In method net.sf.jomic.ui.FramelessJomicMenuBar.()
At FramelessJomicMenuBar.java:[line 72]
|
| NP |
Possible null pointer dereference in net.sf.jomic.ui.JomicMenuBar.createViewMenu() |
|
Bug type NP_NULL_ON_SOME_PATH (click for details)
In class net.sf.jomic.ui.JomicMenuBar
In method net.sf.jomic.ui.JomicMenuBar.createViewMenu()
At JomicMenuBar.java:[line 423]
|
| RR |
net.sf.jomic.tools.FileTools.obtainComicFormat(java.io.File) ignores result of java.io.InputStream.read(byte[],int,int) |
|
Bug type RR_NOT_CHECKED (click for details)
In class net.sf.jomic.tools.FileTools
In method net.sf.jomic.tools.FileTools.obtainComicFormat(java.io.File)
Called method java.io.InputStream.read(byte[],int,int)
At FileTools.java:[line 767]
|
| Se |
Class net.sf.jomic.comic.ComicInfoTableModel defines non-transient non-serializable instance field net.sf.jomic.comic.ComicInfoTableModel.comicModel |
|
Bug type SE_BAD_FIELD (click for details)
In class net.sf.jomic.comic.ComicInfoTableModel
Field net.sf.jomic.comic.ComicInfoTableModel.comicModel
|
| Se |
Class net.sf.jomic.comic.ComicInfoTableModel defines non-transient non-serializable instance field net.sf.jomic.comic.ComicInfoTableModel.stringTools |
|
Bug type SE_BAD_FIELD (click for details)
In class net.sf.jomic.comic.ComicInfoTableModel
Field net.sf.jomic.comic.ComicInfoTableModel.stringTools
|
| Se |
Class net.sf.jomic.comic.Conversion defines non-transient non-serializable instance field net.sf.jomic.comic.Conversion.imageTools |
|
Bug type SE_BAD_FIELD (click for details)
In class net.sf.jomic.comic.Conversion
Field net.sf.jomic.comic.Conversion.imageTools
|
| Se |
Class net.sf.jomic.comic.Conversion defines non-transient non-serializable instance field net.sf.jomic.comic.Conversion.stringTools |
|
Bug type SE_BAD_FIELD (click for details)
In class net.sf.jomic.comic.Conversion
Field net.sf.jomic.comic.Conversion.stringTools
|
| Se |
Class net.sf.jomic.tools.BasicSettings defines non-transient non-serializable instance field net.sf.jomic.tools.BasicSettings.logger |
|
Bug type SE_BAD_FIELD (click for details)
In class net.sf.jomic.tools.BasicSettings
Field net.sf.jomic.tools.BasicSettings.logger
|
| Se |
Class net.sf.jomic.tools.BasicSettings defines non-transient non-serializable instance field net.sf.jomic.tools.BasicSettings.stringTools |
|
Bug type SE_BAD_FIELD (click for details)
In class net.sf.jomic.tools.BasicSettings
Field net.sf.jomic.tools.BasicSettings.stringTools
|
| Se |
Class net.sf.jomic.tools.ImageRenderSettings defines non-transient non-serializable instance field net.sf.jomic.tools.ImageRenderSettings.imageTools |
|
Bug type SE_BAD_FIELD (click for details)
In class net.sf.jomic.tools.ImageRenderSettings
Field net.sf.jomic.tools.ImageRenderSettings.imageTools
|
| Se |
Class net.sf.jomic.tools.ImageRenderSettings defines non-transient non-serializable instance field net.sf.jomic.tools.ImageRenderSettings.logger |
|
Bug type SE_BAD_FIELD (click for details)
In class net.sf.jomic.tools.ImageRenderSettings
Field net.sf.jomic.tools.ImageRenderSettings.logger
|
| Se |
Class net.sf.jomic.tools.ImageRenderSettings defines non-transient non-serializable instance field net.sf.jomic.tools.ImageRenderSettings.stringTools |
|
Bug type SE_BAD_FIELD (click for details)
In class net.sf.jomic.tools.ImageRenderSettings
Field net.sf.jomic.tools.ImageRenderSettings.stringTools
|
| Se |
Class net.sf.jomic.ui.ImageFormatTableModel defines non-transient non-serializable instance field net.sf.jomic.ui.ImageFormatTableModel.imageTools |
|
Bug type SE_BAD_FIELD (click for details)
In class net.sf.jomic.ui.ImageFormatTableModel
Field net.sf.jomic.ui.ImageFormatTableModel.imageTools
|
| SnVI |
net.sf.jomic.comic.ComicInfoTableModel is Serializable; consider declaring a serialVersionUID |
|
Bug type SE_NO_SERIALVERSIONID (click for details)
In class net.sf.jomic.comic.ComicInfoTableModel
|
| SnVI |
net.sf.jomic.comic.ComicViewTransferHandler is Serializable; consider declaring a serialVersionUID |
|
Bug type SE_NO_SERIALVERSIONID (click for details)
In class net.sf.jomic.comic.ComicViewTransferHandler
|
| SnVI |
net.sf.jomic.comic.Conversion is Serializable; consider declaring a serialVersionUID |
|
Bug type SE_NO_SERIALVERSIONID (click for details)
In class net.sf.jomic.comic.Conversion
|
| SnVI |
net.sf.jomic.tools.BasicSettings is Serializable; consider declaring a serialVersionUID |
|
Bug type SE_NO_SERIALVERSIONID (click for details)
In class net.sf.jomic.tools.BasicSettings
|
| SnVI |
net.sf.jomic.tools.ImageRenderSettings is Serializable; consider declaring a serialVersionUID |
|
Bug type SE_NO_SERIALVERSIONID (click for details)
In class net.sf.jomic.tools.ImageRenderSettings
|
| SnVI |
net.sf.jomic.tools.ThresholdBlurDescriptor is Serializable; consider declaring a serialVersionUID |
|
Bug type SE_NO_SERIALVERSIONID (click for details)
In class net.sf.jomic.tools.ThresholdBlurDescriptor
|
| SnVI |
net.sf.jomic.tools.ThresholdDifferenceBlurDescriptor is Serializable; consider declaring a serialVersionUID |
|
Bug type SE_NO_SERIALVERSIONID (click for details)
In class net.sf.jomic.tools.ThresholdDifferenceBlurDescriptor
|
| SnVI |
net.sf.jomic.ui.ImageFormatTableModel is Serializable; consider declaring a serialVersionUID |
|
Bug type SE_NO_SERIALVERSIONID (click for details)
In class net.sf.jomic.ui.ImageFormatTableModel
|
| SnVI |
net.sf.jomic.ui.OpenRecentFileEvent is Serializable; consider declaring a serialVersionUID |
|
Bug type SE_NO_SERIALVERSIONID (click for details)
In class net.sf.jomic.ui.OpenRecentFileEvent
|
| UR |
Uninitialized read of net.sf.jomic.tools.ImageCache.disposed in net.sf.jomic.tools.ImageCache.(String,long) |
|
Bug type UR_UNINIT_READ (click for details)
In class net.sf.jomic.tools.ImageCache
In method net.sf.jomic.tools.ImageCache.(String,long)
Field net.sf.jomic.tools.ImageCache.disposed
At ImageCache.java:[line 57]
|
| UR |
Uninitialized read of net.sf.jomic.tools.ImageCacheRenderThread$ImageRenderTask.priority in net.sf.jomic.tools.ImageCacheRenderThread$ImageRenderTask.(ImageCacheRenderThread,java.io.File,ImageInCacheListener,int) |
|
Bug type UR_UNINIT_READ (click for details)
In class net.sf.jomic.tools.ImageCacheRenderThread$ImageRenderTask
In method net.sf.jomic.tools.ImageCacheRenderThread$ImageRenderTask.(ImageCacheRenderThread,java.io.File,ImageInCacheListener,int)
Field net.sf.jomic.tools.ImageCacheRenderThread$ImageRenderTask.priority
At ImageCacheRenderThread.java:[line 231]
|
| IS2 |
Inconsistent synchronization of net.sf.jomic.common.Settings.baseCacheDir; locked 80% of time |
|
Bug type IS2_INCONSISTENT_SYNC (click for details)
In class net.sf.jomic.common.Settings
Field net.sf.jomic.common.Settings.baseCacheDir
Synchronized 80% of the time
Unsynchronized access at Settings.java:[line 331]
Unsynchronized access at Settings.java:[line 346]
Synchronized access at Settings.java:[line 263]
Synchronized access at Settings.java:[line 267]
Synchronized access at Settings.java:[line 274]
Synchronized access at Settings.java:[line 285]
Synchronized access at Settings.java:[line 278]
Synchronized access at Settings.java:[line 286]
Synchronized access at Settings.java:[line 274]
Synchronized access at Settings.java:[line 282]
|
| SC |
net.sf.jomic.tools.ImageCache.(String,long) invokes net.sf.jomic.tools.ImageCacheRenderThread.start() |
|
Bug type SC_START_IN_CTOR (click for details)
In class net.sf.jomic.tools.ImageCache
In method net.sf.jomic.tools.ImageCache.(String,long)
Called method net.sf.jomic.tools.ImageCacheRenderThread.start()
At ImageCache.java:[line 71]
|
| EI |
net.sf.jomic.comic.ComicMustContainImagesException.getFileNames() may expose internal representation by returning net.sf.jomic.comic.ComicMustContainImagesException.otherFileNames |
|
Bug type EI_EXPOSE_REP (click for details)
In class net.sf.jomic.comic.ComicMustContainImagesException
In method net.sf.jomic.comic.ComicMustContainImagesException.getFileNames()
Field net.sf.jomic.comic.ComicMustContainImagesException.otherFileNames
At ComicMustContainImagesException.java:[line 44]
|
| EI |
net.sf.jomic.tools.ConsoleIOException.getArguments() may expose internal representation by returning net.sf.jomic.tools.ConsoleIOException.arguments |
|
Bug type EI_EXPOSE_REP (click for details)
In class net.sf.jomic.tools.ConsoleIOException
In method net.sf.jomic.tools.ConsoleIOException.getArguments()
Field net.sf.jomic.tools.ConsoleIOException.arguments
At ConsoleIOException.java:[line 60]
|
| EI |
net.sf.jomic.tools.ImageTools.getPossibleBlurModes() may expose internal representation by returning net.sf.jomic.tools.ImageTools.possibleBlurModes |
|
Bug type EI_EXPOSE_REP (click for details)
In class net.sf.jomic.tools.ImageTools
In method net.sf.jomic.tools.ImageTools.getPossibleBlurModes()
Field net.sf.jomic.tools.ImageTools.possibleBlurModes
At ImageTools.java:[line 412]
|
| EI |
net.sf.jomic.ui.OpenFromArchiveDialog.getFileNames() may expose internal representation by returning net.sf.jomic.ui.OpenFromArchiveDialog.fileNames |
|
Bug type EI_EXPOSE_REP (click for details)
In class net.sf.jomic.ui.OpenFromArchiveDialog
In method net.sf.jomic.ui.OpenFromArchiveDialog.getFileNames()
Field net.sf.jomic.ui.OpenFromArchiveDialog.fileNames
At OpenFromArchiveDialog.java:[line 139]
|
| EI2 |
net.sf.jomic.comic.AbstractCreateComicTask.(java.io.File,String[],java.util.Map,java.io.File,Conversion) may expose internal representation by storing an externally mutable object into net.sf.jomic.comic.AbstractCreateComicTask.sourceFileNames |
|
Bug type EI_EXPOSE_REP2 (click for details)
In class net.sf.jomic.comic.AbstractCreateComicTask
In method net.sf.jomic.comic.AbstractCreateComicTask.(java.io.File,String[],java.util.Map,java.io.File,Conversion)
Field net.sf.jomic.comic.AbstractCreateComicTask.sourceFileNames
At AbstractCreateComicTask.java:[line 72]
|
| EI2 |
net.sf.jomic.comic.CreateZipArchiveTask.(java.io.File,java.io.File,String[]) may expose internal representation by storing an externally mutable object into net.sf.jomic.comic.CreateZipArchiveTask.sourceFileNames |
|
Bug type EI_EXPOSE_REP2 (click for details)
In class net.sf.jomic.comic.CreateZipArchiveTask
In method net.sf.jomic.comic.CreateZipArchiveTask.(java.io.File,java.io.File,String[])
Field net.sf.jomic.comic.CreateZipArchiveTask.sourceFileNames
At CreateZipArchiveTask.java:[line 65]
|
| EI2 |
net.sf.jomic.tools.CreateImagInfoMapTask.(java.io.File[]) may expose internal representation by storing an externally mutable object into net.sf.jomic.tools.CreateImagInfoMapTask.imageFiles |
|
Bug type EI_EXPOSE_REP2 (click for details)
In class net.sf.jomic.tools.CreateImagInfoMapTask
In method net.sf.jomic.tools.CreateImagInfoMapTask.(java.io.File[])
Field net.sf.jomic.tools.CreateImagInfoMapTask.imageFiles
At CreateImagInfoMapTask.java:[line 40]
|
| EI2 |
net.sf.jomic.ui.ConvertWorker.(java.io.File,java.io.File[],net.sf.jomic.comic.Conversion) may expose internal representation by storing an externally mutable object into net.sf.jomic.ui.ConvertWorker.filesToConvert |
|
Bug type EI_EXPOSE_REP2 (click for details)
In class net.sf.jomic.ui.ConvertWorker
In method net.sf.jomic.ui.ConvertWorker.(java.io.File,java.io.File[],net.sf.jomic.comic.Conversion)
Field net.sf.jomic.ui.ConvertWorker.filesToConvert
At ConvertWorker.java:[line 75]
|
| SBSC |
Method net.sf.jomic.comic.AbstractCreateComicTask.start() concatenates strings using + in a loop |
|
Bug type SBSC_USE_STRINGBUFFER_CONCATENATION (click for details)
In class net.sf.jomic.comic.AbstractCreateComicTask
In method net.sf.jomic.comic.AbstractCreateComicTask.start()
At AbstractCreateComicTask.java:[line 163]
|
| SBSC |
Method net.sf.jomic.tools.ConsoleIOException.getFullCommand() concatenates strings using + in a loop |
|
Bug type SBSC_USE_STRINGBUFFER_CONCATENATION (click for details)
In class net.sf.jomic.tools.ConsoleIOException
In method net.sf.jomic.tools.ConsoleIOException.getFullCommand()
At ConsoleIOException.java:[line 80]
|
| SBSC |
Method net.sf.jomic.tools.ErrorTools.getDetailedExceptionMessage(Throwable) concatenates strings using + in a loop |
|
Bug type SBSC_USE_STRINGBUFFER_CONCATENATION (click for details)
In class net.sf.jomic.tools.ErrorTools
In method net.sf.jomic.tools.ErrorTools.getDetailedExceptionMessage(Throwable)
At ErrorTools.java:[line 142]
|
| SBSC |
Method net.sf.jomic.tools.ImageTools.() concatenates strings using + in a loop |
|
Bug type SBSC_USE_STRINGBUFFER_CONCATENATION (click for details)
In class net.sf.jomic.tools.ImageTools
In method net.sf.jomic.tools.ImageTools.()
At ImageTools.java:[line 206]
|
| SBSC |
Method net.sf.jomic.tools.StringTools.arrayToString(double[]) concatenates strings using + in a loop |
|
Bug type SBSC_USE_STRINGBUFFER_CONCATENATION (click for details)
In class net.sf.jomic.tools.StringTools
In method net.sf.jomic.tools.StringTools.arrayToString(double[])
At StringTools.java:[line 319]
|
| SBSC |
Method net.sf.jomic.tools.StringTools.arrayToString(float[]) concatenates strings using + in a loop |
|
Bug type SBSC_USE_STRINGBUFFER_CONCATENATION (click for details)
In class net.sf.jomic.tools.StringTools
In method net.sf.jomic.tools.StringTools.arrayToString(float[])
At StringTools.java:[line 345]
|
| SBSC |
Method net.sf.jomic.tools.StringTools.arrayToString(int[]) concatenates strings using + in a loop |
|
Bug type SBSC_USE_STRINGBUFFER_CONCATENATION (click for details)
In class net.sf.jomic.tools.StringTools
In method net.sf.jomic.tools.StringTools.arrayToString(int[])
At StringTools.java:[line 358]
|
| SBSC |
Method net.sf.jomic.tools.StringTools.arrayToString(java.io.File[]) concatenates strings using + in a loop |
|
Bug type SBSC_USE_STRINGBUFFER_CONCATENATION (click for details)
In class net.sf.jomic.tools.StringTools
In method net.sf.jomic.tools.StringTools.arrayToString(java.io.File[])
At StringTools.java:[line 332]
|
| SBSC |
Method net.sf.jomic.tools.StringTools.arrayToString(String[]) concatenates strings using + in a loop |
|
Bug type SBSC_USE_STRINGBUFFER_CONCATENATION (click for details)
In class net.sf.jomic.tools.StringTools
In method net.sf.jomic.tools.StringTools.arrayToString(String[])
At StringTools.java:[line 371]
|
| SBSC |
Method net.sf.jomic.ui.AboutFrame.getLinks(String,String[]) concatenates strings using + in a loop |
|
Bug type SBSC_USE_STRINGBUFFER_CONCATENATION (click for details)
In class net.sf.jomic.ui.AboutFrame
In method net.sf.jomic.ui.AboutFrame.getLinks(String,String[])
At AboutFrame.java:[line 142]
|
| SIC |
Should net.sf.jomic.common.SplashScreen$SplashImagePane be a _static_ inner class? |
|
Bug type SIC_INNER_SHOULD_BE_STATIC (click for details)
In class net.sf.jomic.common.SplashScreen$SplashImagePane
|
| SIC |
Should net.sf.jomic.tools.ImageCacheRenderThread$ImageRenderTask be a _static_ inner class? |
|
Bug type SIC_INNER_SHOULD_BE_STATIC (click for details)
In class net.sf.jomic.tools.ImageCacheRenderThread$ImageRenderTask
|
| SIC |
Should net.sf.jomic.tools.ProgressFrame$CancelAction be a _static_ inner class? |
|
Bug type SIC_INNER_SHOULD_BE_STATIC (click for details)
In class net.sf.jomic.tools.ProgressFrame$CancelAction
|
| WMI |
Method net.sf.jomic.comic.ComicCache$TitleImageCache.getPdfTitleImage(java.io.File) makes inefficient use of keySet iterator instead of entrySet iterator |
|
Bug type WMI_WRONG_MAP_ITERATOR (click for details)
In class net.sf.jomic.comic.ComicCache$TitleImageCache
In method net.sf.jomic.comic.ComicCache$TitleImageCache.getPdfTitleImage(java.io.File)
At ComicCache.java:[line 425]
|
| WMI |
Method net.sf.jomic.tools.ExtractPdfImagesTask.getTargetImageNames(java.util.List) makes inefficient use of keySet iterator instead of entrySet iterator |
|
Bug type WMI_WRONG_MAP_ITERATOR (click for details)
In class net.sf.jomic.tools.ExtractPdfImagesTask
In method net.sf.jomic.tools.ExtractPdfImagesTask.getTargetImageNames(java.util.List)
At ExtractPdfImagesTask.java:[line 80]
|
| WMI |
Method net.sf.jomic.tools.ExtractPdfImagesTask.start() makes inefficient use of keySet iterator instead of entrySet iterator |
|
Bug type WMI_WRONG_MAP_ITERATOR (click for details)
In class net.sf.jomic.tools.ExtractPdfImagesTask
In method net.sf.jomic.tools.ExtractPdfImagesTask.start()
At ExtractPdfImagesTask.java:[line 138]
|
| WMI |
Method net.sf.jomic.tools.FileArchive.extractPdf(java.io.File,String[],ProgressFrame,long) makes inefficient use of keySet iterator instead of entrySet iterator |
|
Bug type WMI_WRONG_MAP_ITERATOR (click for details)
In class net.sf.jomic.tools.FileArchive
In method net.sf.jomic.tools.FileArchive.extractPdf(java.io.File,String[],ProgressFrame,long)
At FileArchive.java:[line 293]
|
| WMI |
Method net.sf.jomic.tools.FileArchive.listPdf() makes inefficient use of keySet iterator instead of entrySet iterator |
|
Bug type WMI_WRONG_MAP_ITERATOR (click for details)
In class net.sf.jomic.tools.FileArchive
In method net.sf.jomic.tools.FileArchive.listPdf()
At FileArchive.java:[line 464]
|
| WMI |
Method net.sf.jomic.ui.CreateComicWorker.construct() makes inefficient use of keySet iterator instead of entrySet iterator |
|
Bug type WMI_WRONG_MAP_ITERATOR (click for details)
In class net.sf.jomic.ui.CreateComicWorker
In method net.sf.jomic.ui.CreateComicWorker.construct()
At CreateComicWorker.java:[line 145]
|
| BC |
Unchecked/unconfirmed cast from java.awt.event.ActionEvent to class net.roydesign.event.ApplicationEvent in net.sf.jomic.JomicMacOSX.actionPerformed(java.awt.event.ActionEvent) |
|
Bug type BC_UNCONFIRMED_CAST (click for details)
In class net.sf.jomic.JomicMacOSX
In method net.sf.jomic.JomicMacOSX.actionPerformed(java.awt.event.ActionEvent)
At JomicMacOSX.java:[line 156]
In class java.awt.event.ActionEvent
In class net.roydesign.event.ApplicationEvent
|
| BC |
Unchecked/unconfirmed cast from java.awt.event.ActionEvent to class net.roydesign.event.ApplicationEvent in net.sf.jomic.ui.JomicApplication.actionPerformed(java.awt.event.ActionEvent) |
|
Bug type BC_UNCONFIRMED_CAST (click for details)
In class net.sf.jomic.ui.JomicApplication
In method net.sf.jomic.ui.JomicApplication.actionPerformed(java.awt.event.ActionEvent)
At JomicApplication.java:[line 154]
In class java.awt.event.ActionEvent
In class net.roydesign.event.ApplicationEvent
|
| CD |
Class net.sf.jomic.comic.ComicView has a circular dependency with other classes. |
|
Bug type CD_CIRCULAR_DEPENDENCY (click for details)
In class net.sf.jomic.comic.ComicView
In class net.sf.jomic.ui.FullScreenViewer
|
| CD |
Class net.sf.jomic.common.JomicTools has a circular dependency with other classes. |
|
Bug type CD_CIRCULAR_DEPENDENCY (click for details)
In class net.sf.jomic.common.JomicTools
In class net.sf.jomic.tools.FileTools
In class net.sf.jomic.tools.FileArchive
In class net.sf.jomic.tools.ProgressFrame
|
| CD |
Class net.sf.jomic.common.Settings has a circular dependency with other classes. |
|
Bug type CD_CIRCULAR_DEPENDENCY (click for details)
In class net.sf.jomic.common.Settings
In class net.sf.jomic.tools.ImageTools
|
| CD |
Class net.sf.jomic.tools.CopyFileTask has a circular dependency with other classes. |
|
Bug type CD_CIRCULAR_DEPENDENCY (click for details)
In class net.sf.jomic.tools.CopyFileTask
In class net.sf.jomic.tools.FileTools
|
| CD |
Class net.sf.jomic.tools.ImageCacheRenderThread has a circular dependency with other classes. |
|
Bug type CD_CIRCULAR_DEPENDENCY (click for details)
In class net.sf.jomic.tools.ImageCacheRenderThread
In class net.sf.jomic.tools.ImageCache
|
| CD |
Class net.sf.jomic.ui.JomicApplication has a circular dependency with other classes. |
|
Bug type CD_CIRCULAR_DEPENDENCY (click for details)
In class net.sf.jomic.ui.JomicApplication
In class net.sf.jomic.ui.CreateComicWorker
|
| CD |
Class net.sf.jomic.ui.JomicApplication has a circular dependency with other classes. |
|
Bug type CD_CIRCULAR_DEPENDENCY (click for details)
In class net.sf.jomic.ui.JomicApplication
In class net.sf.jomic.ui.FullScreenViewer
In class net.sf.jomic.ui.JomicFrame
|
| CD |
Class net.sf.jomic.ui.JomicApplication has a circular dependency with other classes. |
|
Bug type CD_CIRCULAR_DEPENDENCY (click for details)
In class net.sf.jomic.ui.JomicApplication
In class net.sf.jomic.ui.JomicFrame
In class net.sf.jomic.ui.JomicMenuBar
|
| CD |
Class net.sf.jomic.ui.JomicFrame has a circular dependency with other classes. |
|
Bug type CD_CIRCULAR_DEPENDENCY (click for details)
In class net.sf.jomic.ui.JomicFrame
In class net.sf.jomic.ui.GoToPageDialog
|
| REC |
Method net.sf.jomic.ui.CreateComicWorker.construct() catches Exception, but Exception is not thrown in the try block and RuntimeException is not explicitly caught |
|
Bug type REC_CATCH_EXCEPTION (click for details)
In class net.sf.jomic.ui.CreateComicWorker
In method net.sf.jomic.ui.CreateComicWorker.construct()
At CreateComicWorker.java:[line 172]
|
| REC |
Method net.sf.jomic.ui.JomicApplication.checkForUnrar() catches Exception, but Exception is not thrown in the try block and RuntimeException is not explicitly caught |
|
Bug type REC_CATCH_EXCEPTION (click for details)
In class net.sf.jomic.ui.JomicApplication
In method net.sf.jomic.ui.JomicApplication.checkForUnrar()
At JomicApplication.java:[line 446]
|
| SA |
Self assignment of local variable in net.sf.jomic.tools.ThresholdDifferenceBlurOpImage.byteLoop(javax.media.jai.RasterAccessor,javax.media.jai.RasterAccessor) |
|
Bug type SA_LOCAL_SELF_ASSIGNMENT (click for details)
In class net.sf.jomic.tools.ThresholdDifferenceBlurOpImage
In method net.sf.jomic.tools.ThresholdDifferenceBlurOpImage.byteLoop(javax.media.jai.RasterAccessor,javax.media.jai.RasterAccessor)
At ThresholdDifferenceBlurOpImage.java:[line 171]
|
| SA |
Self assignment of local variable in net.sf.jomic.tools.ThresholdDifferenceBlurOpImage.byteLoop(javax.media.jai.RasterAccessor,javax.media.jai.RasterAccessor) |
|
Bug type SA_LOCAL_SELF_ASSIGNMENT (click for details)
In class net.sf.jomic.tools.ThresholdDifferenceBlurOpImage
In method net.sf.jomic.tools.ThresholdDifferenceBlurOpImage.byteLoop(javax.media.jai.RasterAccessor,javax.media.jai.RasterAccessor)
At ThresholdDifferenceBlurOpImage.java:[line 221]
|
This cast is unchecked, and not all instances of the type casted from can be cast to
the type it is being cast to. Ensure that your program logic ensures that this
cast will not fail.
This class has a circular dependency with other classes. This makes building these classes
difficult, as each is dependent on the other to build correctly. Consider using interfaces
to break the hard dependency.
Returning a reference to a mutable object value stored in one of the object's fields
exposes the internal representation of the object.
If instances
are accessed by untrusted code, and unchecked changes to
the mutable object would compromise security or other
important properties, you will need to do something different.
Returning a new copy of the object is better approach in many situations.
This code stores a reference to an externally mutable object into the
internal representation of the object.
If instances
are accessed by untrusted code, and unchecked changes to
the mutable object would compromise security or other
important properties, you will need to do something different.
Storing a copy of the object is better approach in many situations.
This method unconditionally invokes itself. This would seem to indicate
an infinite recursive loop that will result in a stack overflow.
The fields of this class appear to be accessed inconsistently with respect
to synchronization. This bug report indicates that the bug pattern detector
judged that
- The class contains a mix of locked and unlocked accesses,
- At least one locked access was performed by one of the class's own methods, and
- The number of unsynchronized field accesses (reads and writes) was no more than
one third of all accesses, with writes being weighed twice as high as reads
A typical bug matching this bug pattern is forgetting to synchronize
one of the methods in a class that is intended to be thread-safe.
You can select the nodes labeled "Unsynchronized access" to show the
code locations where the detector believed that a field was accessed
without synchronization.
Note that there are various sources of inaccuracy in this detector;
for example, the detector cannot statically detect all situations in which
a lock is held. Also, even when the detector is accurate in
distinguishing locked vs. unlocked accesses, the code in question may still
be correct.
This description refers to the "IS2" version of the pattern detector,
which has more accurate ways of detecting locked vs. unlocked accesses
than the older "IS" detector.
A reference value dereferenced here might be null at runtime.
This may lead to a NullPointerException when the code is executed.
This method uses a try-catch block that catches Exception objects, but Exception is not
thrown within the try block, and RuntimeException is not explicitly caught. It is a common bug pattern to
say try { ... } catch (Exception e) { something } as a shorthand for catching a number of types of exception
each of whose catch blocks is identical, but this construct also accidentally catches RuntimeException as well,
masking potential bugs.
This method ignores the return value of one of the variants of
java.io.InputStream.read() which can return multiple bytes.
If the return value is not checked, the caller will not be able to correctly
handle the case where fewer bytes were read than the caller requested.
This is a particularly insidious kind of bug, because in many programs,
reads from input streams usually do read the full amount of data requested,
causing the program to fail only sporadically.
This method contains a self assignment of a local variable; e.g.
public void foo() {
int x = 3;
x = x;
}
Such assignments are useless, and may indicate a logic error or typo.
The method seems to be building a String using concatenation in a loop.
In each iteration, the String is converted to a StringBuffer/StringBuilder,
appended to, and converted back to a String.
This can lead to a cost quadratic in the number of iterations,
as the growing string is recopied in each iteration.
Better performance can be obtained by using
a StringBuffer (or StringBuilder in Java 1.5) explicitly.
For example:
// This is bad
String s = "";
for (int i = 0; i < field.length; ++i) {
s = s + field[i];
}
// This is better
StringBuffer buf = new StringBuffer();
for (int i = 0; i < field.length; ++i) {
buf.append(field[i]);
}
String s = buf.toString();
The constructor starts a thread. This is likely to be wrong if
the class is ever extended/subclassed, since the thread will be started
before the subclass constructor is started.
This Serializable class defines a non-primitive instance field which is neither transient,
Serializable, or java.lang.Object, and does not appear to implement
the Externalizable interface or the
readObject() and writeObject() methods.
Objects of this class will not be deserialized correctly if a non-Serializable
object is stored in this field.
This class is an inner class, but does not use its embedded reference
to the object which created it. This reference makes the instances
of the class larger, and may keep the reference to the creator object
alive longer than necessary. If possible, the class should be
be made static.
This class implements the Serializable interface, but does
not define a serialVersionUID field.
A change as simple as adding a reference to a .class object
will add synthetic fields to the class,
which will unfortunately change the implicit
serialVersionUID (e.g., adding a reference to String.class
will generate a static field class$java$lang$String).
Also, different source code to bytecode compilers may use different
naming conventions for synthetic variables generated for
references to class objects or inner classes.
To ensure interoperability of Serializable across versions,
consider adding an explicit serialVersionUID.
This constructor reads a field which has not yet been assigned a value.
This is often caused when the programmer mistakenly uses the field instead
of one of the constructor's parameters.
This method accesses the value of a Map entry, using a key that was retrieved from
a keySet iterator. It is more efficient to use an iterator on the entrySet of the map, to avoid the
Map.get(key) lookup.