The following document contains the results of FindBugs Report
FindBugs Version is 1.3.9
Threshold is medium
Effort is min
Bug | Category | Details | Line | Priority |
---|---|---|---|---|
Method liquibase.change.ChangeFactory$1.compare(Class, Class) invokes inefficient new Integer(int) constructor; use Integer.valueOf(int) instead | PERFORMANCE | DM_NUMBER_CTOR | 62 | Medium |
Bug | Category | Details | Line | Priority |
---|---|---|---|---|
liquibase.change.ColumnConfig.getDefaultValueDate() may expose internal representation by returning ColumnConfig.defaultValueDate | MALICIOUS_CODE | EI_EXPOSE_REP | 235 | Medium |
liquibase.change.ColumnConfig.getValueDate() may expose internal representation by returning ColumnConfig.valueDate | MALICIOUS_CODE | EI_EXPOSE_REP | 155 | Medium |
liquibase.change.ColumnConfig.setDefaultValueDate(Date) may expose internal representation by storing an externally mutable object into ColumnConfig.defaultValueDate | MALICIOUS_CODE | EI_EXPOSE_REP2 | 254 | Medium |
liquibase.change.ColumnConfig.setValueDate(Date) may expose internal representation by storing an externally mutable object into ColumnConfig.valueDate | MALICIOUS_CODE | EI_EXPOSE_REP2 | 159 | Medium |
Bug | Category | Details | Line | Priority |
---|---|---|---|---|
Unchecked/unconfirmed cast from liquibase.change.ColumnConfig to liquibase.change.core.LoadDataColumnConfig in liquibase.change.core.LoadDataChange.addColumn(ColumnConfig) | STYLE | BC_UNCONFIRMED_CAST | 91 | Medium |
Bug | Category | Details | Line | Priority |
---|---|---|---|---|
Exception is caught when Exception is not thrown in liquibase.changelog.ChangeSet.execute(DatabaseChangeLog, Database) | STYLE | REC_CATCH_EXCEPTION | 351 | Medium |
Bug | Category | Details | Line | Priority |
---|---|---|---|---|
Unread field: liquibase.changelog.filter.ShouldRunChangeSetFilter.database | PERFORMANCE | URF_UNREAD_FIELD | 20 | Medium |
Bug | Category | Details | Line | Priority |
---|---|---|---|---|
Dead store to schemaName in liquibase.database.AbstractDatabase.escapeColumnName(String, String, String) | STYLE | DLS_DEAD_LOCAL_STORE | 857 | High |
Bug | Category | Details | Line | Priority |
---|---|---|---|---|
Method liquibase.database.DatabaseFactory$1.compare(Database, Database) invokes inefficient new Integer(int) constructor; use Integer.valueOf(int) instead | PERFORMANCE | DM_NUMBER_CTOR | 61 | Medium |
Bug | Category | Details | Line | Priority |
---|---|---|---|---|
Method liquibase.database.core.DerbyDatabase.getDateLiteral(String) concatenates strings using + in a loop | PERFORMANCE | SBSC_USE_STRINGBUFFER_CONCATENATION | 90 | Medium |
Bug | Category | Details | Line | Priority |
---|---|---|---|---|
Possible null pointer dereference of Index.unique on path that might be infeasible in liquibase.database.structure.Index.equals(Object) | STYLE | NP_NULL_ON_SOME_PATH_MIGHT_BE_INFEASIBLE | 119 | Medium |
Bug | Category | Details | Line | Priority |
---|---|---|---|---|
Method liquibase.database.structure.View.toString() concatenates strings using + in a loop | PERFORMANCE | SBSC_USE_STRINGBUFFER_CONCATENATION | 90 | Medium |
Bug | Category | Details | Line | Priority |
---|---|---|---|---|
liquibase.dbdoc.ChangeLogWriter.writeChangeLog(String, String) ignores exceptional return value of java.io.File.mkdirs() | BAD_PRACTICE | RV_RETURN_VALUE_IGNORED_BAD_PRACTICE | 37 | Medium |
Bug | Category | Details | Line | Priority |
---|---|---|---|---|
new liquibase.dbdoc.HTMLListWriter(String, String, String, File) ignores exceptional return value of java.io.File.mkdir() | BAD_PRACTICE | RV_RETURN_VALUE_IGNORED_BAD_PRACTICE | 19 | Medium |
Bug | Category | Details | Line | Priority |
---|---|---|---|---|
new liquibase.dbdoc.HTMLWriter(File, Database) ignores exceptional return value of java.io.File.mkdirs() | BAD_PRACTICE | RV_RETURN_VALUE_IGNORED_BAD_PRACTICE | 26 | Medium |
Bug | Category | Details | Line | Priority |
---|---|---|---|---|
Exception is caught when Exception is not thrown in liquibase.diff.DiffResult.addInsertDataChanges(List, String) | STYLE | REC_CATCH_EXCEPTION | 1143 | Medium |
liquibase.diff.DiffResult.addInsertDataChanges(List, String) ignores exceptional return value of java.io.File.mkdirs() | BAD_PRACTICE | RV_RETURN_VALUE_IGNORED_BAD_PRACTICE | 1038 | Medium |
liquibase.diff.DiffResult.printChangeLog(String, Database, ChangeLogSerializer) ignores result of java.io.BufferedReader.skip(long) | BAD_PRACTICE | SR_NOT_CHECKED | 470 | Medium |
Bug | Category | Details | Line | Priority |
---|---|---|---|---|
Method liquibase.exception.MigrationFailedException.getMessage() concatenates strings using + in a loop | PERFORMANCE | SBSC_USE_STRINGBUFFER_CONCATENATION | 37 | Medium |
Bug | Category | Details | Line | Priority |
---|---|---|---|---|
Dead store to logger in liquibase.integration.ant.BaseLiquibaseTask$LogRedirector.registerHandler(Handler) | STYLE | DLS_DEAD_LOCAL_STORE | 294 | Medium |
Bug | Category | Details | Line | Priority |
---|---|---|---|---|
Method liquibase.integration.commandline.CommandLineUtils.createDatabaseObject(ClassLoader, String, String, String, String, String, String, String) may fail to clean up java.io.InputStream | EXPERIMENTAL | OBL_UNSATISFIED_OBLIGATION | 73 | Medium |
liquibase.integration.commandline.CommandLineUtils.createDatabaseObject(ClassLoader, String, String, String, String, String, String, String) may fail to close stream | BAD_PRACTICE | OS_OPEN_STREAM | 73 | Medium |
Exception is caught when Exception is not thrown in liquibase.integration.commandline.CommandLineUtils.createDatabaseObject(ClassLoader, String, String, String, String, String, String, String) | STYLE | REC_CATCH_EXCEPTION | 96 | Medium |
Bug | Category | Details | Line | Priority |
---|---|---|---|---|
Exception is caught when Exception is not thrown in liquibase.integration.commandline.Main.parseOptions(String[]) | STYLE | REC_CATCH_EXCEPTION | 449 | Medium |
Exception is caught when Exception is not thrown in liquibase.integration.commandline.Main.parsePropertiesFile(InputStream) | STYLE | REC_CATCH_EXCEPTION | 274 | Medium |
Bug | Category | Details | Line | Priority |
---|---|---|---|---|
Dereference of the result of readLine() without nullcheck in liquibase.parser.core.formattedsql.FormattedSqlChangeLogParser.supports(String, ResourceAccessor) | STYLE | NP_DEREFERENCE_OF_READLINE_VALUE | 31 | Medium |
Bug | Category | Details | Line | Priority |
---|---|---|---|---|
Exception is caught when Exception is not thrown in liquibase.parser.core.xml.XMLChangeLogSAXHandler.endElement(String, String, String) | STYLE | REC_CATCH_EXCEPTION | 600 | Medium |
Exception is caught when Exception is not thrown in liquibase.parser.core.xml.XMLChangeLogSAXHandler.startElement(String, String, String, Attributes) | STYLE | REC_CATCH_EXCEPTION | 434 | Medium |
liquibase.parser.core.xml.XMLChangeLogSAXHandler.extractZipFile(URL) ignores exceptional return value of java.io.File.delete() | BAD_PRACTICE | RV_RETURN_VALUE_IGNORED_BAD_PRACTICE | 704 | Medium |
liquibase.parser.core.xml.XMLChangeLogSAXHandler.extractZipFile(URL) ignores exceptional return value of java.io.File.mkdir() | BAD_PRACTICE | RV_RETURN_VALUE_IGNORED_BAD_PRACTICE | 705 | Medium |
liquibase.parser.core.xml.XMLChangeLogSAXHandler.extractZipFile(URL) ignores exceptional return value of java.io.File.mkdirs() | BAD_PRACTICE | RV_RETURN_VALUE_IGNORED_BAD_PRACTICE | 713 | Medium |
Bug | Category | Details | Line | Priority |
---|---|---|---|---|
Exception is caught when Exception is not thrown in liquibase.precondition.CustomPreconditionWrapper.check(Database, DatabaseChangeLog, ChangeSet) | STYLE | REC_CATCH_EXCEPTION | 71 | Medium |
Bug | Category | Details | Line | Priority |
---|---|---|---|---|
Dead store to connection in liquibase.precondition.core.SqlPrecondition.check(Database, DatabaseChangeLog, ChangeSet) | STYLE | DLS_DEAD_LOCAL_STORE | 50 | Medium |
Bug | Category | Details | Line | Priority |
---|---|---|---|---|
liquibase.resource.CompositeResourceAccessor.toClassLoader() creates a liquibase.resource.CompositeResourceAccessor$CompositeClassLoader classloader, which should be performed within a doPrivileged block | BAD_PRACTICE | DP_CREATE_CLASSLOADER_INSIDE_DO_PRIVILEGED | 84 | Medium |
Bug | Category | Details | Line | Priority |
---|---|---|---|---|
liquibase.resource.FileSystemResourceAccessor.toClassLoader() creates a java.net.URLClassLoader classloader, which should be performed within a doPrivileged block | BAD_PRACTICE | DP_CREATE_CLASSLOADER_INSIDE_DO_PRIVILEGED | 99 | Medium |
Bug | Category | Details | Line | Priority |
---|---|---|---|---|
Exception is caught when Exception is not thrown in liquibase.serializer.core.string.StringChangeLogSerializer.serializeObject(Object, int) | STYLE | REC_CATCH_EXCEPTION | 106 | Medium |
Method liquibase.serializer.core.string.StringChangeLogSerializer.serializeObject(Collection, int) concatenates strings using + in a loop | PERFORMANCE | SBSC_USE_STRINGBUFFER_CONCATENATION | 126 | Medium |
Method liquibase.serializer.core.string.StringChangeLogSerializer.serializeObject(Map, int) concatenates strings using + in a loop | PERFORMANCE | SBSC_USE_STRINGBUFFER_CONCATENATION | 143 | Medium |
Bug | Category | Details | Line | Priority |
---|---|---|---|---|
Exception is caught when Exception is not thrown in liquibase.serializer.core.xml.XMLChangeLogSerializer.createNode(Change) | STYLE | REC_CATCH_EXCEPTION | 218 | Medium |
Bug | Category | Details | Line | Priority |
---|---|---|---|---|
liquibase.snapshot.jvm.JdbcDatabaseSnapshotGenerator.getColumn(String, String, String, Database) might ignore java.sql.SQLException | BAD_PRACTICE | DE_MIGHT_IGNORE | 177 | Medium |
liquibase.snapshot.jvm.JdbcDatabaseSnapshotGenerator.getTable(String, String, Database) might ignore java.sql.SQLException | BAD_PRACTICE | DE_MIGHT_IGNORE | 151 | Medium |
Method liquibase.snapshot.jvm.JdbcDatabaseSnapshotGenerator.readIndexes(DatabaseSnapshot, String, DatabaseMetaData) passes a nonconstant String to an execute method on an SQL statement | SECURITY | SQL_NONCONSTANT_STRING_PASSED_TO_EXECUTE | 721 | High |
Bug | Category | Details | Line | Priority |
---|---|---|---|---|
Load of known null value in liquibase.snapshot.jvm.OracleDatabaseSnapshotGenerator.findIntegerColumns(DatabaseSnapshot, String) | STYLE | NP_LOAD_OF_KNOWN_NULL_VALUE | 229 | Medium |
Load of known null value in liquibase.snapshot.jvm.OracleDatabaseSnapshotGenerator.getAdditionalForeignKeys(String, Database) | STYLE | NP_LOAD_OF_KNOWN_NULL_VALUE | 281 | Medium |
Load of known null value in liquibase.snapshot.jvm.OracleDatabaseSnapshotGenerator.readColumns(DatabaseSnapshot, String, DatabaseMetaData) | STYLE | NP_LOAD_OF_KNOWN_NULL_VALUE | 183 | Medium |
Load of known null value in liquibase.snapshot.jvm.OracleDatabaseSnapshotGenerator.readPrimaryKeys(DatabaseSnapshot, String, DatabaseMetaData) | STYLE | NP_LOAD_OF_KNOWN_NULL_VALUE | 438 | Medium |
Load of known null value in liquibase.snapshot.jvm.OracleDatabaseSnapshotGenerator.readUniqueConstraints(DatabaseSnapshot, String, DatabaseMetaData) | STYLE | NP_LOAD_OF_KNOWN_NULL_VALUE | 95 | Medium |
Method liquibase.snapshot.jvm.OracleDatabaseSnapshotGenerator.findIntegerColumns(DatabaseSnapshot, String) passes a nonconstant String to an execute method on an SQL statement | SECURITY | SQL_NONCONSTANT_STRING_PASSED_TO_EXECUTE | 235 | High |
Method liquibase.snapshot.jvm.OracleDatabaseSnapshotGenerator.getAdditionalForeignKeys(String, Database) passes a nonconstant String to an execute method on an SQL statement | SECURITY | SQL_NONCONSTANT_STRING_PASSED_TO_EXECUTE | 296 | High |
Method liquibase.snapshot.jvm.OracleDatabaseSnapshotGenerator.readColumns(DatabaseSnapshot, String, DatabaseMetaData) passes a nonconstant String to an execute method on an SQL statement | SECURITY | SQL_NONCONSTANT_STRING_PASSED_TO_EXECUTE | 187 | High |
Method liquibase.snapshot.jvm.OracleDatabaseSnapshotGenerator.readIndexes(DatabaseSnapshot, String, DatabaseMetaData) passes a nonconstant String to an execute method on an SQL statement | SECURITY | SQL_NONCONSTANT_STRING_PASSED_TO_EXECUTE | 339 | High |
Method liquibase.snapshot.jvm.OracleDatabaseSnapshotGenerator.readPrimaryKeys(DatabaseSnapshot, String, DatabaseMetaData) passes a nonconstant String to an execute method on an SQL statement | SECURITY | SQL_NONCONSTANT_STRING_PASSED_TO_EXECUTE | 446 | High |
A prepared statement is generated from a nonconstant String at liquibase.snapshot.jvm.OracleDatabaseSnapshotGenerator.readUniqueConstraints(DatabaseSnapshot, String, DatabaseMetaData) | SECURITY | SQL_PREPARED_STATEMENT_GENERATED_FROM_NONCONSTANT_STRING | 100 | High |
Bug | Category | Details | Line | Priority |
---|---|---|---|---|
A prepared statement is generated from a nonconstant String at liquibase.snapshot.jvm.PostgresDatabaseSnapshotGenerator.getColumnsForUniqueConstraint(Database, long, Array, UniqueConstraint) | SECURITY | SQL_PREPARED_STATEMENT_GENERATED_FROM_NONCONSTANT_STRING | 123 | Medium |
Bug | Category | Details | Line | Priority |
---|---|---|---|---|
Method liquibase.sqlgenerator.SqlGeneratorComparator.compare(SqlGenerator, SqlGenerator) invokes inefficient new Integer(int) constructor; use Integer.valueOf(int) instead | PERFORMANCE | DM_NUMBER_CTOR | 7 | Medium |
liquibase.sqlgenerator.SqlGeneratorComparator implements Comparator but not Serializable | BAD_PRACTICE | SE_COMPARATOR_SHOULD_BE_SERIALIZABLE | 5 | Medium |
Bug | Category | Details | Line | Priority |
---|---|---|---|---|
Unread field: liquibase.statement.core.CommentStatement.MAX_LENGTH; should this field be static? | PERFORMANCE | SS_SHOULD_BE_STATIC | 7 | Medium |
Bug | Category | Details | Line | Priority |
---|---|---|---|---|
liquibase.statement.core.CreateIndexStatement.getColumns() may expose internal representation by returning CreateIndexStatement.columns | MALICIOUS_CODE | EI_EXPOSE_REP | 40 | Medium |
Bug | Category | Details | Line | Priority |
---|---|---|---|---|
liquibase.statement.core.SelectFromDatabaseChangeLogLockStatement.getColumnsToSelect() may expose internal representation by returning SelectFromDatabaseChangeLogLockStatement.columnsToSelect | MALICIOUS_CODE | EI_EXPOSE_REP | 14 | Medium |
Bug | Category | Details | Line | Priority |
---|---|---|---|---|
liquibase.statement.core.SelectFromDatabaseChangeLogStatement.getColumnsToSelect() may expose internal representation by returning SelectFromDatabaseChangeLogStatement.columnsToSelect | MALICIOUS_CODE | EI_EXPOSE_REP | 21 | Medium |
liquibase.statement.core.SelectFromDatabaseChangeLogStatement.getOrderByColumns() may expose internal representation by returning SelectFromDatabaseChangeLogStatement.orderByColumns | MALICIOUS_CODE | EI_EXPOSE_REP | 29 | Medium |
Bug | Category | Details | Line | Priority |
---|---|---|---|---|
Method liquibase.util.StringUtils.repeat(String, int) concatenates strings using + in a loop | PERFORMANCE | SBSC_USE_STRINGBUFFER_CONCATENATION | 125 | Medium |
Bug | Category | Details | Line | Priority |
---|---|---|---|---|
The class name liquibase.util.csv.CSVReader shadows the simple name of the superclass liquibase.util.csv.opencsv.CSVReader | BAD_PRACTICE | NM_SAME_SIMPLE_NAME_AS_SUPERCLASS | 7 | High |
Bug | Category | Details | Line | Priority |
---|---|---|---|---|
The class name liquibase.util.csv.CSVWriter shadows the simple name of the superclass liquibase.util.csv.opencsv.CSVWriter | BAD_PRACTICE | NM_SAME_SIMPLE_NAME_AS_SUPERCLASS | 12 | High |
Bug | Category | Details | Line | Priority |
---|---|---|---|---|
liquibase.util.csv.opencsv.bean.ColumnPositionMappingStrategy.getColumnMapping() may expose internal representation by returning ColumnPositionMappingStrategy.columnMapping | MALICIOUS_CODE | EI_EXPOSE_REP | 33 | Medium |
liquibase.util.csv.opencsv.bean.ColumnPositionMappingStrategy.setColumnMapping(String[]) may expose internal representation by storing an externally mutable object into ColumnPositionMappingStrategy.columnMapping | MALICIOUS_CODE | EI_EXPOSE_REP2 | 37 | Medium |
liquibase.util.csv.opencsv.bean.ColumnPositionMappingStrategy.captureHeader(CSVReader) doesn't override method in superclass because parameter type liquibase.util.csv.CSVReader doesn't match superclass parameter type liquibase.util.csv.opencsv.CSVReader | CORRECTNESS | NM_WRONG_PACKAGE | 25 | High |
Bug | Category | Details | Line | Priority |
---|---|---|---|---|
Method liquibase.util.file.FilenameUtils.<static initializer>() uses the same code for two branches | STYLE | DB_DUPLICATE_BRANCHES | 127 | Medium |
Method liquibase.util.file.FilenameUtils.<static initializer>() invokes inefficient new Character(char) constructor; use Character.valueOf(char) instead | PERFORMANCE | DM_NUMBER_CTOR | 103 | Medium |
Comparison of String parameter using == or != in liquibase.util.file.FilenameUtils.equals(String, String, boolean, IOCase) | BAD_PRACTICE | ES_COMPARING_PARAMETER_STRING_WITH_EQ | 1002 | High |
Repeated conditional test in liquibase.util.file.FilenameUtils.isSeparator(char) | CORRECTNESS | RpC_REPEATED_CONDITIONAL_TEST | 159 | High |