Skip to content

Fix issues with group functions#2410

Merged
droidmonkey merged 2 commits intodevelopfrom
fix/group-issues
Oct 30, 2018
Merged

Fix issues with group functions#2410
droidmonkey merged 2 commits intodevelopfrom
fix/group-issues

Conversation

@droidmonkey
Copy link
Copy Markdown
Member

@droidmonkey droidmonkey commented Oct 22, 2018

Description

Resolves #2408

Just some cleanup and streamlining in the Group class. Eliminated function that had undetermined results based on heuristics of the input (Group::findEntry). Aligned Group::findEntryByPath with Group::findGroupByPath.

Eliminated unnecessary Q_ASSERTS and integrated the checks into the code function instead.

Recommendation: rename Group::children() to Group::groups(). Children overshadows QObject function AND it is the only place where the name children is used, otherwise we just call them groups...

Recommendation 2: Look for other places where QString::isNull() is used and evaluate whether it makes sense. This function is for legacy purposes only and QString::isEmpty() is preferred by the Qt Docs.

Types of changes

  • ✅ Refactor of code

Checklist:

  • ✅ I have read the CONTRIBUTING document. [REQUIRED]
  • ✅ My code follows the code style of this project. [REQUIRED]
  • ✅ All new and existing tests passed. [REQUIRED]
  • ✅ I have compiled and verified my code with -DWITH_ASAN=ON. [REQUIRED]
  • ✅ My change requires a change to the documentation and I have updated it accordingly.
  • ✅ I have added tests to cover my changes.

@droidmonkey droidmonkey added the pr: refactoring Pull request refactors code label Oct 22, 2018
@droidmonkey droidmonkey added this to the v2.4.0 milestone Oct 22, 2018
@droidmonkey droidmonkey requested a review from phoerious October 22, 2018 22:34
for (Entry* entry : entriesRecursive(false)) {
if (entry->title() == entryId) {
return entry;
if (!uuid.isNull()) {
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

if (uuid.isNull()) {
    return nullptr;
}

Copy link
Copy Markdown
Member Author

@droidmonkey droidmonkey Oct 28, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why? then this function would have three return statements (short circuit, in-loop, and fall-through). I don't agree with that approach. I actually changed it specifically to this fashion because the old method was confusing.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You have three indentation levels here. I prefer keeping it shallow.

for (Group* group : asConst(m_children)) {
Entry* entry = group->findEntryByPath(entryPath, basePath + group->name() + QString("/"));
for (Group* group : children()) {
Entry* entry = group->findEntryByPathRecursion(entryPath, basePath + group->name() + "/");
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Recursive

for (Group* group : groupsRecursive(true)) {
if (group->uuid() == uuid) {
return group;
if (!uuid.isNull()) {
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See above.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same comment, changing this will create three return statements unnecessarily

// An invalid UUID.
entry = db->rootGroup()->findEntry(QString("febfb01ebcdf9dbd90a3f1579dc"));
entry = db->rootGroup()->findEntryByUuid(QUuid("febfb01ebcdf9dbd90a3f1579dc"));
QVERIFY(entry == nullptr);
Copy link
Copy Markdown
Member

@phoerious phoerious Oct 23, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

QVERIFY(!entry);

QVERIFY(entry == nullptr);

entry = db->rootGroup()->findEntryByPath({});
QVERIFY(entry == nullptr);
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ditto.

@phoerious phoerious added the bug label Oct 23, 2018
@droidmonkey droidmonkey force-pushed the fix/group-issues branch 2 times, most recently from b6519bf to a1d9f66 Compare October 30, 2018 11:52
@droidmonkey
Copy link
Copy Markdown
Member Author

changes made to short circuit return nullptr.

@droidmonkey droidmonkey merged commit fa687f2 into develop Oct 30, 2018
@droidmonkey droidmonkey deleted the fix/group-issues branch October 30, 2018 12:42
droidmonkey added a commit that referenced this pull request Mar 19, 2019
- New Database Wizard [#1952]
- Advanced Search [#1797]
- Automatic update checker [#2648]
- KeeShare database synchronization [#2109, #1992, #2738, #2742, #2746, #2739]
- Improve favicon fetching; transition to Duck-Duck-Go [#2795, #2011, #2439]
- Remove KeePassHttp support [#1752]
- CLI: output info to stderr for easier scripting [#2558]
- CLI: Add --quiet option [#2507]
- CLI: Add create command [#2540]
- CLI: Add recursive listing of entries [#2345]
- CLI: Fix stdin/stdout encoding on Windows [#2425]
- SSH Agent: Support OpenSSH for Windows [#1994]
- macOS: TouchID Quick Unlock [#1851]
- macOS: Multiple improvements; include CLI in DMG [#2165, #2331, #2583]
- Linux: Prevent Klipper from storing secrets in clipboard [#1969]
- Linux: Use polling based file watching for NFS [#2171]
- Linux: Enable use of browser plugin in Snap build [#2802]
- TOTP QR Code Generator [#1167]
- High-DPI Scaling for 4k screens [#2404]
- Make keyboard shortcuts more consistent [#2431]
- Warn user if deleting referenced entries [#1744]
- Allow toolbar to be hidden and repositioned [#1819, #2357]
- Increase max allowed database timeout to 12 hours [#2173]
- Password generator uses existing password length by default [#2318]
- Improve alert message box button labels [#2376]
- Show message when a database merge makes no changes [#2551]
- Browser Integration Enhancements [#1497, #2253, #1904, #2232, #1850, #2218, #2391, #2396, #2542, #2622, #2637, #2790]
- Overall Code Improvements [#2316, #2284, #2351, #2402, #2410, #2419, #2422, #2443, #2491, #2506, #2610, #2667, #2709, #2731]
@phoerious phoerious added pr: bugfix Pull request fixes a bug and removed bug labels Nov 22, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

pr: bugfix Pull request fixes a bug pr: refactoring Pull request refactors code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

ASSERT: "!uuid.isNull()" in file Group.cpp, line 584

2 participants