标签: static-analysis

Mypy 抱怨名称“Optional”在不使用Optional的情况下未定义

我最近开始使用 mypy,并遇到了一些奇怪的问题,我似乎一生都无法弄清楚。

我正在使用 mypy 0.950、django-stubs 1.11.0、django 4.0.5 和 python 3.10.2。

通过命令行运行 mypy 将返回以下内容:

project/suppliers/models.py:6: error: Name "Optional" is not defined
project/suppliers/models.py:6: note: Did you forget to import it from "typing"? (Suggestion: "from typing import Optional")
project/users/models.py:6: error: Name "Optional" is not defined
project/users/models.py:6: note: Did you forget to import it from "typing"? (Suggestion: "from typing import Optional")
project/products/models.py:6: error: Name "Optional" is not defined
project/products/models.py:6: note: Did you forget to import it from "typing"? (Suggestion: "from typing import Optional")(Suggestion: "from …
Run Code Online (Sandbox Code Playgroud)

python django static-analysis mypy django-stubs

1
推荐指数
1
解决办法
9411
查看次数

Pylint R1732(“考虑使用‘with’”)作为一句台词:这真的是个好建议吗?

在诸如

r = open(path, encoding="utf-8").read()
Run Code Online (Sandbox Code Playgroud)

此处为实际行),

Pylint 2.14.5 提供以下建议:

submodules-dedup.py:71:32: R1732: Consider using 'with' for resource-allocating operations (consider-using-with)
Run Code Online (Sandbox Code Playgroud)

如果我理解正确的话,建议将其更改为

with open(path, encoding="utf-8") as f:
    r = f.read()
Run Code Online (Sandbox Code Playgroud)

但这真的更好吗?

就我个人而言,我认为它没有任何可读性,至于其他问题,由于引用计数的工作原理,文件不会同时关闭吗?

python static-analysis pylint with-statement

1
推荐指数
1
解决办法
978
查看次数

流行的 Python 类型检查器对 Any 注释给出漏报

我使用 4 个常见的 Python 类型检查器测试了以下代码片段,令我惊讶的是,它们都没有抱怨:

\n
from typing import Any\n\ndef length(s: str) -> int:\n    return len(s)\n\ndef any_length(o: Any) -> int:\n    return length(o)\n\nif __name__ == "__main__":\n    print(any_length(1234))\n
Run Code Online (Sandbox Code Playgroud)\n

很容易预测运行此代码将导致异常:

\n
TypeError: object of type \'int\' has no len()\n
Run Code Online (Sandbox Code Playgroud)\n

我的

\n
Success: no issues found in 1 source file\n
Run Code Online (Sandbox Code Playgroud)\n

py类型

\n
Success: no errors found\n
Run Code Online (Sandbox Code Playgroud)\n

皮赖特

\n
0 errors, 0 warnings, 0 informations\nCompleted in 0.435sec\n
Run Code Online (Sandbox Code Playgroud)\n

柴堆

\n
\xc6\x9b No type errors found\n
Run Code Online (Sandbox Code Playgroud)\n

我期望至少有一个警告说它 …

python types static-analysis

1
推荐指数
1
解决办法
81
查看次数

如何设置VS2008以实现高效的C++开发

通常我用C#编程但是被迫在C++中做一些工作.与C#相比,与Visual Studio(2008)的集成似乎真的很差,但我想知道是否有任何可以改善这种情况的好工具,插件或配置.

另一篇文章指出了Visual Assist X程序,它至少可以帮助重构一些事情(尽管对我来说有点贵).但是,我的主要问题是,编译错误几乎没有给出错误的线索,我花了大部分时间来弄清楚我做错了什么.它只是感觉可能静态地检查比VS开箱即用更多的错误.为什么它不像C#那样提供蓝色下划线,这应该不会太难?!

我意识到问题的一半只是我是C++的新手,但我真的觉得让程序编译起来是不合理的.有没有这种工具或我的要求太高?

c++ static-analysis visual-studio

0
推荐指数
1
解决办法
493
查看次数

确定.Net中两个类之间的属性调用

给定两个.Net类型,类型A和类型B,如何确定对类型B的所有属性调用(包括类型A的子类)?

.net reflection static-analysis

0
推荐指数
1
解决办法
150
查看次数

在Hudson中执行命令作为Post-build Actions

我是哈德森的新人.我想在Hudson中执行'sourcecodeanalyzer'命令作为Post-build Actions来生成html报告.请尽可能让我知道,如果是,请告诉我Hudson执行命令的配置步骤.

您在这方面的最早回应将非常有帮助.

提前致谢.

static-analysis hudson fortify

0
推荐指数
1
解决办法
6721
查看次数

如何计算Perl中if,elseif或while中使用的逻辑条件数?

我有一段时间,如果,ifif语句在一个文件中有多个条件...它是一个C语言...下面提到的格式是所有多个条件的标准.所以不用担心压力.只有问题是检查有多少条件,并根据我描述的输出格式列出....例如,如果我的C文件有代码...

while(
      condition1 &&
      condition2 ||
      condition3
     )
{
  #statements; 
}
Run Code Online (Sandbox Code Playgroud)

我想计算内部有多少条件,我的输出应该是
这样的......

  while(
  1    condition1 &&
  2    condition2 ||
  3    condition3
     )
{
  #statements; 
}
Run Code Online (Sandbox Code Playgroud)

我写了代码,它适用于简单的...我的代码....

open(A,"e:\\a\\a.txt")or die;
@a=<A>;
close(A);
$count=1;
for($i=0;$i<scalar@a;$i++)
{
  if($a[$i]=~m/while/g)
  {
    $line=$i;
    until($a[$line]=~/\{/g)
    {
       if($a[$line]=~/(.*)[\&&\||]/g){print"$count $a[$line]";$count++;}  
       elsif($a[$line]=~/\(.*\)[\&&\||]/g){print"$count $a[$line]";$count++;}  
       else{print$a[$line];}
       $line++;
    }
  }
 last if($a[$line]=~/\{/g);
}
Run Code Online (Sandbox Code Playgroud)

但对于复杂的条件,如

while(
        ( 
         condition1 &&
         condition2 &&
         condition3
        ) ||
        (
          condition4 ||
          condition5 &&
          condition6
         )

{
  #statements;
}
Run Code Online (Sandbox Code Playgroud)

我得到的输出像

while(
        ( 
       1  condition1 &&
       2  condition2 &&
          condition3 …
Run Code Online (Sandbox Code Playgroud)

perl static-analysis

0
推荐指数
1
解决办法
332
查看次数

奇怪的Findbugs错误与equals

我等于这个方法,但Findbugs报告错误,任何想法?

@Override
public boolean equals(final Object obj) {
    return obj instanceof String && this.value != null  
                              && this.value.equals(obj);      // this.value is a String
}
Run Code Online (Sandbox Code Playgroud)

错误是:

Myclass.equals(Object) 检查操作数是否为String

java static-analysis findbugs equals

0
推荐指数
1
解决办法
1959
查看次数

如何从JSON对象(AST)构建控制流图(CFG)

我想从以JSON格式给出的AST构建控制流图(CFG).所以这个AST是在TouchDevelop中针对每个脚本自动创建的.而且由于TouchDevelop不是面向对象的编程,我还可以使用访问者模式吗?任何有用的指针将不胜感激.

Update1:我的问题是我不明白从哪里开始.从互联网上,我应该使用访问者模式来浏览AST以访问每个节点并收集信息.从那里,我可以构建一个CFG,然后进行数据流分析.但有两个问题:

1)据我所知,我需要面向对象的编程模型,使用访问者模式,(我可能是错的),这TouchDevelop不是.

2)如下所示,AST不是AST格式,正如我在互联网上找到的那样.它是JSON格式.我想我可以解析JSON将其转换为所需的AST结构,但我不太确定.

示例脚本的源代码

meta version "v2.2,nothing";
meta name "DivideByZero";
//
meta platform "current";

action main() {
  (5 / 0)?post_to_wall;
}
Run Code Online (Sandbox Code Playgroud)

产生的AST(JSON格式)如下:

{
    "type":"app",
    "version":"v2.2,nothing",
    "name":"DivideByZero",
    "icon":null,
    "color":null,
    "comment":"",
    "things":[
        {
            "type":"action",
            "name":"main",
            "isEvent":false,
            "outParameters":[
            ],
            "inParameters":[
            ],
            "body":[
                {
                    "type":"exprStmt",
                    "tokens":[
                        {
                            "type":"operator",
                            "data":"("
                        },
                        {
                            "type":"operator",
                            "data":"5"
                        },
                        {
                            "type":"operator",
                            "data":"/"
                        },
                        {
                            "type":"operator",
                            "data":"0"
                        },
                        {
                            "type":"operator",
                            "data":")"
                        },
                        {
                            "type":"propertyRef",
                            "data":"post to wall"
                        }
                    ]
                }
            ],
            "isPrivate":false
        }
    ]

}
Run Code Online (Sandbox Code Playgroud)

procedural-programming static-analysis abstract-syntax-tree touchdevelop control-flow-graph

0
推荐指数
1
解决办法
1684
查看次数

将null作为参数发送到Java中的方法

我在下面有一个相当简单的测试用例.我可以向构造函数发送空值而没有任何问题或错误,但是当我尝试向方法发送空值时,它会出错:( error: incompatible types: <null> cannot be converted to int或者预期的任何类型).我不确定为什么会发生这种情况,而且我在很多地方看到过发送空值是可以接受的做法.在所有现实中我只需要空值,以便我可以将此示例泵入Soot和Spark进行静态分析,因此除了Spark-static分析中入口点的语义必要性之外,发送到方法的实际参数是无关紧要的.

public class Test {
    public Test(Object var1, Object var2) {
        //do irrelevant stuff here with var1 and var2
    }

    public void api1(int x, int y) {
        // do irrelevant stuff with x and y
    }

    public List<String> api2(String x, int y, boolean a) {
        // do irrelevant stuff with x, y, and a and return a new ArrayList<String>()
    }
}

public class Main {
    public static void main(String[] args) …
Run Code Online (Sandbox Code Playgroud)

java methods null static-analysis parameter-passing

0
推荐指数
1
解决办法
112
查看次数

如何在C中的初始化程序中使用static_assert?

信不信由你,我想static_assert在宏扩展到指定的初始化器:

#define INIT(N) \
        /* static_assert((N) < 42, "too large"), */ \
        [(N)] = (N)

int array[99] = { INIT(1), INIT(2), INIT(42) };
Run Code Online (Sandbox Code Playgroud)

我想要一个错误INIT(42),但取消注释static_assert是一个语法错误.AFAIK static_assert在语法上是一种声明.我如何在这个例子中使用它?

c macros gcc static-analysis

0
推荐指数
1
解决办法
213
查看次数

为什么 linter 会选择无用的转义字符?

转义字符串、模板文字和正则表达式中的非特殊字符没有任何效果

来源:https://eslint.org/docs/rules/no-useless-escape

但显然这是错误的:

在此输入图像描述

这里没有什么需要“修复”的;我们都知道这是一个完全有效的字符序列。

开个玩笑,这背后的理由是什么?

如果 ESLint 也承认没有什么坏处,那为什么还要麻烦呢?如果您只查看最终结果(我知道该\字符不会被打印出来),那么它可能是无用的,但在“代码就是数据”上下文中,这在进行语法分析时可能是有用的数据。

ESLint 对字符串中的内容进行判断,但它不会改变这段代码:(这对我来说也没什么用)

var x = 10;
var y = x + 0;
var z = y * 1;
Run Code Online (Sandbox Code Playgroud)

javascript static-analysis eslint

-1
推荐指数
1
解决办法
604
查看次数

接受审查:抓住内在而非外在的种族状况

最近的问题中,使用了导致数据争用的嵌套循环。go vet只抓住了一些问题。

使用简化版本:

for _, o := range ol {
        o := o // <- remove this: `go vet` does *NOT* complain
        for _, d := range dl {
            d := d // <- remove this: `go vet` will complain
            go func() {
                fmt.Printf("%03d %03d\n", o, d) // potential data-race
            }()
        }
    }
Run Code Online (Sandbox Code Playgroud)

操场

go vet 正确检测内部竞争条件,但不能正确检测外部竞争条件。

为什么是这样?太复杂以至于无法跟踪超过2个级别的范围?

static-analysis go race-condition

-2
推荐指数
1
解决办法
50
查看次数