SMTK issueshttps://gitlab.kitware.com/cmb/smtk/-/issues2020-09-30T10:39:30-04:00https://gitlab.kitware.com/cmb/smtk/-/issues/392Serialize graph resources2020-09-30T10:39:30-04:00David ThompsonSerialize graph resourcesDavid ThompsonDavid Thompsonhttps://gitlab.kitware.com/cmb/smtk/-/issues/391qtGroupItem display problems inside attribute views2020-09-25T09:58:38-04:00John TourtellottqtGroupItem display problems inside attribute viewsThe ATS templates are pretty complicated and we are seeing some layout issues in attribute views when there are more than 1 GroupItem in an attribute. To demonstrate:
* Unzip these template files: [templates.tgz](/uploads/e18990915a51fc...The ATS templates are pretty complicated and we are seeing some layout issues in attribute views when there are more than 1 GroupItem in an attribute. To demonstrate:
* Unzip these template files: [templates.tgz](/uploads/e18990915a51fc9889e9b9857d653e76/templates.tgz).
* Open the `attribute-view-problem.sbt` file in either modelbuilder or qtAttributePreview.
* In the `Process Kernels` tab, create a new attribute and note that the "function" and "WRM evaluators" groups are both fixed height and clipping their content.
Here is a screenshot showing the difference between displaying the same attribute in an Attribute View (left) and Instanced View (right).
![image](/uploads/7a30f3251d511d7799fd9f7fa968f94d/image.png)
Note: This might be a known issue, and is probably related to #377.https://gitlab.kitware.com/cmb/smtk/-/issues/386Setting semi-transparent color affects visibility of other components.2020-09-03T11:22:24-04:00David ThompsonSetting semi-transparent color affects visibility of other components.See aeva/aeva#98 for details and steps to reproduce. This is likely a bug in either the SMTK representation or the composite polydata mapper.
fyi @tjcorona @bob.obaraSee aeva/aeva#98 for details and steps to reproduce. This is likely a bug in either the SMTK representation or the composite polydata mapper.
fyi @tjcorona @bob.obarahttps://gitlab.kitware.com/cmb/smtk/-/issues/385Z-fighting with "Surface with Edges" representation2020-09-02T14:26:08-04:00T.J. CoronaZ-fighting with "Surface with Edges" representationTo reproduce:
- File->New Resource->Regular Grid->3 Dimension
- Select "Surface with Edges"
- Select domainTo reproduce:
- File->New Resource->Regular Grid->3 Dimension
- Select "Surface with Edges"
- Select domainhttps://gitlab.kitware.com/cmb/smtk/-/issues/377qtGroupItem needs scrollbars2020-09-24T17:51:36-04:00Robert M. O'BaraqtGroupItem needs scrollbarsIf a groupItem has lots of elements the UI panel gets overwhelmed.If a groupItem has lots of elements the UI panel gets overwhelmed.Robert M. O'BaraRobert M. O'Barahttps://gitlab.kitware.com/cmb/smtk/-/issues/374Buttons on Window "Create Uniform Grid Information" not selectable while pare...2020-06-23T10:20:11-04:00Bryan CulverButtons on Window "Create Uniform Grid Information" not selectable while parent window is open.# Steps to reproduce:
- Open ModelBuilder and from the menu select "File --> New Resource --> Mesh"
- Select the "Info" button.
## Current results:
New modal or window can be moved around, but all other interactions produce no resul...# Steps to reproduce:
- Open ModelBuilder and from the menu select "File --> New Resource --> Mesh"
- Select the "Info" button.
## Current results:
New modal or window can be moved around, but all other interactions produce no results until the parent window/modal is closed.
## Expected results:
New window displays information about the "Create Uniform Grid" window and should be closed before interaction with the "Create Uniform Grid" window continues.
## Observation notes:
"Information" window cannot be closed and selecting any buttons yields no results until after the "Create Uniform Grid" window is closed. This bug also occurs when using "File --> New Resource --> Polygon"https://gitlab.kitware.com/cmb/smtk/-/issues/373Do not advertise unwanted support for filetypes2020-06-20T10:24:31-04:00David ThompsonDo not advertise unwanted support for filetypesSometimes applications do not want to support filetypes that SMTK supports (e.g., aeva does not want smtk::mesh to advertise its support for STL files, VTK data — see aeva/aeva#43 , aeva/aeva#47 ). SMTK should provide applications with a...Sometimes applications do not want to support filetypes that SMTK supports (e.g., aeva does not want smtk::mesh to advertise its support for STL files, VTK data — see aeva/aeva#43 , aeva/aeva#47 ). SMTK should provide applications with a way to either remove registered reader/importer functionality by filetype or explicitly add filetypes.https://gitlab.kitware.com/cmb/smtk/-/issues/372Resource visibility state is not saved and honored on reload2020-06-17T15:14:59-04:00chart3388Resource visibility state is not saved and honored on reloadIf you open some geometry, toggle the visibility to off in the resource panel, save the resource, and then reload it, the visibility is back on. The state did not follow the save state and reload.If you open some geometry, toggle the visibility to off in the resource panel, save the resource, and then reload it, the visibility is back on. The state did not follow the save state and reload.https://gitlab.kitware.com/cmb/smtk/-/issues/370Problem with attribute View first column width2020-06-10T15:03:09-04:00John TourtellottProblem with attribute View first column widthThe qtAttributeView resizes the alert column when data is first entered on one of the attribute items. To demonstrate in modelbuilder:
* Load the attached [test-alerts.sbt](/uploads/c998b671b2a701add7991fd8154a1a38/test-alerts.sbt) file...The qtAttributeView resizes the alert column when data is first entered on one of the attribute items. To demonstrate in modelbuilder:
* Load the attached [test-alerts.sbt](/uploads/c998b671b2a701add7991fd8154a1a38/test-alerts.sbt) file.
* In the "Rectangle" tab, click "New" to create an attribute. Note that the alert icon is displayed in the first row and column of attribute list.
* At the bottom of the tab, click on the first value in the "LowerCoord" item, enter 0, then `<Enter>`.
In the attribute list, the alert icon remains displayed as it should. The problem is that the first column has resized itself to 3X or 4X the correct width.
![image](/uploads/8f176fa2b6f4cb83a4e2678cbf829cd3/image.png)
Side note: this issue was originally reported as part of #364.Feimi YuFeimi Yuhttps://gitlab.kitware.com/cmb/smtk/-/issues/367Problem displaying optional qtGroupItems2020-06-09T10:35:36-04:00John TourtellottProblem displaying optional qtGroupItemsThe vertical layout is misconfigured for GroupItem instances that are optional. To reproduce in modelbuilder:
1. Load the [group-example.sbt](/uploads/c4e1116abb12ed94a4249fd5a60b6472/group-example.sbt) file, which contains one instance...The vertical layout is misconfigured for GroupItem instances that are optional. To reproduce in modelbuilder:
1. Load the [group-example.sbt](/uploads/c4e1116abb12ed94a4249fd5a60b6472/group-example.sbt) file, which contains one instanced attribute with two group items "Standard Group" and "Optional Group".
2. **Problem 1: The text for "Optional Group" is clipped at the bottom.**
3. Click the checkbox to enable the "Optional Group".
4. **Problem 2: The first item in the "Optional Group" is displayed on top of the group label itself.**
![group-example](/uploads/1f004e936c6726d73274655eb88c7dd9/group-example.png)https://gitlab.kitware.com/cmb/smtk/-/issues/358Custom plugin subphrase generators2020-05-04T20:03:37-04:00David ThompsonCustom plugin subphrase generatorsPlugins should be able to specify how their resources/components are organized in a qtResourceBrowser widget/view.
Note that this is in tension with the desire for
+ workflows to have control over what the resource panel shows and
+ use...Plugins should be able to specify how their resources/components are organized in a qtResourceBrowser widget/view.
Note that this is in tension with the desire for
+ workflows to have control over what the resource panel shows and
+ users to have control over the style of presentation.David ThompsonDavid Thompsonhttps://gitlab.kitware.com/cmb/smtk/-/issues/354Ghostflow container2020-04-29T09:21:01-04:00David ThompsonGhostflow containerSeveral issues prevent me from using the docker ghostflow container to do reformatting locally (before pushing to gitlab):
1. The `git config alias.ghostflow ...` alias in !2032 did not work on macos because the leading bang(!) needs es...Several issues prevent me from using the docker ghostflow container to do reformatting locally (before pushing to gitlab):
1. The `git config alias.ghostflow ...` alias in !2032 did not work on macos because the leading bang(!) needs escaping.
2. The `git config alias.ghostflow ...` alias in !2032 did not work on macos because of restrictions on mounting local directories:
a. The source path `.` is too short and had to be changed from `-v .:/root:Z` to `-v $(pwd):/root:Z`.
b. The macos docker application must be told to allow remounts of your SMTK repo.
3. Even with the fixes above, ghostflow does not appear to find the git repository:
```text
% git ghostflow -d check run topic -t master
thread 'main' panicked at 'FindGitDir { output: "fatal: not a git repository (or any parent up to mount point /)\nStopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).\n" }', /usr/local/cargo/git/checkouts/rust-ghostflow-85ea5c8e1c9c24a2/e7ee220/ghostflow-cli/src/main.rs:310:21
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
```Ben BoeckelBen Boeckelhttps://gitlab.kitware.com/cmb/smtk/-/issues/339Multiscale session does not configure2020-03-09T14:21:02-04:00Aron HelserMultiscale session does not configure`smtk/session/multiscale` has not been updated to the new paraview plugin arrangement - it references `add_smtk_plugin` which is no longer defined.
Enable `SMTK_ENABLE_MULTISCALE_SESSION` in cmake to reproduce.
Should this session be r...`smtk/session/multiscale` has not been updated to the new paraview plugin arrangement - it references `add_smtk_plugin` which is no longer defined.
Enable `SMTK_ENABLE_MULTISCALE_SESSION` in cmake to reproduce.
Should this session be removed?https://gitlab.kitware.com/cmb/smtk/-/issues/335smtk::common::Paths s_executable never set?2020-02-26T16:30:46-05:00Aron Helsersmtk::common::Paths s_executable never set?Looks like `Paths::s_executable` and `Paths::s_executableDir` maybe got confused, and `Paths::s_executable` is never set? I don't see it set in the platform-specific helpers, either.Looks like `Paths::s_executable` and `Paths::s_executableDir` maybe got confused, and `Paths::s_executable` is never set? I don't see it set in the platform-specific helpers, either.https://gitlab.kitware.com/cmb/smtk/-/issues/313Support SON (sequential object notation) to JSON transformer2019-12-12T15:26:32-05:00Ben BoeckelSupport SON (sequential object notation) to JSON transformerSome files use SON rather than JSON for their storage. It looks like an easy transformation to JSON to then push into a standard JSON reader.
https://github.com/flokno/son
Cc: @tjcorona @bob.obaraSome files use SON rather than JSON for their storage. It looks like an easy transformation to JSON to then push into a standard JSON reader.
https://github.com/flokno/son
Cc: @tjcorona @bob.obarahttps://gitlab.kitware.com/cmb/smtk/-/issues/310Enable LSan again2019-12-04T17:46:19-05:00Ben BoeckelEnable LSan againThe following discussion from !1859 should be addressed:
- [ ] @ben.boeckel started a [discussion](https://gitlab.kitware.com/cmb/smtk/merge_requests/1859#note_662742):
> We'll need to write up suppression files for LSan at some p...The following discussion from !1859 should be addressed:
- [ ] @ben.boeckel started a [discussion](https://gitlab.kitware.com/cmb/smtk/merge_requests/1859#note_662742):
> We'll need to write up suppression files for LSan at some point. Or fix the bugs upstream.
Valgrind will likely need similar treatment.
Cc: @tjcoronahttps://gitlab.kitware.com/cmb/smtk/-/issues/307Add Doxygen to gitlab-ci2019-11-27T08:05:55-05:00Ben BoeckelAdd Doxygen to gitlab-ciAdd a Doxygen builder to gitlab-ci. Eventually we should ensure that it is warning-clean. We can also add a job to upload it somewhere on branches which will involve secrets at some point.Add a Doxygen builder to gitlab-ci. Eventually we should ensure that it is warning-clean. We can also add a job to upload it somewhere on branches which will involve secrets at some point.Aron HelserAron Helserhttps://gitlab.kitware.com/cmb/smtk/-/issues/306Set FAIL_REGULAR_EXPRESSION on SMTK tests2019-11-27T08:04:28-05:00Ben BoeckelSet FAIL_REGULAR_EXPRESSION on SMTK testsSMTK and VTK sometimes log errors deep in the call stack, but don't return an error to the caller. CTest should detect these output strings and fail the test if they show up. The regexes should match the format SMTK and VTK output their ...SMTK and VTK sometimes log errors deep in the call stack, but don't return an error to the caller. CTest should detect these output strings and fail the test if they show up. The regexes should match the format SMTK and VTK output their error messages pretty strictly to avoid false positives.
Cc: @tjcoronahttps://gitlab.kitware.com/cmb/smtk/-/issues/304Add IWYU builders to CI2021-03-22T22:18:40-04:00Ben BoeckelAdd IWYU builders to CIAdd IWYU (include-what-you-use) builders to gitlab-ci. Looks like it is similar to clang-tidy and involves a `CMAKE_<LANG>_INCLUDE_WHAT_YOU_USE` variable to set the property on targets.
There is support for a "mapping file" that CMake h...Add IWYU (include-what-you-use) builders to gitlab-ci. Looks like it is similar to clang-tidy and involves a `CMAKE_<LANG>_INCLUDE_WHAT_YOU_USE` variable to set the property on targets.
There is support for a "mapping file" that CMake has [here](https://gitlab.kitware.com/cmake/cmake/blob/master/Utilities/IWYU/mapping.imp). Not sure how much SMTK will need it.https://gitlab.kitware.com/cmb/smtk/-/issues/302Clang tidy warnings2019-12-07T16:06:09-05:00Ben BoeckelClang tidy warningsI've started a `clang-tidy` builder in !1850. Here are some interesting things:
@tjcorona
```
/builds/ben.boeckel/smtk/build/../thirdparty/delaunay/Source/Discretization/ExcisePolygon.cc:53:3: warning: Forming reference to null pointe...I've started a `clang-tidy` builder in !1850. Here are some interesting things:
@tjcorona
```
/builds/ben.boeckel/smtk/build/../thirdparty/delaunay/Source/Discretization/ExcisePolygon.cc:53:3: warning: Forming reference to null pointer [clang-analyzer-core.NonNullParamChecker]
removeBoundedRegion(*firstEdge.first, firstEdge.second, mesh);
^
/builds/ben.boeckel/smtk/build/../thirdparty/delaunay/Source/Discretization/ExcisePolygon.cc:36:38: note: Calling default constructor for 'pair<const Delaunay::Mesh::Edge *, bool>'
std::pair<const Mesh::Edge*, bool> firstEdge;
^
/usr/bin/../lib/gcc/x86_64-redhat-linux/9/../../../../include/c++/9/bits/stl_pair.h:230:9: note: Null pointer value stored to 'firstEdge.first'
: first(), second() { }
^
/builds/ben.boeckel/smtk/build/../thirdparty/delaunay/Source/Discretization/ExcisePolygon.cc:36:38: note: Returning from default constructor for 'pair<const Delaunay::Mesh::Edge *, bool>'
std::pair<const Mesh::Edge*, bool> firstEdge;
^
/builds/ben.boeckel/smtk/build/../thirdparty/delaunay/Source/Discretization/ExcisePolygon.cc:37:24: note: Assuming the condition is false
for (unsigned i = 0; i < polygon.GetPoints().size(); ++i)
^
/builds/ben.boeckel/smtk/build/../thirdparty/delaunay/Source/Discretization/ExcisePolygon.cc:37:3: note: Loop condition is false. Execution continues on line 52
for (unsigned i = 0; i < polygon.GetPoints().size(); ++i)
^
/builds/ben.boeckel/smtk/build/../thirdparty/delaunay/Source/Discretization/ExcisePolygon.cc:53:3: note: Forming reference to null pointer
removeBoundedRegion(*firstEdge.first, firstEdge.second, mesh);
^
```
What should `ExcisePolygon` do if given a polygone with no points? Only one point?
```
/builds/ben.boeckel/smtk/build/../thirdparty/delaunay/Source/Discretization/ConstrainedDelaunayMesh.cc:93:3: warning: Forming reference to null pointer [clang-analyzer-core.NonNullParamChecker]
removeBoundedRegion(*firstEdge.first, !firstEdge.second, *augmentedMesh);
^
/builds/ben.boeckel/smtk/build/../thirdparty/delaunay/Source/Discretization/ConstrainedDelaunayMesh.cc:44:7: note: Assuming 'inSitu' is true
if (inSitu)
^
/builds/ben.boeckel/smtk/build/../thirdparty/delaunay/Source/Discretization/ConstrainedDelaunayMesh.cc:44:3: note: Taking true branch
if (inSitu)
^
/builds/ben.boeckel/smtk/build/../thirdparty/delaunay/Source/Discretization/ConstrainedDelaunayMesh.cc:74:38: note: Calling default constructor for 'pair<const Delaunay::Mesh::Edge *, bool>'
std::pair<const Mesh::Edge*, bool> firstEdge;
^
/usr/bin/../lib/gcc/x86_64-redhat-linux/9/../../../../include/c++/9/bits/stl_pair.h:230:9: note: Null pointer value stored to 'firstEdge.first'
: first(), second() { }
^
/builds/ben.boeckel/smtk/build/../thirdparty/delaunay/Source/Discretization/ConstrainedDelaunayMesh.cc:74:38: note: Returning from default constructor for 'pair<const Delaunay::Mesh::Edge *, bool>'
std::pair<const Mesh::Edge*, bool> firstEdge;
^
/builds/ben.boeckel/smtk/build/../thirdparty/delaunay/Source/Discretization/ConstrainedDelaunayMesh.cc:75:24: note: Assuming the condition is false
for (unsigned i = 0; i < polygon.GetPoints().size(); ++i)
^
/builds/ben.boeckel/smtk/build/../thirdparty/delaunay/Source/Discretization/ConstrainedDelaunayMesh.cc:75:3: note: Loop condition is false. Execution continues on line 92
for (unsigned i = 0; i < polygon.GetPoints().size(); ++i)
^
/builds/ben.boeckel/smtk/build/../thirdparty/delaunay/Source/Discretization/ConstrainedDelaunayMesh.cc:93:3: note: Forming reference to null pointer
removeBoundedRegion(*firstEdge.first, !firstEdge.second, *augmentedMesh);
^
```
Seems to be the same thing for a different operator.
Seem to be lots of others. You can see them here: https://gitlab.kitware.com/ben.boeckel/smtk/-/jobs/4702819
cJSON seems to have an…unfortunate relationship with the `strcpy` and `memcpy` functions. Why does this still exist? Why are we not using nlohmann_json instead? @dcthomp
Some other interesting things:
```
/builds/ben.boeckel/smtk/build/../smtk/attribute/ModelEntityItemDefinition.cxx:27:3: warning: Call to virtual function during construction [clang-analyzer-optin.cplusplus.VirtualCall]
this->setAcceptsEntries(smtk::common::typeName<smtk::model::Resource>(), "", true);
^
/builds/ben.boeckel/smtk/build/../smtk/attribute/ModelEntityItemDefinition.cxx:27:3: note: This constructor of an object of type 'ModelEntityItemDefinition' has not returned when the virtual method was called
/builds/ben.boeckel/smtk/build/../smtk/attribute/ModelEntityItemDefinition.cxx:27:3: note: Call to virtual function during construction
```
```
/builds/ben.boeckel/smtk/build/../smtk/mesh/moab/BufferedCellAllocator.cxx:49:3: warning: Call to virtual function during destruction [clang-analyzer-optin.cplusplus.VirtualCall]
this->flush();
^
/builds/ben.boeckel/smtk/build/../smtk/mesh/moab/BufferedCellAllocator.cxx:49:3: note: This destructor of an object of type '~BufferedCellAllocator' has not returned when the virtual method was called
/builds/ben.boeckel/smtk/build/../smtk/mesh/moab/BufferedCellAllocator.cxx:49:3: note: Call to virtual function during destruction
```
```
/builds/ben.boeckel/smtk/build/../smtk/mesh/moab/MergeMeshVertices.cxx:204:7: warning: Value stored to 'result' is never read [clang-analyzer-deadcode.DeadStores]
result = tree.distance_search(
^
/builds/ben.boeckel/smtk/build/../smtk/mesh/moab/MergeMeshVertices.cxx:204:7: note: Value stored to 'result' is never read
```
Boost memory leak?
```
/root/misc/root/smtk-deps/include/boost/algorithm/string/detail/classification.hpp:135:25: warning: Potential memory leak [clang-analyzer-cplusplus.NewDeleteLeaks]
if(!use_fixed_storage(m_Size) && m_Storage.m_dynSet!=0)
^
/builds/ben.boeckel/smtk/build/../smtk/attribute/Attribute.cxx:234:3: note: Calling 'split<std::vector<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char> > >, const std::__cxx11::basic_string<char> &, boost::algorithm::detail::is_any_ofF<char>>'
boost::split(tree, path, boost::is_any_of(seps));
^
/root/misc/root/smtk-deps/include/boost/algorithm/string/split.hpp:161:17: note: Calling 'token_finder<boost::algorithm::detail::is_any_ofF<char>>'
::boost::algorithm::token_finder( Pred, eCompress ) );
^
/root/misc/root/smtk-deps/include/boost/algorithm/string/finder.hpp:219:20: note: Calling constructor for 'token_finderF<boost::algorithm::detail::is_any_ofF<char>>'
return detail::token_finderF<PredicateT>( Pred, eCompress );
^
/root/misc/root/smtk-deps/include/boost/algorithm/string/detail/finder.hpp:554:25: note: Calling copy constructor for 'is_any_ofF<char>'
m_Pred(Pred), m_eCompress(eCompress) {}
^
/root/misc/root/smtk-deps/include/boost/algorithm/string/detail/classification.hpp:114:21: note: Taking false branch
if(use_fixed_storage(m_Size))
^
/root/misc/root/smtk-deps/include/boost/algorithm/string/detail/classification.hpp:123:44: note: Memory is allocated
m_Storage.m_dynSet=new set_value_type[m_Size];
^
/root/misc/root/smtk-deps/include/boost/algorithm/string/detail/finder.hpp:554:25: note: Returning from copy constructor for 'is_any_ofF<char>'
m_Pred(Pred), m_eCompress(eCompress) {}
^
/root/misc/root/smtk-deps/include/boost/algorithm/string/finder.hpp:219:20: note: Returning from constructor for 'token_finderF<boost::algorithm::detail::is_any_ofF<char>>'
return detail::token_finderF<PredicateT>( Pred, eCompress );
^
/root/misc/root/smtk-deps/include/boost/algorithm/string/split.hpp:161:17: note: Returned allocated memory
::boost::algorithm::token_finder( Pred, eCompress ) );
^
/root/misc/root/smtk-deps/include/boost/algorithm/string/split.hpp:161:51: note: Calling '~is_any_ofF'
::boost::algorithm::token_finder( Pred, eCompress ) );
^
/root/misc/root/smtk-deps/include/boost/algorithm/string/detail/classification.hpp:135:25: note: Potential memory leak
if(!use_fixed_storage(m_Size) && m_Storage.m_dynSet!=0)
^
/root/misc/root/smtk-deps/include/boost/algorithm/string/detail/classification.hpp:139:17: warning: Potential memory leak [clang-analyzer-cplusplus.NewDeleteLeaks]
}
^
/builds/ben.boeckel/smtk/build/../smtk/attribute/Attribute.cxx:234:3: note: Calling 'split<std::vector<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char> > >, const std::__cxx11::basic_string<char> &, boost::algorithm::detail::is_any_ofF<char>>'
boost::split(tree, path, boost::is_any_of(seps));
^
/root/misc/root/smtk-deps/include/boost/algorithm/string/split.hpp:161:17: note: Calling 'token_finder<boost::algorithm::detail::is_any_ofF<char>>'
::boost::algorithm::token_finder( Pred, eCompress ) );
^
/root/misc/root/smtk-deps/include/boost/algorithm/string/finder.hpp:219:55: note: Calling copy constructor for 'is_any_ofF<char>'
return detail::token_finderF<PredicateT>( Pred, eCompress );
^
/root/misc/root/smtk-deps/include/boost/algorithm/string/detail/classification.hpp:114:21: note: Taking false branch
if(use_fixed_storage(m_Size))
^
/root/misc/root/smtk-deps/include/boost/algorithm/string/detail/classification.hpp:123:44: note: Memory is allocated
m_Storage.m_dynSet=new set_value_type[m_Size];
^
/root/misc/root/smtk-deps/include/boost/algorithm/string/finder.hpp:219:55: note: Returning from copy constructor for 'is_any_ofF<char>'
return detail::token_finderF<PredicateT>( Pred, eCompress );
^
/root/misc/root/smtk-deps/include/boost/algorithm/string/finder.hpp:219:55: note: Calling '~is_any_ofF'
/root/misc/root/smtk-deps/include/boost/algorithm/string/detail/classification.hpp:135:51: note: Left side of '&&' is false
if(!use_fixed_storage(m_Size) && m_Storage.m_dynSet!=0)
^
/root/misc/root/smtk-deps/include/boost/algorithm/string/detail/classification.hpp:139:17: note: Potential memory leak
}
^
```
Potential uninitialized read:
```
/builds/ben.boeckel/smtk/build/../smtk/mesh/operators/ExtractByDihedralAngle.cxx:222:7: warning: Branch condition evaluates to a garbage value [clang-analyzer-core.uninitialized.Branch]
if (shellCreated)
^
/builds/ben.boeckel/smtk/build/../smtk/mesh/operators/ExtractByDihedralAngle.cxx:153:7: note: Assuming the condition is false
if (meshset.isValid() == false)
^
/builds/ben.boeckel/smtk/build/../smtk/mesh/operators/ExtractByDihedralAngle.cxx:153:3: note: Taking false branch
if (meshset.isValid() == false)
^
/builds/ben.boeckel/smtk/build/../smtk/mesh/operators/ExtractByDihedralAngle.cxx:164:3: note: 'shellCreated' declared without an initial value
bool shellCreated;
^
/builds/ben.boeckel/smtk/build/../smtk/mesh/operators/ExtractByDihedralAngle.cxx:165:7: note: Assuming the condition is false
if (smtk::mesh::utility::highestDimension(surfaceMesh) == smtk::mesh::Dims3)
^
/builds/ben.boeckel/smtk/build/../smtk/mesh/operators/ExtractByDihedralAngle.cxx:165:3: note: Taking false branch
if (smtk::mesh::utility::highestDimension(surfaceMesh) == smtk::mesh::Dims3)
^
/builds/ben.boeckel/smtk/build/../smtk/mesh/operators/ExtractByDihedralAngle.cxx:197:5: note: Loop condition is false. Execution continues on line 203
for (auto i = smtk::mesh::rangeElementsBegin(newCells);
^
/builds/ben.boeckel/smtk/build/../smtk/mesh/operators/ExtractByDihedralAngle.cxx:206:9: note: Assuming the condition is true
if (toCheck.empty())
^
/builds/ben.boeckel/smtk/build/../smtk/mesh/operators/ExtractByDihedralAngle.cxx:206:5: note: Taking true branch
if (toCheck.empty())
^
/builds/ben.boeckel/smtk/build/../smtk/mesh/operators/ExtractByDihedralAngle.cxx:208:7: note: Execution continues on line 222
break;
^
/builds/ben.boeckel/smtk/build/../smtk/mesh/operators/ExtractByDihedralAngle.cxx:222:7: note: Branch condition evaluates to a garbage value
if (shellCreated)
^
```
```
/builds/ben.boeckel/smtk/build/../smtk/attribute/Definition.cxx:122:21: warning: Value stored to 'def' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
const Definition* def = this;
^
/builds/ben.boeckel/smtk/build/../smtk/attribute/Definition.cxx:122:21: note: Value stored to 'def' during its initialization is never read
```
```
/builds/ben.boeckel/smtk/build/../smtk/mesh/moab/Interface.cxx:1262:5: warning: Value stored to 'rval' is never read [clang-analyzer-deadcode.DeadStores]
rval = m_iface->tag_set_data(btag.moabTag(), moabMeshsets, boolean_tag_values);
^
/builds/ben.boeckel/smtk/build/../smtk/mesh/moab/Interface.cxx:1262:5: note: Value stored to 'rval' is never read
/builds/ben.boeckel/smtk/build/../smtk/mesh/moab/Interface.cxx:1610:5: warning: Value stored to 'rval' is never read [clang-analyzer-deadcode.DeadStores]
rval = m_iface->tag_set_data(btag.moabTag(), moabMeshsets, boolean_tag_values);
^
/builds/ben.boeckel/smtk/build/../smtk/mesh/moab/Interface.cxx:1610:5: note: Value stored to 'rval' is never read
```
```
/builds/ben.boeckel/smtk/build/../smtk/model/operators/AddAuxiliaryGeometry.cxx:152:7: warning: Value stored to 'haveBBox' is never read [clang-analyzer-deadcode.DeadStores]
haveBBox = true;
^
/builds/ben.boeckel/smtk/build/../smtk/model/operators/AddAuxiliaryGeometry.cxx:152:7: note: Value stored to 'haveBBox' is never read
```
```
/builds/ben.boeckel/smtk/build/../smtk/attribute/ReferenceItem.cxx:221:11: warning: Call to virtual function during destruction [clang-analyzer-optin.cplusplus.VirtualCall]
if (this->isSet(i))
^
/builds/ben.boeckel/smtk/build/../smtk/attribute/ReferenceItem.cxx:216:3: note: Taking true branch
if (myAtt != nullptr)
^
/builds/ben.boeckel/smtk/build/../smtk/attribute/ReferenceItem.cxx:219:17: note: Assuming 'i' is < 'n'
for (i = 0; i < n; i++)
^
/builds/ben.boeckel/smtk/build/../smtk/attribute/ReferenceItem.cxx:219:5: note: Loop condition is true. Entering loop body
for (i = 0; i < n; i++)
^
/builds/ben.boeckel/smtk/build/../smtk/attribute/ReferenceItem.cxx:221:11: note: This destructor of an object of type '~ReferenceItem' has not returned when the virtual method was called
if (this->isSet(i))
^
/builds/ben.boeckel/smtk/build/../smtk/attribute/ReferenceItem.cxx:221:11: note: Call to virtual function during destruction
/builds/ben.boeckel/smtk/build/../smtk/attribute/ReferenceItem.cxx:223:9: warning: Call to virtual function during destruction [clang-analyzer-optin.cplusplus.VirtualCall]
this->unset(i);
^
/builds/ben.boeckel/smtk/build/../smtk/attribute/ReferenceItem.cxx:216:3: note: Taking true branch
if (myAtt != nullptr)
^
/builds/ben.boeckel/smtk/build/../smtk/attribute/ReferenceItem.cxx:219:17: note: Assuming 'i' is < 'n'
for (i = 0; i < n; i++)
^
/builds/ben.boeckel/smtk/build/../smtk/attribute/ReferenceItem.cxx:219:5: note: Loop condition is true. Entering loop body
for (i = 0; i < n; i++)
^
/builds/ben.boeckel/smtk/build/../smtk/attribute/ReferenceItem.cxx:221:11: note: Assuming the condition is true
if (this->isSet(i))
^
/builds/ben.boeckel/smtk/build/../smtk/attribute/ReferenceItem.cxx:221:7: note: Taking true branch
if (this->isSet(i))
^
/builds/ben.boeckel/smtk/build/../smtk/attribute/ReferenceItem.cxx:223:9: note: This destructor of an object of type '~ReferenceItem' has not returned when the virtual method was called
this->unset(i);
^
/builds/ben.boeckel/smtk/build/../smtk/attribute/ReferenceItem.cxx:223:9: note: Call to virtual function during destruction
/builds/ben.boeckel/smtk/build/../smtk/attribute/ReferenceItem.cxx:411:58: warning: Call to virtual function during destruction [clang-analyzer-optin.cplusplus.VirtualCall]
auto def = static_cast<const ReferenceItemDefinition*>(this->definition().get());
^
/builds/ben.boeckel/smtk/build/../smtk/attribute/ReferenceItem.cxx:216:3: note: Taking true branch
if (myAtt != nullptr)
^
/builds/ben.boeckel/smtk/build/../smtk/attribute/ReferenceItem.cxx:219:17: note: Assuming 'i' is < 'n'
for (i = 0; i < n; i++)
^
/builds/ben.boeckel/smtk/build/../smtk/attribute/ReferenceItem.cxx:219:5: note: Loop condition is true. Entering loop body
for (i = 0; i < n; i++)
^
/builds/ben.boeckel/smtk/build/../smtk/attribute/ReferenceItem.cxx:221:7: note: Taking true branch
if (this->isSet(i))
^
/builds/ben.boeckel/smtk/build/../smtk/attribute/ReferenceItem.cxx:223:9: note: This destructor of an object of type '~ReferenceItem' has not returned when the virtual method was called
this->unset(i);
^
/builds/ben.boeckel/smtk/build/../smtk/attribute/ReferenceItem.cxx:223:9: note: Calling 'ReferenceItem::unset'
/builds/ben.boeckel/smtk/build/../smtk/attribute/ReferenceItem.cxx:537:3: note: Calling 'ReferenceItem::setObjectValue'
this->setObjectValue(i, PersistentObjectPtr());
^
/builds/ben.boeckel/smtk/build/../smtk/attribute/ReferenceItem.cxx:411:58: note: Call to virtual function during destruction
auto def = static_cast<const ReferenceItemDefinition*>(this->definition().get());
^
```
```
../smtk/model/Instance.txx:51:30: warning: Called C++ object pointer is null [clang-analyzer-core.CallAndMessage]
const auto& sourceCoords = sourceTess->coords();
^
/builds/ben.boeckel/smtk/build/../smtk/model/operators/MergeInstances.cxx:72:7: note: Assuming the condition is false
if (instances.empty())
^
/builds/ben.boeckel/smtk/build/../smtk/model/operators/MergeInstances.cxx:72:3: note: Taking false branch
if (instances.empty())
^
/builds/ben.boeckel/smtk/build/../smtk/model/operators/MergeInstances.cxx:78:3: note: Taking false branch
if (!resource)
^
/builds/ben.boeckel/smtk/build/../smtk/model/operators/MergeInstances.cxx:83:21: note: Calling 'Instance::merge'
Instance merged = Instance::merge(instances);
^
../smtk/model/Instance.txx:163:7: note: Assuming the condition is false
if (instances.empty())
^
../smtk/model/Instance.txx:163:3: note: Taking false branch
if (instances.empty())
^
../smtk/model/Instance.txx:168:7: note: Assuming the condition is false
if (instances.size() == 1)
^
../smtk/model/Instance.txx:168:3: note: Taking false branch
if (instances.size() == 1)
^
../smtk/model/Instance.txx:177:7: note: Assuming 'tess' is non-null
if (!tess)
^
../smtk/model/Instance.txx:177:3: note: Taking false branch
if (!tess)
^
../smtk/model/Instance.txx:187:12: note: Calling 'Instance::clonePlacements'
result = archetype.clonePlacements(all.begin(), all.end(), /* relate */ false);
^
../smtk/model/Instance.txx:31:3: note: Taking false branch
if (!rsrc)
^
../smtk/model/Instance.txx:37:28: note: Assigning value
const auto& sourceTess = this->hasTessellation();
^
../smtk/model/Instance.txx:37:3: note: 'sourceTess' initialized here
const auto& sourceTess = this->hasTessellation();
^
../smtk/model/Instance.txx:39:7: note: Assuming the condition is false
if (this->name().rfind("subset") == std::string::npos)
^
../smtk/model/Instance.txx:39:3: note: Taking false branch
if (this->name().rfind("subset") == std::string::npos)
^
../smtk/model/Instance.txx:43:7: note: Assuming 'sourceTess' is null
if (sourceTess)
^
../smtk/model/Instance.txx:43:3: note: Taking false branch
if (sourceTess)
^
../smtk/model/Instance.txx:51:30: note: Called C++ object pointer is null
const auto& sourceCoords = sourceTess->coords();
^
```
```
../smtk/model/Instance.txx:51:30: warning: Called C++ object pointer is null [clang-analyzer-core.CallAndMessage]
const auto& sourceCoords = sourceTess->coords();
^
/builds/ben.boeckel/smtk/build/../smtk/model/operators/DivideInstance.cxx:58:7: note: Left side of '||' is false
if (!resource || !instance.isValid())
^
/builds/ben.boeckel/smtk/build/../smtk/model/operators/DivideInstance.cxx:58:20: note: Assuming the condition is false
if (!resource || !instance.isValid())
^
/builds/ben.boeckel/smtk/build/../smtk/model/operators/DivideInstance.cxx:58:3: note: Taking false branch
if (!resource || !instance.isValid())
^
/builds/ben.boeckel/smtk/build/../smtk/model/operators/DivideInstance.cxx:70:18: note: Calling 'Instance::divide'
auto divided = instance.divide(/* merge */ false, &children);
^
../smtk/model/Instance.txx:134:37: note: Assuming 'placement' is >= 'size'
for (std::size_t placement = 0; placement < size; ++placement)
^
../smtk/model/Instance.txx:134:5: note: Loop condition is false. Execution continues on line 142
for (std::size_t placement = 0; placement < size; ++placement)
^
../smtk/model/Instance.txx:148:20: note: Calling 'Instance::clonePlacements'
Instance div = this->clonePlacements(entry.begin(), entry.end(), false);
^
../smtk/model/Instance.txx:31:3: note: Taking false branch
if (!rsrc)
^
../smtk/model/Instance.txx:37:28: note: Assigning value
const auto& sourceTess = this->hasTessellation();
^
../smtk/model/Instance.txx:37:3: note: 'sourceTess' initialized here
const auto& sourceTess = this->hasTessellation();
^
../smtk/model/Instance.txx:39:7: note: Assuming the condition is false
if (this->name().rfind("subset") == std::string::npos)
^
../smtk/model/Instance.txx:39:3: note: Taking false branch
if (this->name().rfind("subset") == std::string::npos)
^
../smtk/model/Instance.txx:43:7: note: Assuming 'sourceTess' is null
if (sourceTess)
^
../smtk/model/Instance.txx:43:3: note: Taking false branch
if (sourceTess)
^
../smtk/model/Instance.txx:51:30: note: Called C++ object pointer is null
const auto& sourceCoords = sourceTess->coords();
^
```
And it goes on. I'll just leave it at this list for now; we can chip away at it.
Cc: @bob.obara