Skip to content

Generated source files aren't getting analysed #99

@furtib

Description

@furtib

Describe the bug
In case of generated files (tested with genrule(), but should apply to every generation method)

Versions

  • CodeChecker 6.26.0
  • bazel 6.5.0
  • ff788bf

To Reproduce
Run this script and run bazel build //app:per_file_rule, observe that the foo.cpp doesn't get analyzed!

mkdir present-bug
cd present-bug
cat > WORKSPACE <<'endtag'
#----------------------------------------------------

load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository")

git_repository(
    name = "bazel_codechecker",
    remote = "https://github.com/Ericsson/codechecker_bazel.git",
    branch = "main",
)

load(
    "@bazel_codechecker//src:tools.bzl",
    "register_default_codechecker",
    "register_default_python_toolchain",
)

register_default_python_toolchain()

register_default_codechecker()

#----------------------------------------------------
endtag

mkdir app

cat > app/BUILD <<'endtag'
#-------------------------------------------------------

# codechecker rules
load(
    "@bazel_codechecker//src:codechecker.bzl",
    "codechecker_test",
)
load(
    "@bazel_codechecker//src:per_file.bzl",
    "per_file_test",
)


codechecker_test(
    name = "codechecker_test",
    targets = [
        ":hello_app",
    ],
)

per_file_test(
    name = "per_file_test",
    targets = [
        ":hello_app",
    ],
    options = ["--ctu"]
)

#-------------------------------------------------------

genrule(
    name = "create_header",
    # This is the file we will generate.
    outs = ["generated_message.h"],
    cmd = "echo 'static const char* MESSAGE = \"Hello from a generated file!\";\nint asd = 0;' > $(location generated_message.h)",
)

genrule(
    name = "create_foo",
    outs = [
        "gen_foo.h",
        "gen_foo.cpp",
    ],
    cmd = "echo 'int foo();' > $(location gen_foo.h) && echo 'int foo() { return 0; }' > $(location gen_foo.cpp)",
)
cc_binary(
    name = "hello_app",
    srcs = [
        "main.cpp",
        ":generated_message.h",
        ":gen_foo.h",
        ":gen_foo.cpp",
    ],
)
endtag


cat > app/main.cpp <<'endtag'
#include <iostream>

#include "app/generated_message.h"

#include "app/gen_foo.h"

int main() {
    std::cout << MESSAGE << std::endl;
    int y = 1/foo();
    return 0/asd;
}
endtag

Expected behaviour
Both main.cpp and foo.cpp to be analyzed

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions