标签: static-code-analysis

cppcheck的规则集

Cppcheck允许您创建自己的规则文件,但我不知道暴露了多少cppcheck的功能.

是否有人在制定强制执行JSFMISRA规则的集合?

c++ testing safety-critical static-code-analysis cppcheck

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

自动文档字符串和注释拼写检查

请考虑以下示例代码:

# -*- coding: utf-8 -*-
"""Test module."""


def test():
    """Tets function"""
    return 10
Run Code Online (Sandbox Code Playgroud)

pylint给它10个10,flake8没有发现任何警告:

$ pylint test.py 
...
Global evaluation
-----------------
Your code has been rated at 10.00/10
...
$ flake8 test.py
$
Run Code Online (Sandbox Code Playgroud)

但是,正如您所看到的,test函数的文档字符串中存在拼写错误.并且,您的编辑器可能会自动突出显示它,例如,这是Pycharm如何做到的:

在此输入图像描述

多亏了/sf/ask/150591031/话题,现在我知道有一个叫相关的拼写检查库PyEnchant那可用于检测拼写错误.

我的最终目标是自动检测项目中的拼写错误,并使拼写检查成为持续构建,测试和代码质量检查运行的一部分.

有没有办法实现这一目标pylint?如果没有,我也会感谢任何关于在PyEnchant项目方面应用于文档字符串和注释的提示(在这种情况下,pylintpyflakes插件可以由它制作).

如果我疯狂地关注代码质量,也请告诉我.

python code-analysis pylint static-code-analysis

23
推荐指数
2
解决办法
2668
查看次数

Perl的Lint式程序?

我正在为Perl寻找一个lint,它可以捕获死代码和其他潜在的问题.有什么建议?

我有

use strict;
use warnings;
Run Code Online (Sandbox Code Playgroud)

已经但我想要更多.

perl lint static-code-analysis

21
推荐指数
3
解决办法
1万
查看次数

如何下载和安装lint?

有谁知道如何获得Mac,Windows和Linux的lint?sudo port install lint找不到它.

c debugging lint static-code-analysis

19
推荐指数
2
解决办法
2万
查看次数

从命令行为java项目创建可视调用图

我想从命令行为java项目创建一个调用图.我已经探索了几个项目,每次都达不到我想要的目标(无论是我的理解还是功能).关于如何做到这一点的一些简单指南将是很好的,另一个目标是获得该图的文本表示.

这是我尝试过的:

呼叫图:https://github.com/gousiosg/java-callgraph

这给了我想要的文本输出,但我找不到一种方法(在查看文档一段时间后),将其转换为可视(图像文件)图形输出.

烟灰:http://sable.github.io/soot/

花了很多时间查看SOOT文档,这似乎很难遵循,我设法让SOOT创建字节码.但是,我找不到有关如何从中创建调用图的任何指南.我只在主页上看到它可以执行此操作,我从谷歌搜索中获得了几个电子邮件对话,所有这些只是没有答案的问题.我正在使用命令的每晚构建:

java -cp soot-trunk.jar soot.Main -cp . -pp HelloWorld
Run Code Online (Sandbox Code Playgroud)

HelloWorld是我的java文件的名称,我得到一个.class文件的输出,但我看不到如何获得实际的调用图.这是在遵循指南之后:https://github.com/Sable/soot/wiki/Running-Soot.当我关注关于可视化的链接时,它们似乎是断开的链接,然后重定向回主页.我可以在命令行页面上看到有关使用-cg标志的一些信息,但无法使任何工作 - 我只是得到一个选项解析错误,建议一个无效的参数:https://ssebuild.cased.de/nightly /soot/doc/soot_options.htm#phase_5

搜索stackoverflow - 现有答案 我已经看过几个类似的问题,例如:Java调用图的静态分析 然而,答案只是说"使用soot",或"使用call-graph",我一直在尝试这些没有任何运气 - 虽然我最接近调用图,因为我有文本输出.

我看到一些基于GUI的软件和eclipse插件声称可以创建调用图,但我试图从命令行开始工作.

任何帮助真的很感激,一个指南,或一组命令与调用图或Soot,或其他程序真的会有所帮助.可能值得为他们的文档提交任何简短的教程,因为似乎有更多的问题而不是搜索时的答案.

作为参考,我目前正在尝试使用下面一个非常简单的类:

public class HelloWorld {

    public static void main(String[] args) {
        foo();
    }
    public static void foo(){
        System.out.println("Hello World");
    }
}
Run Code Online (Sandbox Code Playgroud)

java call-graph static-code-analysis

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

除了codetools之外,还有R的静态代码分析工具吗?

我能找到的唯一静态代码分析工具是codetools.但是,搜索更多信息只会产生收益

  • 包CRAN页面,说明最后一个版本是从2011年开始提供一个非常简约的文档以及代码本身,从注释"此代码是一个完整的黑客,可能会或可能不会工作等等"开始.看起来像一个快速的黑客.
  • 包裹作者卢克·蒂尔尼(Luke Tierney)从2007年开始的简短的学术性演讲.
  • 作者的网站,但不提供有关该主题的任何进一步信息(上述演示除外).
  • 一个不起眼的博客条目,表明"自R_2.6.0发布以来,R软件包开发人员被建议使用``codetools"软件包来检查潜在的错误."

显然,很长一段时间没有更新; 不容易为项目做贡献(没有git存储库或其他东西而且代码很难阅读)并且没有关于它的功能的真实文档.但是,默认情况下它用于检查CRAN包.那有点奇怪吗?

因此问题:有没有人知道任何替代方案?

r static-code-analysis

16
推荐指数
0
解决办法
1944
查看次数

自动导入不遵循PEP8

请考虑以下代码:

from bs4 import BeautifulSoup


data = "<test>test text</test>"
soup = BeautifulSoup(data)
print(soup.find(text=re.compile(r'test$')))
Run Code Online (Sandbox Code Playgroud)

它缺少一条import re线,NameError没有它就会失败.

现在,我尝试使用PyCharm自动导入功能:重点re和打击Alt+Enter,这将打开如下弹出:

在此输入图像描述

现在,如果我选择Import 're'选项,Pycharm会在脚本顶部插入新的导入行:

import re
from bs4 import BeautifulSoup


data = "<test>test text</test>"
soup = BeautifulSoup(data)
print(soup.find(text=re.compile(r'test$')))
Run Code Online (Sandbox Code Playgroud)

看起来几乎不错,但它没有遵循PEP8导入指南:

应按以下顺序对导入进行分组:

  • 标准库导入

  • 相关的第三方进口

  • 本地应用程序/库特定导入

您应该在每组导入之间添加一个空行.

换句话说,两个导入之间缺少空白行:

import re

from bs4 import BeautifulSoup
Run Code Online (Sandbox Code Playgroud)

问题是:是否可以告诉Pycharm遵循PEP8指南并在自动导入的不同导入类型的行之间插入换行符?


作为一种解决方法,我在正确组织导入之后调用Optimize Imports.

python import pep8 static-code-analysis pycharm

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

代码分析工具和类型间声明

我有一个由Spring Roo生成的maven项目,并使用几个工具(checkstyle,pmd等)来收集有关我的项目的信息.(即我正在使用codehaus'声纳)

Roo大量使用AspectJ Inter Type声明(ITD)来分离诸如持久性,javabeans-getter/setter等问题.

这些ITD在编译时编织,因此checkstyle和pmd(在源级别工作)等工具有很多误报.

我目前看到的唯一解决方案是停用对使用ITD的类的检查.

有更好的想法吗?

java maven-2 aspectj spring-roo static-code-analysis

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

写一个R lint程序

当我在python中编程时,我发现使用pylint非常有用.但是,当我在R中编程时,没有任何可比性.

作为一个小型项目,我认为尝试编写一个小的lint程序会很有趣.没有什么太花哨的东西,有些东西:

  • 确保函数名称是驼峰式的
  • 平均功能长度
  • 检测未使用的变量
  • 间距.例如,function(x=1, y=2)而不是function(x=1,y=2)

但是,我不确定如何开始(我已经开始查看pylint soure代码).

我应该如何开始?是否有针对此类项目的标准编程技术?我应该考虑哪些好的资源?

我想在R写整个项目.

lint r static-code-analysis

15
推荐指数
4
解决办法
1600
查看次数

检测不正确的断言方法

在最近的一次代码审查中,我偶然发现了一个不容易发现的问题 - assertTrue()使用而不是assertEqual()基本上导致了一个没有测试的测试.这是一个简化的例子:

from unittest import TestCase


class MyTestCase(TestCase):
    def test_two_things_equal(self):
        self.assertTrue("a", "b")
Run Code Online (Sandbox Code Playgroud)

这里的问题是测试会通过; 从技术上讲,代码是有效的,因为assertTrue有这个可选msg参数("b"在这种情况下获取值).

我们能不能依靠审核代码的人来发现这类问题?是否有办法来自动检测使用静态代码分析它flake8还是pylint

python testing unit-testing static-code-analysis python-unittest

15
推荐指数
2
解决办法
321
查看次数