Projects/Quanta/Feature Plan 4
Archive, Internal information.
This is a todo list for Quanta4
Php Language Support
Status | Category | Description | Contact |
---|---|---|---|
DONE | Parser | Parser written using kdevelop-pg-qt | Niko Sams <[email protected]> |
TO DO | Parser | PHP 5.3 support (configurable) | <-> |
IN PROGRESS | DUChain | DUChain generation | Niko Sams <[email protected]> |
DONE | DUChain | class declaration after class instantiation should work as in Php | Niko Sams <[email protected]> |
DONE | DUChain | static variables | Niko Sams <[email protected]> |
DONE | DUChain | final / abstract classes | Milian Wolff <[email protected]> |
DONE | DUChain | final / abstract methods | Milian Wolff <[email protected]> |
DONE | DUChain | adapt isDestructor/isConstructor to handle __destruct / __construct | Milian Wolff <[email protected]> |
DONE | DUChain | add type for PHP resources | Milian Wolff <[email protected]> |
DONE | DUChain | global variables: global keyword, $GLOBALS, $_GET | Niko Sams <[email protected]> |
DONE | DUChain | second parse pass when project opened - to find all types correctly | Niko Sams <[email protected]> |
IN PROGRESS | DUChain | try to improve performance of declaration- and usebuilder, esp. for large files | Milian Wolff <[email protected]> |
TO DO | DUChain | user configurable project dependencies on other projects/paths | <-> |
TO DO | DUChain | http://www.icosaedro.it/phplint/phpdoc.html | <-> |
DONE | DUChain | properly support magic constants: http://de3.php.net/language.constants.predefined
if possible show their value while hovering |
Milian Wolff <[email protected]> |
DONE | DUChain | add variable definitions for key/value in foreach statements | Milian Wolff <[email protected]>
|
IN PROGRESS | Code Completion | Niko Sams <[email protected]> | |
DONE | Code Completion | overloadable functions in class context | Milian Wolff <[email protected]> |
DONE | Code Completion | standard PHP keywords for current context (foreach, while, function, etc.) | Milian Wolff <[email protected]> |
TO DO | Code Completion | doxygen/phpdoc comment completion / skeleton generation | <-> |
TO DO | Code Completion | completion for default entries of $_SERVER array | <-> |
DONE | Code Completion | completion after require/include, similar to what cpp does after #include | Milian Wolff <[email protected]> |
DONE | Code Completion | only show visible methods (protected/private/public) | Milian Wolff <[email protected]> |
DONE | Code Completion | only show interfaces after "implements" | Milian Wolff <[email protected]> |
DONE | Code Completion | only show classes/interfaces after "extends" | Milian Wolff <[email protected]> |
DONE | Code Completion | only show Exceptions in "catch()" and after "throw" | Milian Wolff <[email protected]> |
DONE | Code Completion | filter abstract methods/classes | Milian Wolff <[email protected]> |
TO DO | Code Completion | mind type hinting for function argument completion | <-> |
DONE | Code Completion | skeletons for while/do/for/foreach/switch/class/interface statements | Milian Wolff <[email protected]> |
TO DO | Code Completion | filter functions and variables that won't ever be able to return arrays in foreach completion (i.e. no array, no functions that return arrays or objects, no objects) | <-> |
TO DO | Code Completion | group completion stuff by type, i.e. functions, classes, instances, keywords, etc. | <-> |
TO DO | Code Completion | Create a global Context (imports all files of a project) that is imported in every context. That way findDeclarations(...) works across all files and we can drop that PersistentSymbolTable and CodeModel stuff | <-> |
TO DO | Code Completion | create a phpdoc comment for functions / classes, see bug #95904 | <-> |
TO DO | Code Completion | use PDTT tests http://wiki.eclipse.org/PDTT_-_PHP_5.3_Code_Assist_Tests | <-> |
TO DO | Code Completion | don't do autocompletion in strings, except for callback types | <->
|
IN PROGRESS | Problem reporting | Niko Sams <[email protected]> | |
DONE | Problem reporting | don't create problems for not found declarations - instead do it as Cpp does - so it is even configurable | Niko Sams <[email protected]> |
TO DO | Problem reporting | give reasonable error messages | <-> |
TO DO | Problem reporting | validate declaration visibility | <-> |
TO DO | Problem reporting | configurable: report unreachable code (i.e. after return) | <-> |
TO DO | Problem reporting | configurable: variable assignment instead of bool check | <-> |
TO DO | Problem reporting | don't build declarations/types/uses/contexts for erroneous declarations | <-> |
DONE | Problem reporting | validate redeclarations, esp. classes, functions, methods etc. | Milian Wolff <[email protected]> |
TO DO | Problem reporting | respect "semantic error highlighting" option | <-> |
DONE | Problem reporting | support different severities | Milian Wolff <[email protected]>
|
DONE | Internal Php functions | extract functions from php manual | Niko Sams <[email protected]> |
DONE | Internal Php functions | add superglobal variables ($_GET, ...) | Niko Sams <[email protected]> |
TO DO | Internal Php functions | configurable: ignore deprecated autoglobals like $argv, $HTTP_*_VARS | <-> |
DONE | Internal Php functions | add @since for functions only avaliable in Php 5.3 | Milian Wolff <[email protected]>
|
TO DO | CodeGeneration | new Class with support for extends/implements | <-> |
TO DO | CodeGeneration | file template with proper phpdoc/doxygen comment | <-> |
TO DO | CodeGeneration | Assistant popup for creating missing include files | <->
|
IN PROGRESS | Semantic Highlighting | <-> | |
DONE | Semantic Highlighting | make colors of member variables
and esp. of "$this" consistent |
Milian Wolff <[email protected]> |
TO DO | Semantic Highlighting | highlight defines differently | <-> |
TO DO | Semantic Highlighting | highlight local variables in global context like local variable in func context | <->
|
IN PROGRESS | Debugger | Full-Featured Debugger (XDebug) | Niko Sams <[email protected]>
|
TO DO | Unit Tests | refactor tests to reduce repeated code | <-> |
TO DO | Unit Tests | introduce tests for problem reporting | <->
|
IN PROGRESS | Documentation | integrate PHP.net documentation into KDevelop | Milian Wolff <[email protected]> |
DONE | Documentation | remote php.net integrated | Milian Wolff <[email protected]> |
IN PROGRESS | Documentation | integrate local copy of PHP.net documentation | Milian Wolff <[email protected]>
|
DONE | Indenter | write an indenter script based on the C-style indenter which does not work for PHP due to <?php...?> tags
Note: cstyle.js works fine for PHP |
Milian Wolff <[email protected]>
|
TO DO | Assistant | take a look on where to integrate the assistant architecture | <->
|
TO DO | Formatter | Add a formatter plugin for the PHP beautifier | <-> |
Fix PHP-related Quanta bugs (list of bugs containing "PHP" keyword in products: kate, kdevelop, kdevplatform, quanta)
Kate PHP Highlighting
There are some bugs in the general PHP highlighting for Kate and other KTextEditor components. Note: Make sure to fix it in all files which use PHP.
Status | Category | Description | Contact |
---|---|---|---|
DONE | keywords | fix <?PHP ,i.e. capital PHP | Milian Wolff <[email protected]> |
DONE | constants | add missing magic constants, see http://de3.php.net/language.constants.predefined | Milian Wolff <[email protected]> |
Cleanup
Various stuff we should investigate and probably cleanup one day. Listed here so I don't forget them:
- make sure all iterators are const where possible
- be krazy
Known Limitations
return-type in recursive functions
In the following snippet, the variable $foo will have the wrong type mixed, instead of stdClass:
function bar() {
$bar = bar();
return new stdClass;
}
You can workaround that, by adding a @param stdClass to the doccomment of the function.