Home > Krazy Code Checker > bundled-apps > koffice > kexi
krazy2 Analysis
Checkers Run = 41
Files Processed = 781
Total Issues = 706
...as of March 17 2010 03:21:47 CET
- For File Type c++
- Check for TRUE and FALSE macros [captruefalse]...okay!
- Check for an acceptable copyright [copyright]...OOPS! 1 issues found!
- kexiutils/transliteration_table.cpp: missing tags
All source files must contain a copyright header which identifies the copyright holder(s) together with a e-mail address that can be used to reach the copyright holder. One copyright holder per line, with real email addresses please. For details regarding KDE's licensing policy please visit http://techbase.kde.org/Policies/Licensing_Policy. A typical copyright looks like: "Copyright 2002,2005-2006 Joe Hacker
" - Check for cpp macros and usage [cpp]...OOPS! 9 issues found!
- webforms/model/DataProvider.cpp: Guard #warning with '#ifdef __GNUC__' line# 37,82 (2)
- main/KexiMainWindow_p.h: Unknown HAVE_FOO macro line# 579[[HAVE_KNEWSTUFF]],1109[[HAVE_KNEWSTUFF]] (2)
- main/kexinewstuff.cpp: Unknown HAVE_FOO macro line# 20[[HAVE_KNEWSTUFF]] (1)
- main/kexinewstuff.h: Unknown HAVE_FOO macro line# 20[[HAVE_KNEWSTUFF]] (1)
- main/KexiMainWindow.cpp: Unknown HAVE_FOO macro line# 131[[HAVE_KNEWSTUFF]],641[[HAVE_KNEWSTUFF]],5206[[HAVE_KNEWSTUFF]] (3)
C++ source files and non-installed headers should NOT use cpp conditionals that check for a certain O/S or compiler; instead use CMake HAVE_foo macros. We want to check for features discovered during CMake time rather than for a specific O/S.
- Check for code that should be considered crashy. [crashy]...OOPS! 16 issues found!
- formeditor/widgetfactory.cpp: line# 137,147 (2)
- formeditor/form.cpp: line# 2629,2645 (2)
- plugins/forms/kexiformmanager.cpp: line# 528 (1)
- plugins/forms/kexiformview.cpp: line# 306 (1)
- plugins/importexport/csv/kexicsvimportdialog.cpp: line# 1682 (1)
- main/startup/KexiConnSelector.cpp: line# 386,413 (2)
- main/startup/KexiStartup.cpp: line# 927 (1)
- main/KexiMainWindow.cpp: line# 1539,1635,3028,3092,4518,4720 (6)
Looks for not using QPointers when showing modal dialogs via exec(), as discussed in http://www.kdedevelopers.org/node/3919
- Check single-char QString operations for efficiency [doublequote_chars]...OOPS! 180 issues found!
- widget/tableview/kexicomboboxpopup.cpp: line# 228 (1)
- widget/tableview/kexiinputtableedit.cpp: line# 87 (1)
- widget/tableview/kexidataawareobjectiface.cpp: line# 1059,1852 (2)
- widget/tableview/kexitextformatter.cpp: line# 105 (1)
- widget/tableview/kexidatetimetableedit.cpp: line# 68,102,140 (3)
- widget/relations/KexiRelationsConnection.cpp: line# 314,318 (2)
- widget/relations/KexiRelationsTableContainer_p.cpp: line# 196 (1)
- widget/relations/KexiRelationsTableContainer_p.cpp: starts/endsWith issues line# 238 (1)
- widget/utils/kexidatetimeformatter.cpp: line# 39,61,68,313 (4)
- widget/utils/kexirecordnavigator.cpp: line# 273,375 (2)
- widget/pixmapcollection.cpp: line# 61,78 (2)
- widget/KexiProjectListView.cpp: line# 661 (1)
- widget/KexiProjectListView.cpp: starts/endsWith issues line# 842 (1)
- core/kexi.cpp: line# 209,214,242,259 (4)
- core/kexi.cpp: replace issues line# 119,319 (2)
- core/KexiView.cpp: replace issues line# 195 (1)
- core/kexipartmanager.cpp: replace issues line# 173 (1)
- core/kexipartmanager.cpp: split issues line# 74 (1)
- core/kexitemplateloader.cpp: line# 113 (1)
- core/kexipart.cpp: line# 68,72 (2)
- core/kexipart.cpp: starts/endsWith issues line# 430 (1)
- core/kexiproject.cpp: line# 1022,1048 (2)
- core/kexiproject.cpp: replace issues line# 1092 (1)
- migration/txt/txtmigrate.cpp: split issues line# 95,112 (2)
- migration/importwizard.cpp: replace issues line# 781 (1)
- kexidb/parser/parser_p.cpp: line# 96,98 (2)
- kexidb/drivers/pqxx/pqxxconnection.cpp: line# 176 (1)
- kexidb/drivers/sqlite/sqliteconnection.cpp: line# 258 (1)
- kexidb/drivers/sqlite/sqlitedriver.cpp: line# 114,119 (2)
- kexidb/drivers/oracle/oracledriver.cpp: replace issues line# 134,136 (2)
- kexidb/drivers/oracle/oraclecursor.cpp: line# 75 (1)
- kexidb/drivers/sybase/sybaseconnection_p.cpp: replace issues line# 273 (1)
- kexidb/drivers/sybase/sybasedriver.cpp: replace issues line# 154,163 (2)
- kexidb/drivers/odbc/odbcdriver.cpp: split issues line# 412 (1)
- kexidb/connection.cpp: line# 1342,1366,1391,1472,1608,2575,3005,3006,3270,3273,3297,3303,3413,3414,3422,3463,3538,3543 (18)
- kexidb/tableschema.cpp: line# 329 (1)
- kexidb/field.cpp: line# 604 (1)
- kexidb/indexschema.cpp: line# 153 (1)
- kexidb/preparedstatement.cpp: line# 102 (1)
- kexidb/object.cpp: line# 107 (1)
- kexidb/queryschema.cpp: line# 432,443,550,720,801,804,818,854,870,886,1205,1206,1417,1433,1655,1697,1847 (17)
- kexidb/expression.cpp: line# 175,271,433,472,554,556,558,560,561,563,769,792,899 (13)
- kexidb/utils.cpp: line# 505,536 (2)
- kexidb/connectiondata.cpp: line# 106,109 (2)
- kexidb/RecordData.cpp: line# 37 (1)
- kexidb/drivermanager.cpp: split issues line# 120 (1)
- kexidb/fieldlist.cpp: line# 248 (1)
- formeditor/kexiactionselectiondialog.cpp: replace issues line# 145,276 (2)
- formeditor/formIO.cpp: split issues line# 912 (1)
- formeditor/commands.cpp: line# 1658 (1)
- kexiutils/utils.cpp: line# 229,232,238,241,244 (5)
- kexiutils/identifier.cpp: line# 118 (1)
- plugins/forms/widgets/kexidbautofield.cpp: line# 678 (1)
- plugins/forms/widgets/kexidbimagebox.cpp: line# 688 (1)
- plugins/forms/widgets/kexidbform.cpp: line# 524 (1)
- plugins/forms/kexiformview.cpp: line# 771,774 (2)
- plugins/tables/kexitabledesignerview.cpp: line# 633 (1)
- plugins/importexport/csv/kexicsvexportwizard.cpp: line# 270 (1)
- plugins/importexport/csv/kexicsvexport.cpp: line# 239 (1)
- plugins/importexport/csv/kexicsvwidgets.cpp: line# 50,52 (2)
- plugins/importexport/csv/kexicsvimportdialog.cpp: line# 1218,1219,1515,1521 (4)
- plugins/importexport/csv/kexicsvimportdialog.cpp: split issues line# 1034,1181,1183 (3)
- plugins/queries/kexiquerydesignersqlhistory.cpp: replace issues line# 300,301,303,304,305 (5)
- plugins/queries/kexiquerydesignerguieditor.cpp: line# 326,327,351,421,566,896,898,917,932,1042,1185,1188,1337,1338,1341,1342,1347,1348,1349,1350,1452,1593 (22)
- main/printing/kexisimpleprintingpagesetup.cpp: line# 451,452,453,454,455 (5)
- main/startup/KexiConnSelector.cpp: line# 88 (1)
- main/startup/KexiStartupDialogTemplatesPage.cpp: line# 53 (1)
- main/startup/KexiStartupFileDialog_win.cpp: starts/endsWith issues line# 456 (1)
- main/startup/KexiStartupFileDialog_win.cpp: split issues line# 422 (1)
- main/startup/KexiStartupFileWidget.cpp: line# 230,231 (2)
- main/KexiMainWindow.cpp: starts/endsWith issues line# 3729 (1)
Adding single characters to a QString is faster if the characters are QChars and not QStrings. For example: QString path = oldpath + "/" + base is better written as QString path = oldpath + '/' + base. Same holds for arguments to QString::startsWith(), QString::endsWith(), QString::remove(), QString::section(), and QString::split(). Use QString::remove() instead of QString::replace(foo,"")
- Check for QString compares to "" [emptystrcompare]...okay!
- Check that file ends with a newline [endswithnewline]...okay!
- Check for C++ ctors that should be declared 'explicit' [explicit]...OOPS! 79 issues found!
- widget/tableview/kexitimetableedit.h: line# 37 (1)
- widget/tableview/kexiinputtableedit.h: line# 40 (1)
- widget/tableview/kexitableview.h: line# 154 (1)
- widget/tableview/kexicomboboxtableedit.h: line# 43 (1)
- widget/tableview/kexitableedit.h: line# 48 (1)
- widget/tableview/KexiTableViewColumn.h: line# 53 (1)
- widget/tableview/kexibooltableedit.h: line# 35 (1)
- widget/tableview/kexidatetimetableedit.h: line# 39 (1)
- widget/tableview/kexidatetableedit.h: line# 39 (1)
- widget/tableview/kexiblobtableedit.h: line# 35,130 (2)
- widget/relations/KexiRelationsTableContainer_p.h: line# 79 (1)
- widget/utils/kexigradientwidget.h: line# 78 (1)
- widget/kexidatatable.h: line# 54 (1)
- widget/kexifilterdlg.h: line# 35 (1)
- widget/pixmapcollection.h: line# 50,87 (2)
- widget/kexifieldlistview.h: line# 48 (1)
- widget/kexicharencodingcombobox.h: line# 34 (1)
- widget/KexiProjectListView.h: line# 68 (1)
- core/kexiprojectset.h: line# 47 (1)
- core/kexiprojectdata.h: line# 66 (1)
- core/kexiactionproxy.h: line# 85 (1)
- core/kexiprojectconnectiondata.h: line# 47 (1)
- core/kexicontexthelp.h: line# 32 (1)
- core/kexiproject.h: line# 78 (1)
- migration/txt/txtmigrate.h: line# 39 (1)
- migration/sybase/sybasemigrate.h: line# 36 (1)
- migration/kspread/kspreadmigrate.h: line# 44 (1)
- migration/pqxx/pqxxmigrate.h: line# 42 (1)
- migration/xbase/xbasemigrate.h: line# 38 (1)
- migration/mdb/src/keximdb/mdbmigrate.h: line# 41 (1)
- migration/mysql/mysqlmigrate.h: line# 37 (1)
- migration/importtablewizard.h: line# 48 (1)
- kexidb/drivers/pqxx/pqxxdriver.h: line# 39 (1)
- kexidb/drivers/sqlite/sqlitedriver.h: line# 38 (1)
- kexidb/drivers/xbase/xbasedriver.h: line# 36 (1)
- kexidb/drivers/mySQL/mysqldriver.h: line# 37 (1)
- kexidb/drivers/mySQL/mysqlcursor.h: line# 34 (1)
- kexidb/drivers/oracle/oracledriver.h: line# 35 (1)
- kexidb/drivers/oracle/oraclecursor.h: line# 32 (1)
- kexidb/drivers/sybase/sybasedriver.h: line# 40 (1)
- kexidb/drivers/sybase/sybasecursor.h: line# 34 (1)
- kexidb/drivers/odbc/kodbcdriver.h: line# 41 (1)
- kexidb/drivers/odbc/odbcdriver.h: line# 42 (1)
- kexidb/expression.h: line# 312 (1)
- kexidb/msghandler.h: line# 42 (1)
- kexidb/queryschema.h: line# 118,122,853 (3)
- kexidb/dbobjectnamevalidator.h: line# 41 (1)
- formeditor/scripting/scriptmanager.h: line# 48 (1)
- formeditor/objecttree.h: line# 176 (1)
- formeditor/kfdpixmapedit.h: line# 35 (1)
- formeditor/objecttreeview.h: line# 39,86 (2)
- kexiutils/utils.h: line# 572 (1)
- kexiutils/SmallToolButton.h: line# 36,40 (2)
- kexiutils/FlowLayout.h: line# 32,33,34 (3)
- kexiutils/longlongvalidator.h: line# 42 (1)
- kexiutils/validator.h: line# 132 (1)
- plugins/scripting/kexidb/kexidbconnection.h: line# 67 (1)
- plugins/forms/widgets/kexidblabel.h: line# 57 (1)
- plugins/forms/widgets/kexidbautofield.h: line# 71 (1)
- plugins/forms/widgets/kexiframe.h: line# 38 (1)
- plugins/forms/kexiformview.h: line# 73 (1)
- plugins/tables/kexitabledesignerview_p.h: line# 57 (1)
- plugins/importexport/csv/kexicsvimportoptionsdlg.h: line# 58 (1)
- plugins/importexport/csv/kexicsvexportwizard.h: line# 49 (1)
- plugins/importexport/csv/kexicsvwidgets.h: line# 87 (1)
- main/startup/KexiDBTitlePage.h: line# 33 (1)
- main/startup/KexiStartupFileDialogBase_win.h: line# 35 (1)
- main/startup/KexiNewProjectWizard.h: line# 59 (1)
- main/startup/KexiProjectSelector.h: line# 45 (1)
- main/kexinamewidget.h: line# 41 (1)
- main/kexinamedialog.h: line# 34 (1)
Make all C++ class constructors that can be used with only one required argument 'explicit' to minimize wrong use of the class. Do this to avoid mistaken implicit constructor ambiguities. Copy constructors should not be explicit.
- Check for foreach loop issues [foreach]...OOPS! 25 issues found!
- widget/kexicharencodingcombobox.cpp: non-const ref iterator line# 44 (1)
- widget/kexidbdrivercombobox.cpp: non-const ref iterator line# 42,51 (2)
- webforms/view/default/Query.cpp: values or keys iteration line# 57 (1)
- webforms/view/default/Read.cpp: values or keys iteration line# 59 (1)
- webforms/view/extjs/XMLTable.cpp: values or keys iteration line# 61 (1)
- core/kexidbshortcutfile.cpp: non-const ref iterator line# 79,189 (2)
- core/kexiactionproxy.cpp: non-const ref iterator line# 197 (1)
- core/kexitemplateloader.cpp: non-const ref iterator line# 60,70,121 (3)
- migration/sybase/sybasemigrate.cpp: values or keys iteration line# 425,538 (2)
- kexidb/connection.cpp: non-const ref iterator line# 1448 (1)
- formeditor/formIO.cpp: values or keys iteration line# 1001 (1)
- formeditor/commands.cpp: values or keys iteration line# 450 (1)
- formeditor/connectiondialog.cpp: non-const ref iterator line# 299,324 (2)
- formeditor/widgetwithsubpropertiesinterface.cpp: non-const ref iterator line# 48 (1)
- plugins/scripting/kexiscripting/kexiscriptdesignview.cpp: non-const ref iterator line# 206,222 (2)
- plugins/scripting/kexidb/kexidbmodule.cpp: non-const ref iterator line# 119 (1)
- plugins/queries/kexiquerydesignerguieditor.cpp: non-const ref iterator line# 999 (1)
- main/startup/KexiStartup.cpp: non-const ref iterator line# 228 (1)
When not using POD types (int, double, pointer, ...) you should use const & for your foreach variables. There are two reasons for this: 1) Prevents you from the mistake of writing foreach loops that modify the list, that is 'foreach(Foo f, list) f.a = f.b = f.c = 0;' compiles but does not modify the contents of list 2) Saves a copy constructor call for each of the list elements
- Check validity of i18n calls [i18ncheckarg]...OOPS! 9 issues found!
- widget/kexidswelcome.cpp: wrong argument count, have 0 need 2 line# 39 (1)
- widget/kexidswelcome.cpp: wrong argument count, have 0 need 1 line# 41 (1)
- migration/AlterSchemaWidget.cpp: wrong argument count, have 0 need 1 line# 42 (1)
- plugins/scripting/kexiscripting/kexiscripteditor.cpp: wrong argument count, have 1 need 0 line# 73 (1)
- plugins/scripting/kexiscripting/kexiscriptpart.cpp: wrong argument count, have 0 need 1 line# 125 (1)
- main/printing/kexisimpleprintingengine.cpp: wrong argument count, have 1 need 0 line# 567,567 (2)
- main/KexiMainWindow.cpp: wrong argument count, have 0 need 1 line# 551,576 (2)
Make the translators' job easier and detect problems in the usage of the i18n() calls. When the fix is not clear, check the Techbase article at http://techbase.kde.org/Development/Tutorials/Localization/i18n_Krazy for more information.
- Check for invalid icon names [iconnames]...OOPS! 57 issues found!
- widget/relations/KexiRelationsView.cpp: line# 383 (1)
- widget/kexidatasourcecombobox.cpp: line# 81,82 (2)
- widget/KexiProjectListView.cpp: line# 209 (1)
- formeditor/factories/stdwidgetfactory.cpp: line# 182,200,210,223,234,249,261,270,279,290,303,330,342,351,360,387 (16)
- formeditor/factories/containerfactory.cpp: line# 654,668,678,687,696,706,715,724,734,746,756 (11)
- formeditor/kexiactionselectiondialog.cpp: line# 290,294 (2)
- formeditor/form.cpp: line# 2315 (1)
- formeditor/richtextdialog.cpp: line# 81,84,87 (3)
- formeditor/editlistviewdialog.cpp: line# 74,136,143 (3)
- plugins/forms/kexidbfactory.cpp: line# 76,105,124,142,157,175,196,211 (8)
- plugins/forms/kexidatasourcepage.cpp: line# 202 (1)
- plugins/forms/kexiformmanager.cpp: line# 185 (1)
- plugins/tables/kexitablepart.cpp: line# 245 (1)
- plugins/tables/kexitabledesignerview.cpp: line# 1675 (1)
- plugins/importexport/csv/kexicsvimportdialog.cpp: line# 95 (1)
- main/KexiMainWindow.cpp: line# 753,764,813,826 (4)
Browse available icons with 'kdialog --geticon actions'. Request new icons at http://techbase.kde.org/Projects/Oxygen/Missing_Icons.
- Check for proper include directives [includes]...OOPS! 286 issues found!
- widget/tableview/kexicomboboxbase.cpp: include own header first line# 27 (1)
- widget/tableview/kexidataawareobjectiface.h: missing or improper include guard in header
- widget/tableview/kexicomboboxtableedit.cpp: include own header first line# 32 (1)
- widget/tableview/kexitableview.cpp: duplicate includes line# 30,51 (2)
- widget/tableview/kexitableview.cpp: include own header first line# 65 (1)
- widget/tableview/kexitableview.cpp: include own _p header second line# 72 (1)
- widget/tableview/kexitextformatter.cpp: include own header first line# 22 (1)
- widget/tableview/kexidatatableview.cpp: include own header first line# 33 (1)
- widget/relations/KexiRelationsConnection.cpp: include own header first line# 33 (1)
- widget/relations/KexiRelationsView.cpp: duplicate includes line# 22,44 (2)
- widget/relations/KexiRelationsScrollArea.cpp: include own header first line# 44 (1)
- widget/relations/KexiRelationsTableContainer_p.cpp: include own header first line# 44 (1)
- widget/relations/KexiRelationsTableContainer.cpp: include own header first line# 46 (1)
- widget/relations/KexiRelationsTableContainer.cpp: include own _p header second line# 47 (1)
- widget/utils/kexidisplayutils.h: missing or improper include guard in header
- widget/utils/kexirecordnavigator.cpp: include own header first line# 38 (1)
- widget/utils/kexigradientwidget.cpp: include own header first line# 35 (1)
- widget/KexiPropertyPaneViewBase.h: missing or improper include guard in header
- widget/kexicustompropertyfactory_p.h: missing or improper include guard in header
- widget/kexicustompropertyfactory.h: missing or improper include guard in header
- widget/kexidatatable.cpp: include own header first line# 34 (1)
- widget/kexidswelcome.cpp: include own header first line# 31 (1)
- widget/pixmapcollection.cpp: include own header first line# 42 (1)
- widget/KexiProjectListView_p.h: missing or improper include guard in header
- widget/kexifilterdlg.cpp: include own header first line# 33 (1)
- widget/KexiProjectListView.h: missing or improper include guard in header
- widget/KexiProjectListViewItem.h: missing or improper include guard in header
- webforms/model/Database.cpp: include own header first line# 40 (1)
- webforms/model/Cache.cpp: include own header first line# 32 (1)
- webforms/auth/User.cpp: include own header first line# 23 (1)
- webforms/auth/Authenticator.cpp: include own header first line# 36 (1)
- webforms/controller/default/Controller.cpp: include own header first line# 50 (1)
- webforms/controller/extjs/Controller.cpp: include own header first line# 41 (1)
- webforms/view/default/Delete.cpp: include own header first line# 30 (1)
- webforms/view/default/Create.cpp: include own header first line# 40 (1)
- webforms/view/default/Query.cpp: include own header first line# 34 (1)
- webforms/view/default/Index.cpp: include own header first line# 29 (1)
- webforms/view/default/View.cpp: include own header first line# 31 (1)
- webforms/view/default/Read.cpp: include own header first line# 37 (1)
- webforms/view/default/Update.cpp: include own header first line# 42 (1)
- webforms/view/default/TemplateProvider.cpp: include own header first line# 37 (1)
- webforms/view/extjs/XMLTable.cpp: include own header first line# 36 (1)
- webforms/view/extjs/Objects.h: missing or improper include guard in header
- webforms/view/extjs/Objects.cpp: include own header first line# 33 (1)
- webforms/view/extjs/XMLTable.h: missing or improper include guard in header
- webforms/BlobService.cpp: include own header first line# 44 (1)
- core/kexisearchandreplaceiface.h: missing or improper include guard in header
- core/kexitemplateloader.h: missing or improper include guard in header
- core/kexiaboutdata.h: missing or improper include guard in header
- core/kexipartmanager.cpp: include own header first line# 28 (1)
- core/kexiprojectconnectiondata.cpp: include own header first line# 38 (1)
- core/kexievents.h: missing or improper include guard in header
- core/kexiuseraction.cpp: include own header first line# 13 (1)
- core/kexiuseractionmethod.cpp: include own header first line# 4 (1)
- core/kexidbconnectionset.h: missing or improper include guard in header
- core/kexitextmsghandler.h: missing or improper include guard in header
- core/kexiprojectdata.cpp: include own header first line# 38 (1)
- core/kexipartinfo_p.h: missing or improper include guard in header
- core/kexiproject.cpp: include own header first line# 41 (1)
- migration/kspread/kspreadmigrate.h: missing or improper include guard in header
- migration/pqxx/pqxxmigrate.h: missing or improper include guard in header
- migration/pqxx/pg_type.h: missing or improper include guard in header
- migration/mysql/mysqlmigrate.cpp: include own header first line# 31 (1)
- migration/migratemanager_p.h: missing or improper include guard in header
- migration/keximigrate.h: use QtModule/QClass in angle brackets line# 30,31,32 (3)
- migration/importoptionsdlg.h: missing or improper include guard in header
- migration/migratemanager.h: missing or improper include guard in header
- migration/migratemanager.h: use QtModule/QClass in angle brackets line# 23,24 (2)
- kexidb/parser/parser.h: use QtModule/QClass in angle brackets line# 24,25 (2)
- kexidb/parser/parser.cpp: include own header first line# 23 (1)
- kexidb/parser/parser.cpp: include own _p header second line# 24 (1)
- kexidb/drivers/pqxx/pqxxconnection.cpp: include own _p header second line# 29 (1)
- kexidb/drivers/pqxx/pqxxdriver.h: missing or improper include guard in header
- kexidb/drivers/pqxx/pqxxcursor.h: missing or improper include guard in header
- kexidb/drivers/pqxx/pqxxconnection_p.h: missing or improper include guard in header
- kexidb/drivers/pqxx/pqxxdriver.cpp: include own header first line# 24 (1)
- kexidb/drivers/sqlite/sqliteconnection_p.h: missing or improper include guard in header
- kexidb/drivers/sqlite/sqliteadmin.cpp: include own header first line# 22 (1)
- kexidb/drivers/sqlite/sqlitedriver.cpp: include own header first line# 26 (1)
- kexidb/drivers/sqlite/sqlitevacuum.cpp: include own header first line# 21 (1)
- kexidb/drivers/sqlite/sqlitedriver.h: missing or improper include guard in header
- kexidb/drivers/sqlite/sqliteconnection.h: missing or improper include guard in header
- kexidb/drivers/xbase/xbaseconnection.cpp: include own header first line# 28 (1)
- kexidb/drivers/xbase/xbaseconnection.cpp: include own _p header second line# 29 (1)
- kexidb/drivers/xbase/xbasedriver.cpp: duplicate includes line# 21,27,23,28 (4)
- kexidb/drivers/xbase/xbasedriver.cpp: include own header first line# 30 (1)
- kexidb/drivers/xbase/xbaseconnection_p.cpp: include own header first line# 27 (1)
- kexidb/drivers/xbase/xbasedriver.h: missing or improper include guard in header
- kexidb/drivers/xbase/xbaseconnection_p.h: missing or improper include guard in header
- kexidb/drivers/mySQL/mysqldriver.cpp: include own header first line# 23 (1)
- kexidb/drivers/mySQL/mysqlcursor.cpp: include own header first line# 22 (1)
- kexidb/drivers/mySQL/mysqlconnection_p.cpp: include own header first line# 28 (1)
- kexidb/drivers/mySQL/mysqlconnection.cpp: include own header first line# 32 (1)
- kexidb/drivers/mySQL/mysqlconnection.cpp: include own _p header second line# 33 (1)
- kexidb/drivers/mySQL/mysqldriver.h: missing or improper include guard in header
- kexidb/drivers/mySQL/mysqlconnection_p.h: missing or improper include guard in header
- kexidb/drivers/mySQL/mysqlpreparedstatement.cpp: include own header first line# 21 (1)
- kexidb/drivers/oracle/oraclecursor.cpp: include own header first line# 26 (1)
- kexidb/drivers/oracle/oracleconnection_p.cpp: include own header first line# 30 (1)
- kexidb/drivers/oracle/oracledriver.h: missing or improper include guard in header
- kexidb/drivers/oracle/oracleconnection_p.h: missing or improper include guard in header
- kexidb/drivers/sybase/sybaseconnection_p.cpp: include own header first line# 28 (1)
- kexidb/drivers/sybase/sybasedriver.cpp: include own header first line# 25 (1)
- kexidb/drivers/sybase/sybasedriver.h: missing or improper include guard in header
- kexidb/drivers/sybase/sybaseconnection.cpp: include own header first line# 27 (1)
- kexidb/drivers/sybase/sybaseconnection.cpp: include own _p header second line# 28 (1)
- kexidb/drivers/sybase/sybaseconnection_p.h: missing or improper include guard in header
- kexidb/drivers/odbc/odbcconnection_p.h: missing or improper include guard in header
- kexidb/drivers/odbc/kodbcdriver.h: missing or improper include guard in header
- kexidb/drivers/odbc/odbcconnection.cpp: include own header first line# 38 (1)
- kexidb/drivers/odbc/odbcconnection.cpp: include own _p header second line# 39 (1)
- kexidb/drivers/odbc/odbcdriver.h: missing or improper include guard in header
- kexidb/drivers/odbc/odbcconnection.h: missing or improper include guard in header
- kexidb/connection.cpp: include own _p header second line# 23 (1)
- kexidb/utils.h: use QtModule/QClass in angle brackets line# 24,25,26 (3)
- kexidb/RecordData.h: use QtModule/QClass in angle brackets line# 28,29 (2)
- kexidb/drivermanager.h: missing or improper include guard in header
- kexidb/preparedstatement.h: use QtModule/QClass in angle brackets line# 23,24 (2)
- kexidb/preparedstatement.h: use KDE/KClass in angle brackets line# 25 (1)
- kexidb/error.h: use QtModule/QClass in angle brackets line# 24 (1)
- kexidb/expression.h: use QtModule/QClass in angle brackets line# 27,31,32 (3)
- kexidb/global.h: use QtModule/QClass in angle brackets line# 24 (1)
- kexidb/driver_p.cpp: include own header first line# 23 (1)
- kexidb/tableschema.h: missing or improper include guard in header
- kexidb/tableschema.h: use QtModule/QClass in angle brackets line# 24,25,26,27 (4)
- kexidb/cursor.h: use QtModule/QClass in angle brackets line# 23,24 (2)
- kexidb/connectiondata.h: use QtModule/QClass in angle brackets line# 25,26,27 (3)
- kexidb/indexschema.h: missing or improper include guard in header
- kexidb/indexschema.h: use QtModule/QClass in angle brackets line# 23,24,25 (3)
- kexidb/queryschemaparameter.h: use QtModule/QClass in angle brackets line# 23 (1)
- kexidb/drivermanager_p.h: missing or improper include guard in header
- kexidb/simplecommandlineapp.h: missing or improper include guard in header
- kexidb/object.h: use QtModule/QClass in angle brackets line# 26 (1)
- kexidb/queryschema.h: missing or improper include guard in header
- kexidb/queryschema.h: use QtModule/QClass in angle brackets line# 23,24,25,26,27 (5)
- kexidb/fieldlist.h: use QtModule/QClass in angle brackets line# 23,24,25 (3)
- kexidb/utils.cpp: duplicate includes line# 36,38 (2)
- kexidb/utils.cpp: include own _p header second line# 42 (1)
- kexidb/driver.h: use QtModule/QClass in angle brackets line# 23,24,25,26 (4)
- kexidb/connection.h: use QtModule/QClass in angle brackets line# 23,24,25,26,27,28,33,34 (8)
- kexidb/driver.cpp: duplicate includes line# 22,25 (2)
- kexidb/field.h: use QtModule/QClass in angle brackets line# 25,26,27,28,29,30 (6)
- kexidb/transaction.h: use QtModule/QClass in angle brackets line# 23 (1)
- formeditor/factories/stdwidgetfactory.cpp: include own header first line# 61 (1)
- formeditor/factories/containerfactory.cpp: include own header first line# 43 (1)
- formeditor/FormWidget.h: use QtModule/QClass in angle brackets line# 25,26,27 (3)
- formeditor/events.cpp: include own header first line# 23 (1)
- formeditor/spring.h: missing or improper include guard in header
- formeditor/libactionwidget.cpp: include own header first line# 26 (1)
- formeditor/objecttreeview.cpp: include own header first line# 33 (1)
- formeditor/resizehandle.cpp: include own header first line# 30 (1)
- formeditor/richtextdialog.h: missing or improper include guard in header
- formeditor/container.cpp: include own header first line# 41 (1)
- formeditor/formIO.cpp: include own header first line# 57 (1)
- formeditor/objecttree.h: use QtModule/QClass in angle brackets line# 25,26,27,28,29,30 (6)
- formeditor/kfdpixmapedit.h: missing or improper include guard in header
- formeditor/widgetwithsubpropertiesinterface.h: use QtModule/QClass in angle brackets line# 23,24,25,26 (4)
- formeditor/utils.cpp: include own header first line# 37 (1)
- formeditor/tabstopdialog.h: missing or improper include guard in header
- formeditor/commands.cpp: include own header first line# 50 (1)
- formeditor/spring.cpp: include own header first line# 36 (1)
- formeditor/form.cpp: include own header first line# 53 (1)
- formeditor/widgetlibrary.h: use QtModule/QClass in angle brackets line# 25,26 (2)
- formeditor/widgetfactory.h: use QtModule/QClass in angle brackets line# 25,26 (2)
- formeditor/objecttree.cpp: include own header first line# 29 (1)
- formeditor/WidgetInfo.h: use QtModule/QClass in angle brackets line# 25,26,27 (3)
- formeditor/editlistviewdialog.cpp: include own header first line# 36 (1)
- formeditor/tabstopdialog.cpp: include own header first line# 35 (1)
- formeditor/FormWidgetInterface.h: missing or improper include guard in header
- kexiutils/utils.h: use QtModule/QClass in angle brackets line# 25,26,27,28,29,30 (6)
- kexiutils/utils.h: use KDE/KClass in angle brackets line# 32 (1)
- kexiutils/transliteration_table.h: missing or improper include guard in header
- kexiutils/tristate.h: use QtModule/QClass in angle brackets line# 23 (1)
- kexiutils/styleproxy.h: use QtModule/QClass in angle brackets line# 23,24,25 (3)
- kexiutils/SmallToolButton.h: use QtModule/QClass in angle brackets line# 23 (1)
- kexiutils/FlowLayout.h: use QtModule/QClass in angle brackets line# 24,25 (2)
- kexiutils/InternalPropertyMap.h: missing or improper include guard in header
- kexiutils/InternalPropertyMap.h: use QtModule/QClass in angle brackets line# 24,25 (2)
- kexiutils/longlongvalidator.h: missing or improper include guard in header
- kexiutils/longlongvalidator.h: use QtModule/QClass in angle brackets line# 25 (1)
- kexiutils/identifier.h: use QtModule/QClass in angle brackets line# 25 (1)
- kexiutils/validator.h: use QtModule/QClass in angle brackets line# 25,26,27 (3)
- plugins/relations/kexirelationpartimpl.cpp: include own header first line# 21 (1)
- plugins/scripting/kexiscripting/kexiscriptdesignview.cpp: duplicate includes line# 27,28 (2)
- plugins/forms/widgets/kexidblineedit.cpp: duplicate includes line# 36,40 (2)
- plugins/forms/widgets/kexidbform.cpp: include own header first line# 36 (1)
- plugins/forms/widgets/kexidbutils.h: missing or improper include guard in header
- plugins/forms/kexidbfactory.cpp: include own header first line# 65 (1)
- plugins/forms/kexidataprovider.h: missing or improper include guard in header
- plugins/forms/kexiformpart.cpp: include own header first line# 58 (1)
- plugins/forms/kexiformview.cpp: duplicate includes line# 35,40 (2)
- plugins/tables/kexitabledesignercommands.cpp: include own header first line# 33 (1)
- plugins/tables/kexitabledesignerview_p.h: missing or improper include guard in header
- plugins/tables/kexitabledesignerview.h: missing or improper include guard in header
- plugins/importexport/csv/kexicsvexportwizard.cpp: duplicate includes line# 41,45 (2)
- plugins/importexport/csv/kexicsvexport.cpp: duplicate includes line# 36,40 (2)
- plugins/importexport/csv/kexicsvimportoptionsdlg.h: missing or improper include guard in header
- plugins/importexport/csv/kexicsv_importexportpart.h: missing or improper include guard in header
- plugins/importexport/csv/kexicsvimportdialog.h: missing or improper include guard in header
- plugins/queries/kexiquerydesignersqlhistory.cpp: include own header first line# 35 (1)
- plugins/queries/kexiqueryview.cpp: include own header first line# 29 (1)
- plugins/queries/kexiquerydesignersql.cpp: include own header first line# 47 (1)
- main/printing/kexisimpleprintpreviewwindow.cpp: include own _p header second line# 22 (1)
- main/startup/KexiStartup_p.h: missing or improper include guard in header
- main/startup/KexiNewProjectWizard.cpp: duplicate includes line# 43,46 (2)
- main/kexinewstuff.cpp: include own header first line# 31 (1)
- main/KexiMainWindow.cpp: duplicate includes line# 45,148 (2)
- main/KexiMainWindow.cpp: include own _p header second line# 174 (1)
Use <..> to include installed headers;
to include Qt headers from installed headers; cpp file should include their own headers first (but below config.h); other rules apply, see http://techbase.kde.org/Policies/Library_Code_Policy#Getting_.23includes_right. Use include guards in headers with appropriatedly encoded macro names. - Check for an acceptable license [license]...OOPS! 4 issues found!
- core/kexiuseraction.h: missing license
- core/kexiuseraction.cpp: missing license
- core/kexiuseractionmethod.cpp: missing license
- core/kexiuseractionmethod.h: missing license
Each source file must contain a license or a reference to a license which states under which terms the software may be used, modified and redistributed. For details regarding KDE's licensing policy please visit http://techbase.kde.org/Policies/Licensing_Policy.
- Check for assignments to QString::null [nullstrassign]...OOPS! 2 issues found!
- formeditor/kexiactionselectiondialog.cpp: line# 344 (1)
- plugins/queries/kexiquerydesignerguieditor.cpp: line# 1520 (1)
Do not assign QString::null or QString() to a QString. Instead use the .clear() method. For example, "str = QString::null" becomes "str.clear()". When returning an empty string from a method use "return QString()" When passing an empty string use "QString()".
- Check for compares to QString::null or QString() [nullstrcompare]...okay!
- Check for C++ operators that should be 'const' [operators]...okay!
- Check for inappropriate pass-by-value function args [passbyvalue]...okay!
- Check for postfix usage of ++ and -- [postfixop]...okay!
- Check for dangerous or inefficient QByteArray usage [qbytearray]...okay!
- Check for Qt classes that should not be used [qclasses]...OOPS! 12 issues found!
- core/kexiinternalpart.cpp: QDialog[KDialog]
- core/kexiinternalpart.h: QDialog[KDialog],QDialog[KDialog]
- migration/AlterSchemaWidget.h: QComboBox[KComboBox]
- migration/AlterSchemaWidget.cpp: QComboBox[KComboBox]
- plugins/reports/kexisourceselector.h: QComboBox[KComboBox],QComboBox[KComboBox]
- plugins/reports/kexisourceselector.cpp: QComboBox[KComboBox],QComboBox[KComboBox]
- plugins/importexport/csv/kexicsvimportoptionsdlg.h: QComboBox[KComboBox]
- plugins/importexport/csv/kexicsvimportdialog.cpp: QDialog[KDialog]
- plugins/importexport/csv/kexicsvimportoptionsdlg.cpp: QComboBox[KComboBox]
- main/startup/KexiStartupFileDialogBase_win.h: QLineEdit[KLineEdit]
- main/kexifinddialog.cpp: QDialog[KDialog]
- main/KexiMainWindow.cpp: QDialog[KDialog],QDialog[KDialog],QDialog[KDialog],QDialog[KDialog],QDialog[KDialog],QDialog[KDialog]
Don't use Qt 4 classes that are deprecated. Additionally make sure to use the KDE version of some Qt GUI elements to provide a consistent look and feel for the KDE desktop. The KDE classes are not just adding functionalities to the Qt base class and are mostly not even based on the Qt class. http://techbase.kde.org/Policies/API_to_Avoid Please refer to the API documentation for details before porting to the K classes.
- Check for Qt methods that should be avoided [qmethods]...okay!
- Check for QMIN and QMAX macros [qminmax]...okay!
- Check for classes that should use the 'Q_OBJECT' macro [qobject]...okay!
- Check for spelling errors [spelling]...OOPS! 2 issues found!
- kexidb/drivers/pqxx/pqxxkeywords.cpp: line# 39[[analyse]] (1)
- kexidb/drivers/odbc/odbcdriver.cpp: line# 330[[atleast]] (1)
Spelling errors in comments and strings should be fixed as they may show up later in API documentation, handbooks, etc. Misspelled strings make the translator's job harder. Please use US English.
- Check for strings used improperly or should be i18n. [strings]...OOPS! 20 issues found!
- widget/relations/KexiRelationsTableContainer_p.cpp: QLatin1String issues line# 238 (1)
- widget/KexiProjectListView.cpp: QLatin1String issues line# 842 (1)
- core/KoContextHelp.cpp: QLatin1String issues line# 230,235 (2)
- core/kexiproject.cpp: QLatin1String issues line# 215 (1)
- migration/mdb/src/keximdb/mdbmigrate.cpp: QLatin1String issues line# 212 (1)
- migration/mysql/mysqlmigrate.cpp: QLatin1String issues line# 461 (1)
- migration/keximigrate.cpp: QLatin1String issues line# 192 (1)
- kexidb/parser/parser_p.cpp: QLatin1String issues line# 134 (1)
- kexidb/drivers/sqlite/sqlitedriver.cpp: QLatin1String issues line# 101 (1)
- kexidb/drivers/sqlite/sqlitevacuum.cpp: QLatin1String issues line# 114 (1)
- kexidb/utils.cpp: QLatin1String issues line# 159,160 (2)
- kexidb/drivermanager.cpp: QLatin1String issues line# 103 (1)
- kexidb/driver.cpp: QLatin1String issues line# 226 (1)
- formeditor/form.cpp: QLatin1String issues line# 1774 (1)
- plugins/tables/kexitabledesignerview.cpp: QLatin1String issues line# 1192 (1)
- main/startup/KexiStartupFileDialog_win.cpp: QLatin1String issues line# 456 (1)
- main/startup/KexiNewProjectWizard.cpp: QLatin1String issues line# 274 (1)
- main/KexiMainWindow.cpp: QLatin1String issues line# 3729 (1)
Some QString methods (like startsWith() and endsWith()) are more efficient if they are passed a QLatin1String, avoiding an implicit conversion from const char *.
- Check for system calls to replace by KDE or Qt equivalents [syscalls]...okay!
- Check for typedefs that should be replaced by Qt typedefs [typedefs]...OOPS! 3 issues found!
- kexidb/parser/sqlscanner.cpp: line# 44[int8_t[qint8]],46[int16_t[qint16]],48[int32_t[qint32]] (3)
Please use Qt typedefs (like qint32 and qreal) as defined in QGlobals. These typedefs are guaranteed to have the size in bits that the name states on all platforms.
- For File Type designer
- Check that file ends with a newline [endswithnewline]...okay!
- Check for files that need to be fixed by 'fixuifiles' [fixuifiles]...okay!
- Check validity of i18n calls [i18ncheckarg]...okay!
- Check for Qt classes that should not be used [qclasses]...OOPS! 1 issues found!
- main/startup/KexiServerDBNamePage.ui: QLineEdit[KLineEdit],QLineEdit[KLineEdit]
Don't use Qt 4 classes that are deprecated. Additionally make sure to use the KDE version of some Qt GUI elements to provide a consistent look and feel for the KDE desktop. The KDE classes are not just adding functionalities to the Qt base class and are mostly not even based on the Qt class. http://techbase.kde.org/Policies/API_to_Avoid Please refer to the API documentation for details before porting to the K classes.
- Check for spelling errors [spelling]...okay!
- For File Type desktop
- Check that file ends with a newline [endswithnewline]...okay!
- Check for invalid icon names [iconnames]...okay!
- Check for spelling errors [spelling]...okay!
- Validates desktop files using 'desktop-file-validate' [validate]...okay!
- For File Type kpartgui
- Check that file ends with a newline [endswithnewline]...okay!
- Check validity of i18n calls [i18ncheckarg]...okay!
- Check for spelling errors [spelling]...okay!
- Validates kpartgui files using 'xmllint' [validate]...okay!
- For File Type messages
- Check for appending to rc.cpp [rcappend]...okay!