Projects/English Breakfast Network: Difference between revisions

From KDE TechBase
(Copy stuff from the old wiki.kde.org)
No edit summary
Line 30: Line 30:
*** spelling
*** spelling
**** provide a list of possible alternatives
**** provide a list of possible alternatives
**** rewrite the spellchecker to only look at strings and comments in C++ files
*** license
*** license
**** Adriaan's updated license checker
**** Adriaan's updated license checker

Revision as of 18:37, 7 January 2009

The English Breakfast Network (EBN) is a site dedicated to KDE Quality, including: KDE API Documentation Validation, User Documentation Validation, Source Code Checking, ...

Tools

Code Checking (Krazy)

  • dpointers - Make sure that installed class headers have dpointers.

APIDOX

Doc Sanitizer

Coverage

Things To-do

  • Web Pages and Server Stuff
  • Krazy
    • Web Stuff
      • Say when the next update will be run
      • Put the output 'krazy --list --explain --export=ebn' someplace?
    • Tutorials http://techbase.kde.org/Development/Tutorials/Code_Checking
      • Document .krazy files
      • How to get the names of the plugins (in order to use //krazy:exclude=<plugin_name>)
    • Krazy (the program)
    • Krazyall
    • Krazyebn
    • Plugins
      • General
      • Ideas
        • check for '^\*space:*constspace:' in headers to find stuff like "virtual FolderStorage* const rootFolder() const = 0;" where we'd rather have "virtual FolderStorage* rootFolder() const = 0;" but stuff like "const char * const p" is ok in structures.
      • copyright
        • look in kde-common/accounts to validate name and email address
        • look in an AUTHORS file??
      • spelling
        • provide a list of possible alternatives
        • rewrite the spellchecker to only look at strings and comments in C++ files
      • license
        • Adriaan's updated license checker
        • Look in a COPYRIGHT file?
      • classes
      • qdisablecopy
        • classes with non-pure virtual functions or derived from classes with non-pure virtual functions must have a Q_DISABLE_COPY(). in addition, all the other dpointer requirements are necessary to require Q_DISABLE_COPY().
      • foreach
        • a test that detects using foreach() with objects instead of pointers or const object references, i.e., something that detects "foreach (QModelIndex index, indexes)" (tsdgeos)
      • includes
        • the use of "foo.h" vs. <foo.h>
        • if there is an include <kfoo.h>, check for the presence of KFoo:: or KFoo\s+\w or if one class inherits from KFoo. if none found then no need to include that file. (Gof)
        • check if "include <kfoo.h>" would be better as "class KFoo" in a header.
        • consistent about mixing indirect includes <QtCore/QString> and direct includes <qstring.h>
        • <QtCore/QString> vs. <QString>
      • constmethods
        • check for methods that should be const, i.e methods that return a non-instrinic type and don't modify passed values. a partially working plugin exists in tplugins, but it needs some work
        • check for constness of overloaded operators like ==, !=, <, >, >=, <=, +,-,hat,&,| (christoph4)
      • cast syntax
        • detect the "old cast" syntax: use static_cast<int>(p) instead of (int)p
        • detect useless static_cast: void method(A* p) { x=static_cast<A*>(p);}
      • functions
        • check for reimplementing public-non-virtual-functions
        • check whether reimplemented virtual functions have the same argument list as the function of the base class. Different arguments are probably always error and lead to unwanted results (the wrong virtual functions are called). See commit 672971 as an example. This needs very good support from the C++ parser.
      • connect
        • check whether the signals and slots in a connect() actually exist and match. Although this is also checked at runtime by Qt, rare code paths may still contain errors, especially after all the porting. This needs very good C++ parser support.
      • Blacklist Methods
        • QImage::depth() (fredrikh)
        • calling QApplication::palette() in a class that inherits QWidget is just plain wrong. each widget has its own palette, and it should use that one.
        • don't use the new mixColors() with the background color in the palette
        • Blacklist certain KFoo classes (which ones?) in the public API
      • inline
        • complain for the classes that don't declare a ctor or dtor because that make them inline, implicitly. (Gof)

People

The EBN is operated by Adriaan de Groot and Allen Winter.

Authors/Maintainers of the individual quality tools can be found on the About page.

Resources