【发布时间】:2015-09-14 12:03:10
【问题描述】:
我项目中的一个第三方开源库在使用 Veracode 扫描时引发了安全问题。但是,当我检查源代码中出现问题的行号时,它们的代码完全不同,没有任何漏洞。
即使符号未定义,从 PDB 文件推断的行号是否包括预处理器指令中存在的源代码?
【问题讨论】:
-
C# 在不能更改行号的预处理器中的一大优点。所以你的猜测并不接近准确。正确标记您的问题并显示准确警告和源代码。
-
@HansPassant 这是否包括编译器优化,就像提到的另一条评论(现已删除)?
-
@ganeshran 这是我删除的评论,但它不准确,AFAIK C# 编译器不会内联调用,只有 JIT 会这样做,然后静态分析不会被它欺骗。
-
@HansPassant 您能否发表您的评论作为答案,以便我将问题标记为已回答?
-
#line (C# Reference) - #line 允许您修改编译器的行号和(可选)错误和警告的文件名输出。此示例显示如何报告与行号相关的两个警告。 #line 200 指令强制行号为 200(尽管默认值为 #7),直到下一个 #line 指令,文件名将被报告为“特殊”。 #line 默认指令将行编号返回为其默认编号,该编号计算由前一个指令重新编号的行。
标签: c# .net roslyn preprocessor-directive