[
https://issues.apache.org/jira/browse/AVRO-3945?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17819533#comment-17819533
]
ASF subversion and git services commented on AVRO-3945:
-------------------------------------------------------
Commit 568b19c848d9d61e51e71c32de293007c8669313 in avro's branch
refs/heads/main from Mikhail Koviazin
[ https://gitbox.apache.org/repos/asf?p=avro.git;h=568b19c84 ]
[AVRO-3945] Add missing `override` (#2759)
This issue has been reported by `cppcheck`:
impl/FileStream.cc:52:5: style: Struct 'FileBufferCopyIn' has a constructor
with 1 argument that is not explicit. [noExplicitConstructor]
FileBufferCopyIn(const char *filename) : h_(::CreateFileA(filename,
GENERIC_READ, 0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL)) {
^
impl/FileStream.cc:235:5: style: Struct 'FileBufferCopyOut' has a
constructor with 1 argument that is not explicit. [noExplicitConstructor]
FileBufferCopyOut(const char *filename) : h_(::CreateFileA(filename,
GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL)) {
^
impl/FileStream.cc:62:10: style: The function 'seek' overrides a function
in a base class but is not marked with a 'override' specifier. [missingOverride]
void seek(size_t len) {
^
impl/FileStream.cc:45:18: note: Virtual function in base class
virtual void seek(size_t len) = 0;
^
impl/FileStream.cc:62:10: note: Function in derived class
void seek(size_t len) {
^
impl/FileStream.cc:68:10: style: The function 'read' overrides a function
in a base class but is not marked with a 'override' specifier. [missingOverride]
bool read(uint8_t *b, size_t toRead, size_t &actual) {
^
impl/FileStream.cc:46:18: note: Virtual function in base class
virtual bool read(uint8_t *b, size_t toRead, size_t &actual) = 0;
^
impl/FileStream.cc:68:10: note: Function in derived class
bool read(uint8_t *b, size_t toRead, size_t &actual) {
^
impl/FileStream.cc:245:10: style: The function 'write' overrides a function
in a base class but is not marked with a 'override' specifier. [missingOverride]
void write(const uint8_t *b, size_t len) {
^
impl/FileStream.cc:229:18: note: Virtual function in base class
virtual void write(const uint8_t *b, size_t len) = 0;
^
impl/FileStream.cc:245:10: note: Function in derived class
void write(const uint8_t *b, size_t len) {
> Fix issues reported by cppcheck
> -------------------------------
>
> Key: AVRO-3945
> URL: https://issues.apache.org/jira/browse/AVRO-3945
> Project: Apache Avro
> Issue Type: Task
> Components: c++
> Reporter: Mikhail Koviazin
> Assignee: Mikhail Koviazin
> Priority: Minor
> Labels: pull-request-available
> Time Spent: 40m
> Remaining Estimate: 0h
>
> This issue can be split into different stages.
>
> 1. Add missing override:
>
> {code:java}
> impl/FileStream.cc:52:5: style: Struct 'FileBufferCopyIn' has a constructor
> with 1 argument that is not explicit. [noExplicitConstructor]
> FileBufferCopyIn(const char *filename) : h_(::CreateFileA(filename,
> GENERIC_READ, 0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL)) {
> ^
> impl/FileStream.cc:235:5: style: Struct 'FileBufferCopyOut' has a constructor
> with 1 argument that is not explicit. [noExplicitConstructor]
> FileBufferCopyOut(const char *filename) : h_(::CreateFileA(filename,
> GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL)) {
> ^
> impl/FileStream.cc:62:10: style: The function 'seek' overrides a function in
> a base class but is not marked with a 'override' specifier. [missingOverride]
> void seek(size_t len) {
> ^
> impl/FileStream.cc:45:18: note: Virtual function in base class
> virtual void seek(size_t len) = 0;
> ^
> impl/FileStream.cc:62:10: note: Function in derived class
> void seek(size_t len) {
> ^
> impl/FileStream.cc:68:10: style: The function 'read' overrides a function in
> a base class but is not marked with a 'override' specifier. [missingOverride]
> bool read(uint8_t *b, size_t toRead, size_t &actual) {
> ^
> impl/FileStream.cc:46:18: note: Virtual function in base class
> virtual bool read(uint8_t *b, size_t toRead, size_t &actual) = 0;
> ^
> impl/FileStream.cc:68:10: note: Function in derived class
> bool read(uint8_t *b, size_t toRead, size_t &actual) {
> ^
> impl/FileStream.cc:245:10: style: The function 'write' overrides a function
> in a base class but is not marked with a 'override' specifier.
> [missingOverride]
> void write(const uint8_t *b, size_t len) {
> ^
> impl/FileStream.cc:229:18: note: Virtual function in base class
> virtual void write(const uint8_t *b, size_t len) = 0;
> ^
> impl/FileStream.cc:245:10: note: Function in derived class
> void write(const uint8_t *b, size_t len) {
> {code}
>
> 2. Constructors with 1 argument not marked as "explicit"
> {code:java}
> impl/json/JsonDom.hh:79:5: style: Class 'Entity' has a constructor with 1
> argument that is not explicit. [noExplicitConstructor]
> Entity(Bool v, size_t line = 0) : type_(EntityType::Bool), value_(v),
> line_(line) {}
> ^
> impl/json/JsonDom.hh:82:5: style: Class 'Entity' has a constructor with 1
> argument that is not explicit. [noExplicitConstructor]
> Entity(Long v, size_t line = 0) : type_(EntityType::Long), value_(v),
> line_(line) {}
> ^
> impl/json/JsonDom.hh:85:5: style: Class 'Entity' has a constructor with 1
> argument that is not explicit. [noExplicitConstructor]
> Entity(Double v, size_t line = 0) : type_(EntityType::Double), value_(v),
> line_(line) {}
> ^
> impl/json/JsonDom.hh:88:5: style: Class 'Entity' has a constructor with 1
> argument that is not explicit. [noExplicitConstructor]
> Entity(const std::shared_ptr<String> &v, size_t line = 0) :
> type_(EntityType::String), value_(v), line_(line) {}
> ^
> impl/json/JsonDom.hh:91:5: style: Class 'Entity' has a constructor with 1
> argument that is not explicit. [noExplicitConstructor]
> Entity(const std::shared_ptr<Array> &v, size_t line = 0) :
> type_(EntityType::Arr), value_(v), line_(line) {}
> ^
> impl/json/JsonDom.hh:94:5: style: Class 'Entity' has a constructor with 1
> argument that is not explicit. [noExplicitConstructor]
> Entity(const std::shared_ptr<Object> &v, size_t line = 0) :
> type_(EntityType::Obj), value_(v), line_(line) {}
> ^
> impl/FileStream.cc:52:5: style: Struct 'FileBufferCopyIn' has a constructor
> with 1 argument that is not explicit. [noExplicitConstructor]
> FileBufferCopyIn(const char *filename) : h_(::CreateFileA(filename,
> GENERIC_READ, 0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL)) {
> ^
> impl/FileStream.cc:235:5: style: Struct 'FileBufferCopyOut' has a constructor
> with 1 argument that is not explicit. [noExplicitConstructor]
> FileBufferCopyOut(const char *filename) : h_(::CreateFileA(filename,
> GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL)) {
> ^
> {code}
>
> 3. Missing bound check (!) (This can cause actual logic errors)
> {code:java}
> impl/json/JsonIO.cc:319:66: warning: Missing bounds check for extra iterator
> increment in loop. [StlMissingComparison]
> for (string::const_iterator it = s.cbegin(); it != s.cend(); ++it) {
> ^
> impl/json/JsonIO.cc:350:37: note: Missing bounds check for extra iterator
> increment in loop.
> char c = *++it;
> ^
> impl/json/JsonIO.cc:319:66: note: Missing bounds check for extra iterator
> increment in loop.
> for (string::const_iterator it = s.cbegin(); it != s.cend(); ++it) {
> {code}
> 4. Smaller changes that are mostly stylish
>
> I can create PRs for each stage.
>
--
This message was sent by Atlassian Jira
(v8.20.10#820010)