**** 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

+

**** there are cases where we want to require ctors and dtors, but it is complicated. (frerich,roberto)

+

**** Check if all boolean members of a class are initialized in the constructor. See http://thread.gmane.org/gmane.comp.kde.cvs/540002

+

*** 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().

**** 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)

+

+

== XML Migration plan ==

+

+

Currently bbroeksema is working on xml output for the krazy2 tool. The plan is to slim down krazy2 in such a way that it will only support text output and xml output. The xml output will be transformed, using XSLT style sheets to other outputs like the ebn website html code but also to SQL queries to keep track of historical data.

+

+

First work on style sheets can be found at:

+

+

http://websvn.kde.org:80/trunk/quality/krazy2/stylesheets/

+

+

+

=== Migration steps ===

+

+

* Check the XML output of a complete module (e.g. KDEPIM)

+

* Fix eventually issues in the xml output.

+

* Check the output of the style sheets which generates the ebn sites.

+

* Fix eventually issues in the style sheets.

+

* Make sure that saxon8 is installed on EBN.

+

* Adapt the script that generates the EBN sites to use XML output (krazy2ebn?)

+

and to perform the transformations.

+

* Switch EBN to XML output.

+

* Remove the other output methods from the krazy2 script.

+

+

Next steps would involve storing all results in the db:

+

+

* Create new database structure on ebn

+

* Create xml -> sql stylesheet

+

* Modify the krazy2xml script to store results in db.

+

* At some point we might want to migrate the ebn website to a full php website which just queries that db.

+

+

== Administration HowTo ==

+

+

=== Finding Component Ids in the DB ===

+

Look at [http://ebn.kde.org/database.php The EBN Administration page] in the Components table area.

+

+

=== Adding a Component to the DB ===

+

For example, to add component for KDE SC 4.8:

+

<pre>

+

% psql -t -h localhost -U kde ebn

+

ebn=> insert into components values (27,'kde-4.8','KDE SC 4.8','');

+

ebn=> \quit

+

</pre>

+

Now reload [http://ebn.kde.org/database.php The EBN Administration page] and you will see the new Id listed in the Components table.

+

+

=== Finding Tool Ids in the DB ===

+

Look at [http://ebn.kde.org/database.php The EBN Administration page] in the Tools table area.

+

+

=== Adding Tools to the DB ===

+

You need to add each supported tool to the components of interest. So, to add all our favorite tools to the new kde-4.8 component:

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().

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)

Currently bbroeksema is working on xml output for the krazy2 tool. The plan is to slim down krazy2 in such a way that it will only support text output and xml output. The xml output will be transformed, using XSLT style sheets to other outputs like the ebn website html code but also to SQL queries to keep track of historical data.