[owncloud-devel] Defensive programming

Vincent Petry pvince81 at owncloud.com
Wed Feb 4 12:14:17 GMT 2015


Hello,

After debugging several bugs, I recently found that many pieces of the
core code is assuming that a function call will always return the
expected value.

There were many scenarios where a given bug was causing \OCP::getUser()
to return null but the code would carry on working with that null value,
and cause side-effects:
https://github.com/owncloud/core/blob/stable7/apps/files_encryption/hooks/hooks.php#L438

I suggest that from now on we try and code more defensively.
This means that we want to check for correct values more often.
For example when the current user is needed, check for "null" afterwards
and throw an exception / log a warning instead of letting the code continue.

Here is another example: https://github.com/owncloud/core/issues/13862
And here when `getRelativePath()` fails, it is not a normal situation,
we need to throw an exception instead of continuing:
https://github.com/owncloud/core/blob/master/lib/private/files/view.php#L792

What do you think ?

I have raised https://github.com/owncloud/core/issues/13885 with a list
of cases that can be fixed. If you know of other places in the code that
can be improved that way, please add them in the checklist (and/or
submit a PR to fix them)

Thanks,

Vincent

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: OpenPGP digital signature
URL: <http://mailman.owncloud.org/pipermail/devel/attachments/20150204/26988a25/attachment.sig>


More information about the Devel mailing list