-
Notifications
You must be signed in to change notification settings - Fork 127
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Cppcheck suppressions set 56 #38744
base: main
Are you sure you want to change the base?
Cppcheck suppressions set 56 #38744
Conversation
Py_RETURN_NONE renamed to Py_NONE and return removed (now to be done manually) as not used anywhere else and was confusing cppcheck with missing return. Had to make lambda function wrapper if wanted to return const pointer in AlgorithmProperty.cpp Co-authored-by: Mohamed Almaki <[email protected]>
0f31aaf
to
4cdedb9
Compare
Cancelling other tests as it seems there are genuine failures |
Framework/PythonInterface/mantid/api/src/Exports/AlgorithmProperty.cpp
Outdated
Show resolved
Hide resolved
4cdedb9
to
53c7a22
Compare
This is ready for review as I resolved the issue, do you have any additions? @RichardWaiteSTFC |
No, thanks for setting ready to review and for fixing the above issue! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Overall all good, I would only request changes to one of these, which is the cstyle casts, see below my comment.
@@ -20,6 +20,8 @@ void export_IFunction1D() { | |||
*/ | |||
class_<IFunction1D, bases<IFunction>, std::shared_ptr<IFunction1DAdapter>, boost::noncopyable>( | |||
"IFunction1D", "Base class for 1D Fit functions") | |||
// suppress c-style cast of Function1D object - think this is desired behaviour | |||
// cppcheck-suppress cstyleCast | |||
.def("function1D", (object(IFunction1DAdapter::*)(const object &) const)&IFunction1DAdapter::function1D, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
.def("function1D", (object(IFunction1DAdapter::*)(const object &) const)&IFunction1DAdapter::function1D, | |
.def("function1D", static_cast<object(IFunction1DAdapter::*)(const object &) const>(&IFunction1DAdapter::function1D), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm fairly confident these types of cstyle casts can be replaced by static_cast
(see https://cplusplus.com/articles/iG3hAqkS/) . I tried around with replacing several of these casts with static_cast
in IFunction.cpp
and IFunction1D.cpp
and ran the following script:
from mantid.api import IFunction1D
from mantid.kernel import StringListValidator, StringContainsValidator, FloatBoundedValidator
# You choose which type you would like by picking the super class
class Example1DFunction(IFunction1D): # or IPeakFunction
def init(self):
# Parameter with default value 1.0
self.declareParameter("Constant", 1.0)
self.declareAttribute("FloatAtt", 3.0, FloatBoundedValidator(0.0, 5.0))
self.declareAttribute("StringContainsAtt", "StringContains", StringContainsValidator(["Contains"]))
self.declareAttribute("someAttr", 3.0)
def function1D(self, xvals):
# Access current values during the fit
c = self.getParameterValue("C")
return c*numpy.sqrt(xvals)
def category(self):
return 'Examples'
def setAttributeValue(self, name, value):
if name == "NLoops":
# Can the be accessed quicker later using self._nloops
self._nloops = value
# Register with Mantid
FunctionFactory.subscribe(Example1DFunction)
And Mantid did not complain about these static_casts
in declareParameter
, declareAttribute
or function1D
. In these export files I think we can confidently use static_cast
to replace cstyle casts.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks @GuiMacielPereira for this suggestion and for the checks, I think I tried something like this but must have got the syntax wrong!
@@ -41,6 +41,7 @@ void export_IMaskWorkspace() { | |||
.def("isMasked", isMaskedFromList, (arg("self"), arg("detector_id_list")), | |||
"Returns whether all of the given detector ID list are masked"); | |||
|
|||
// register pointers | |||
// register pointers - required to map between C++ type T and python type | |||
// cppcheck-suppress unusedScopedObject |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah, I don't think there is a way around this one 👍
22356ce
to
53c7a22
Compare
Description of work
There is no associated issue. Part of cpp hackathon
Report to: @cailafinn
To test:
CI passes
This does not require release notes because will not affect the user
Reviewer
Please comment on the points listed below (full description).
Your comments will be used as part of the gatekeeper process, so please comment clearly on what you have checked during your review. If changes are made to the PR during the review process then your final comment will be the most important for gatekeepers. In this comment you should make it clear why any earlier review is still valid, or confirm that all requested changes have been addressed.
Code Review
Functional Tests
Does everything look good? Mark the review as Approve. A member of
@mantidproject/gatekeepers
will take care of it.Gatekeeper
If you need to request changes to a PR then please add a comment and set the review status to "Request changes". This will stop the PR from showing up in the list for other gatekeepers.