V1007. Consider inspecting the first parameter of 'getline' function. V649. Passing 'BSTR ' to the 'SysAllocString' function may lead to incorrect object creation. Function exited without releasing the pointer/handle. MISRA. V110. Potentially unsafe double-checked locking. Void functions dont need a return statement. An item with the same key has already been added. std::cout doesnt know how to handle this (what value would it output?). V572. By clicking Accept all cookies, you agree Stack Exchange can store cookies on your device and disclose information in accordance with our Cookie Policy. V010. Consider inspecting usage of 'Y' counter. V3053. V3067. It is possible that there is an error. Recursive function call during the static/thread_local variable initialization might occur. V106. V3037. V2613. Update: You need to make your function return a vector in every condition as suggested in comments. V690. It is suspicious that the BSTR data type is compared using a relational operator. This is unexpected behavior. V708. Expression inside assert statement can change object's state. Consider inspecting this expression. Not all the members of type are serialized inside 'GetObjectData' method. MISRA. V6051. The return expression is forced to use a floating-point operation by casting one of the operands to double. V695. Appending an element and checking for key uniqueness is performed on two different variables. Which ability is most related to insanity: Wisdom, Charisma, Constitution, or Intelligence? Bit fields should only be declared with explicitly signed or unsigned integer type. MISRA. A pointer/reference parameter in a function should be declared as pointer/reference to const if the corresponding object was not modified. Interpreting non-statistically significant results: Do we have "no evidence" or "insufficient evidence" to reject the null? Calling the 'foo' virtual function in the constructor/destructor may lead to unexpected result at runtime. V6016. Potential division by zero. Label is present inside switch(). The 'foo' include guard is already defined in the 'bar1.h' header. Octal constants should not be used. Expression of the 'A - B > 0' kind will work as 'A != B'. Use a plain return statement to make your intent clear. Possible typo inside the string literal. V3087. This may break the program's logic. A switch-expression should not have Boolean type. Consider inspecting the 'for' operator. V6084. Connect and share knowledge within a single location that is structured and easy to search. Defining absolute path to file or directory is considered a poor coding style. V6103. V1027. V3016. By default, this message is a warning. A void function will automatically return to the caller at the end of the function. Consider inspecting the return statement. Regression: objToJSON "nonvoid function does not return a value" error is back #31463 Closed pkaleta mentioned this issue on Jun 24, 2020 BUG: NUMPY_IMPORT_ARRAY_RETVAL undeclared when installing pandas 0.18.1 #34969 Closed Sign up for free to join this conversation on GitHub . The function expects the file to be opened in one mode, but it was opened in different mode. Consider inspecting the expression. A suspicious label is present inside a switch(). A method can return default null value. To compile the example, create a source code file named C_return_statement.c. V521. V3060. The expression is always false on newer compilers. V6010. Terminal null is present inside a string. Thus, the warning is a very useful one and you should consider yourself lucky that the compiler noticed the bug. Constructor parameter is not used. V1018. MISRA. By clicking Accept all cookies, you agree Stack Exchange can store cookies on your device and disclose information in accordance with our Cookie Policy. The '#pragma warning(push/pop)' should be used instead. Unlike this recommendation, that rule is restricted to functions from the Standard C library. Line splice results in a character sequence that matches the syntax of a universal-character-name. Consider inspecting the loop expression. For example: In the above example, the printHi function has a useful behavior (it prints Hi) but it doesnt need to return anything back to the caller. nlohmann/json.hpp:20017:5: warning: non-void function does not return a value in all control paths [-Wreturn-type] reference operator[](T* key) nlohmann/json.hpp:20925:5: warning: non-void function does not return a value in all control paths [-Wreturn-type] MISRA. V3170. Historically, early returns were frowned upon. Excessive expression. V3130. V2582. It is complaining because within the first for loop, if block returns v but else if block does not return anything. Priority of '+' operation is higher than priority of '<<' operation. Generating points along line with specifying the origin of point generation in QGIS. It is possible that this 'else' branch must apply to the previous 'if' statement. Arguably, this is a shortcoming in the compiler. The '? Passing the value into the 'Foo' method will result in an exception. It is not recommended to return null or throw exceptions from 'toString' / 'clone' methods. Modification of variable is unsequenced relative to another operation on the same variable. The constant NN is being utilized. V2586. Annotation that does not have 'RUNTIME' retention policy will not be accessible through Reflection API. V592. V6060. Expression of the 'A =+ B' kind is used. V648. Dangerous cast of 'this' to 'void*' type in the 'Base' class, as it is followed by a subsequent cast to 'Class' type. The '||' operator is surrounded by opposite expressions 'x' and '!x'. "Signpost" puzzle from Tatham's collection, QGIS automatic fill of the attribute table by expression, Generating points along line with specifying the origin of point generation in QGIS. Check lines: N1, N2. Classes should always be derived from std::exception (and alike) as 'public'. ", "!"? MISRA. Expressions with pointer type should not be used in the '+', '-', '+=' and '-=' operations. The 'X' counter is not used inside a nested loop. Boundary between numeric escape sequence and string is unclear. V2556. V5009. An excessive type cast or check. MISRA. Implicitly specified enumeration constants should be unique consider specifying non-unique constants explicitly. V749. It is possible that different variables are used inside initializer and iterator. Moving an object in a return statement prevents copy elision. It is possible that '1' should be present instead of '0'. The 'default' label should be either the first or the last label of a 'switch' statement. Content Discovery initiative April 13 update: Related questions using a Review our technical responses for the 2023 Developer Survey, C, error: control reaches end of non-void function [-Werror,-Wreturn-type], Control may reach end of non-void function [-Werror,-Wreturn-type]. Looking at the assembly GCC 11.2 generates for this with -O3, we see it has in fact recognized that the union of all cases in the if and else if covers all possibilities: It has generated only two code paths, not three. V2594. This expression can be simplified. Absolute values of both operands are equal. The 'X' variable is used for this loop and outer loops. The consent submitted will only be used for data processing originating from this website. Consider inspecting the loop expression. V5613. To use free version of PVS-Studio, source code files are required to start with a special comment. Consider utilizing an explicit type cast to avoid the loss of a fractional part. Implicit type conversion from enum type to integer type. Potential insecure deserialization vulnerability. Calling an overridden method in parent-class constructor may lead to use of uninitialized data. Consider declaring it as a reference. V734. No objects are passed to the 'std::scoped_lock' constructor. The global namespace should only contain 'main', namespace declarations and 'extern "C"' declarations. Use 'double.IsNaN()' method instead. V1069. It is suspicious that a char or string literal is added to a pointer. Consider inspecting the 'Foo' function call. V3093. Nonsensical comparison of two different functions' addresses. Passing cheap-to-copy argument by reference may lead to decreased performance. The 'goto' statement should not be used. Consider utilizing 64-bit compiler if possible. V101. WPF: the type registered for DependencyProperty does not correspond with the type of the property used to access it. V6097. V3137. V2595. Suspicious string consisting of two parts is used for initialization. V736. V3069. V660. V3049. The ', " or \ characters and the /* or // character sequences should not occur in a header file name. Call of function 'foo' with variable number of arguments. Array size should be specified explicitly when array declaration uses designated initialization. Getting "non-void function does not return a value in all control paths", New blog post from our CEO Prashanth: Community is the future of AI, Improving the copy in the close modal and post notices - 2023 edition, Embedded hyperlinks in a thesis or research paper. The 'zero' value is assigned to pointer. To learn more, see our tips on writing great answers. Already on GitHub? It was deemed useful to report this warning as it typically results from inadvertent program design rather than intentional coverage of all cases with a redundant test. Consider inspecting 'X'. Consider using the 'int' type. More info about Internet Explorer and Microsoft Edge, Compile Page, Project Designer (Visual Basic). The expression is incorrect or can be simplified. Be advised that the size of the type 'long' varies between LLP64/LP64 data models. V576. A 'break' statement is probably missing in a 'switch' statement. If you are treating warnings as errors, you may need to temporary disable that setting in order to compile the example. V6047. V128. This way, you won't miss messages from our team in the future. AUTOSAR. Defining an absolute path to the file or directory is considered a poor style. AUTOSAR. Consider using of 'if-else' construct. V2009. V677. AUTOSAR. It can possibly be replaced by the call to the 'find' function. V672. V2518. operator should have 'bool' type. Allocation of memory by the pattern "(X*)malloc(sizeof(Y))" where the sizes of X and Y types are not equal. Consider inspecting the 'T foo = foo = x;' expression. Consider inspecting the expression. One is enough. V3519. Cyclomatic complexity: NN. V3047. An object is used as an argument to its own method. Destructor of the object will be invoked a second time after leaving the object's scope. V574. Unsafe invocation of event, NullReferenceException is possible. Return value is not always used. V5622. A 32-bit variable is utilized as a reference to a pointer. Operands of the logical '&&' or the '||' operators, the '!' Using this sequence lead to undefined behavior. V1013. Find centralized, trusted content and collaborate around the technologies you use most. Are you missing a 'Return' statement? The variable is assigned the same value on several loop iterations. Suspicious assignment inside the condition expression of 'if/while/for' operator. The switch statement does not cover all values of the enum. Comparison of arrays, strings, collections by reference. An unconditional 'break/continue/return/goto' within a loop. V741. Did the drapes in old theatres actually say "ASBESTOS" on them? Recurrent serialization will use cached object state from first serialization. V6094. V809. It is more efficient to search for 'X' character rather than a string. As your code stands, if candidate_count is greater than 0 the loop will iterate once and then unconditionally return false, which I don't think is what you want. Parts of an SQL query are not delimited by any separators or whitespaces. AUTOSAR. V5603. Inspect the program's logic. Copying from potentially tainted data source. Consider inspecting the expression. Expression was implicitly cast from integer type to real type. Signed integer overflow in arithmetic expression. V5011. New variable with default value is created instead of 'std::unique_lock' that locks on the mutex. V627. Why does Acts not mention the deaths of Peter and Paul? The 'goto' statement shouldn't jump to a label declared earlier. AUTOSAR. Possible LDAP injection. Undefined behavior will occur in case of signed integer overflow. The code can be rewritten as either: Although you report testing the former option, GCC will not report the warning in this case, so I believe your test was faulty, such as compiling code other than what you intended to compile. Site design / logo 2023 Stack Exchange Inc; user contributions licensed under CC BY-SA. V549. V3043. V5601. V3544. V1047. V5301. Consider inspecting the expression. however, it floods the compiler output. OWASP. It is suspicious that the body of 'Foo_1' function is fully equivalent to the body of 'Foo_2' function. Remember that 'a == b == c' is not equal to 'a == b && b == c'. The 'switch' statement should have 'default' as the last label. Such a pointer will become invalid. Consider reviewing this value. The text was updated successfully, but these errors were encountered: Also, can you provide a minimal code sample that reproduces this issue? This value is already assigned to the 'b' variable. What were the poems other than those by Donne in the Melford Hall manuscript? V127. An unconditional 'break/continue/return/goto' within a loop. no return statement in function returning non-void while using C++, How a top-ranked engineering school reimagined CS curriculum (Ep. Flexible array members should not be declared. V1088. V3028. Consider allocating it on the stack instead. The 'operator &&', 'operator ||', 'operator ,' and the unary 'operator &' should not be overloaded. A pattern was detected: A || (A && ). To view the purposes they believe they have legitimate interest for, or to object to this data processing use the vendor list link below. Why typically people don't use biases in attention mechanism? See NN argument of function 'Foo' in derived class and base class. The values used in expressions should have appropriate essential types. The expression contains a suspicious mix of integer and real types. Member operator[] of object 'foo' is declared with 32-bit type argument, but is called with memsize type argument. V806. Asking for help, clarification, or responding to other answers. Review captured variable in lambda expression. MISRA. If expression is omitted, the return value of the function is undefined. V3540. The 'then' statement is equivalent to the 'else' statement. Execution of report_ratio "falls off the bottom" and returns no value to the caller. V834. :' operator may not work as expected. use custom JSON_THROW_USER without exceptions. V654. V3160. 1. Consider using 'i + 1' instead. An array/object was declared but was not utilized. Since the second call to std::cout does not provide a value to be printed, this causes an error. Probably the '!='/'-='/'+=' should be used here. This file is marked with copyleft license, which requires you to open the derived source code. If no return statement appears in a function definition, control automatically returns to the calling function after the last statement of the called function is executed. Potentially tainted data is used in the URL. V503. Silent suppression of exceptions can hide the presence of bugs in source code during testing. V517. V523. V1031. V3151. V759. Number of iterations in loop equals size of a pointer. The arguments violate the bounds of collection. V5624. V3066. Stack Exchange network consists of 181 Q&A communities including Stack Overflow, the largest, most trusted online community for developers to learn, share their knowledge, and build their careers. Appending new suppressed messages to it is not possible. The 'if' 'else if' construct should be terminated with an 'else' statement. The compiler makes no such assumptions, so you need to make sure that there is a return path that will be followed if the return statement inside your loop . V2580. V5614. V776. AUTOSAR. Comparison with 'double.NaN' is meaningless. Memory allocation and deallocation functions should not be used. Declaring virtual methods in a class marked as 'final' is pointless. V3092. V6005. To subscribe to this RSS feed, copy and paste this URL into your RSS reader. Violated order of exception handlers. V2569. Do not use real-type variables as loop counters. Expression containing increment (++) or decrement (--) should not have other side effects. Possibly meant: 'A -= B'. V512. Consider inspecting the 'for' operator. You are assuming that loop will always run, but, what if an empty string ends up getting submitted? It demonstrates the return statement, and how it's used both to end function execution, and optionally, to return a value. Many programmers use parentheses to enclose the expression argument of the return statement. Backward Incompatible Changes Like the names reserved by the Scalar Type Declarations and Reserve More Types in PHP 7 RFCs, the void return type does not become a reserved word proper, but is instead . MISRA. for example: void throw_blah () { throw "blah"; } int foo () { throw_blah (); } I am pretty curious about this as this is directly related to one of my other issue . MISRA. AUTOSAR. V1050. Consider using 'i + 1' instead. Consider assigning event to a local variable before invoking it. V2520. Then, copy all the example code, in the order shown. V662. V3089. V1086. The modulo by 1 operation is meaningless. Single-bit bit fields should not be declared as signed type. The object could have been garbage collected before the 'Target' property was accessed. MISRA. The assignment to a member of the readonly field will have no effect when the field is of a value type. In a main function, the return statement and expression are optional. V791. :' operator has a lower priority than the 'foo' operator. N argument has memsize type. V6076. V6102. It is possible that these are misprints and 'default:' label should be used instead. Any label should be declared in the same block as 'goto' statement or in any block enclosing it. V794. Consider using a comparison with defined precision: Math.Abs(A - B) < Epsilon or Math.Abs(A - B) > Epsilon. V1030. The 'first' argument of 'Foo' function is equal to the 'second' argument. A memory/resource leak is possible. V3524. Perhaps a short-circuit operator should be used instead. V3094. "non-void function does not return a value in all control paths". Probably the '-=' should be used here. V508. Compound assignment expression is used inside condition. In this case, we can call either a non-value returning function, or we can call a value-returning function and just ignore the return value. V528. V2516. V546. Thanks for helping to make the site better for everyone. Function with a non-void return type should return a value from all exit paths. Pointer was used in the logical expression before its check for nullptr in the same logical expression. What should I follow, if two altimeters show different altitudes? Consider replacing the expression 'AA' with 'BB'. V699. V655. The analyzer will not issue a warning for the following code fragment: There will also be no undefined behavior if, during the function execution, another function that does not return control, is called. V3541. V573. Consider using the M_NN constant from