标签: code-analysis

Perl挑战 - 目录迭代器

你有时会听到它说Perl可能有6种不同的方法来解决同样的问题.优秀的Perl开发人员通常有充分的理由在各种可能的实现方法之间做出选择.

所以Perl的一个例子问题:

一个简单的脚本,递归地遍历目录结构,查找最近修改过的文件(在某个特定日期之后,这将是可变的).将结果保存到文件.

问题,对于Perl开发人员:您最好的方法是什么?

perl code-analysis

5
推荐指数
5
解决办法
2602
查看次数

了解别人代码的工具和最佳实践

有时需要挖掘别人的代码,理解它并重构/修复它.所以我想知道你用什么工具/做法来做到这一点?它不是关于任何特定的语言或平台,而是一般的一些建议.
我自己发现在调试器下运行有问题的代码非常有用(如果可能的话),设置断点并逐步执行代码.
此外,我还使用了一些具有逆向工程功能的UML工具来展望全局.可视化对我来说非常好用.
有一个工具,我已经使用了很多:理解.它不是一个UML工具,但它有一堆代码可视化.例如,函数的控制流程图,它不是UML的一部分,但有时它非常有用.
我听说有时人们会为他们想要学习的代码编写测试,但它并没有为我工作.有时我想要理解的代码不是很容易测试.
还有其他工具,如分析器,依赖检查器,记录器等.有没有人使用它取得任何成功?如何?
首先使用的是什么?下一步是什么?

ide debugging code-analysis

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

Javascript源代码分析(特别是重复检查)

部分重复此

注意:我已经通过我编写的一个工具广泛使用 JSLint,该工具会定期扫描我当前项目目录中最近更新/创建的 .js 文件。它极大地提高了我的工作效率,我怀疑有什么比 JSLint 更好的价格(它是免费的)。

也就是说,是否有任何分析工具可以找到重复或接近重复的代码块,其目标是更容易找到合并大文件或中小型项目的机会?

refactoring code-analysis

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

C# - 代码分析2227混淆

我有一个类属性,如下所示:

public List<Recipe> RecipeList
{
    get { return this._recipeList; }

    set
    {
        this._recipeList = value;
        OnPropertyChanged("RecipeList");
    }
}
Run Code Online (Sandbox Code Playgroud)

在另一种方法中,我有以下参考上面的属性.

private void RecipeSearch()
{
            this.RecipeList = RecipeManagerService.SearchByUnit(SearchCriteria)
                               .Where(recipe => recipe.IsApproved == true && !recipe.IsHidden).ToList();
}
Run Code Online (Sandbox Code Playgroud)

代码分析正在发出CA 2227警告:通过删除setter将RecipeList更改为只读.谁能告诉我为什么?

c# code-analysis

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

是否应该在每次构建时执行代码覆盖率?

我是 Brownfield 应用程序开发的忠实粉丝。毫无疑问,这是一本好书,我会向所有开发人员推荐它。我在这里是因为我在书中谈到了代码覆盖率。在我的新店里,我们使用 Team City 进行自动构建/持续集成,构建完成需要大约 40 分钟。Brownfield 的书讨论了无摩擦开发以及我们希望如何减轻开发人员必须承受的共同负担。这是我在第 130 页上读到的内容。

“代码覆盖率:一个进程的代价?从清单 5.2 中的示例目标可以看出,你最终得到了两个输出文件:一个是测试结果,一个是代码覆盖率结果。这是因为你实际上在此任务期间执行您的测试。

如果您正在运行代码覆盖任务,从技术上讲,您不需要在单独的任务中执行测试。出于这个原因,许多团队会将自动化代码覆盖任务替换为他们的测试任务,基本上在 CI 过程中执行这两个操作。CI 服务器将编译代码、测试它,并在每次签入时生成代码覆盖率统计信息。

尽管这种方法在概念上没有任何问题,但请注意一些缺点。首先,生成代码覆盖率统计数据存在开销。当有大量测试时,这种开销可能会大到足以导致长时间运行的自动构建脚本形式的摩擦。请记住,主构建脚本应尽可能快地运行,以鼓励团队成员经常运行它。如果运行时间太长,您可能会发现开发人员正在寻找解决方法。

出于这些原因,我们建议将代码覆盖任务与构建脚本的默认任务分开执行。它应该定期运行,也许作为您的构建文件中的一个单独的计划任务,每两周甚至每月执行一次,但我们认为该指标没有足够的好处来保证在每次检查时执行它的额外开销 -在。”

这与我当前商店的做法相反,我们在每次构建时执行 NCover。我想去找我的领导并要求我们不要这样做,但我能做的最好的事情就是告诉他“这就是 Brownfield 的书所说的”。我认为这还不够好。因此,我依靠你们来为我提供有关此主题的个人经验和建议。谢谢。

teamcity continuous-integration code-analysis ncover code-metrics

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

如何找到PHP文件中使用的所有类?

我正在尝试使用标记生成器扫描文件以查找所有已定义的类,它们扩展的任何内容,任何创建的实例以及它们被静态调用的任何时间.

<?php

$tokens = token_get_all(file_get_contents($file));

$used_classes = array();
$defined_classes = array();
$variable_classes = array();

foreach($tokens as $i => $token) {

    if(is_array($token)) {

        if(isset($tokens[$i - 2][0], $tokens[$i - 1][0])) {

            // new [class]
            if ($tokens[$i - 2][0] == T_NEW AND $tokens[$i - 1][0] == T_WHITESPACE) {

                if($tokens[$i][0] == T_STRING) {
                    $used_classes[$token[1]] = TRUE;

                // new $variable()
                } elseif($tokens[$i][0] == T_VARIABLE) {    

                    // @todo, this is really broken. However, do best to look for the assignment
                    if(preg_match('~\$var\s*=\s*([\'"])((?:(?!\1).)*)\1~', $text, $match)) {
                        if(empty($extension_classes[$match[2]])) { …
Run Code Online (Sandbox Code Playgroud)

php code-analysis class tokenize

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

PyDev代码分析无法在Aptana Studio中运行

我有几个Python项目,我使用" Import- > Existing Folder as New Project" 导入到Aptana中

导入成功,我可以在Aptana中运行和调试脚本.但是,出于某种原因,我无法让PyDev的代码分析工作.

Window- > Preferences- > PyDev- > Editor- >中的所有设置Code Analysis似乎都是正确的:

  • Do code analysis? 检查
  • pep8.py 设置为运行并将结果报告为警告

我通过右键单击文件并选择"运行代码分析"来运行它: 在此输入图像描述

稍后会出现以下窗口,但随后它会关闭,我看不到任何结果(即"问题"视图中没有任何内容,代码部分下方没有红色下划线等): 在此输入图像描述

知道什么可能是错的吗?或者我应该在哪里寻找更多关于幕后发生的事情的详细信息(日志文件等)?

python aptana eclipse code-analysis pydev

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

什么是NP和co-NP之间的区别

我知道他们的完全对应物意味着NP - 完全是NP问题中最难的,并且共同NP完全意味着共同NP问题中最难的但是两者之间的区别是什么?我的教科书上写着"是的,没有被逆转",这并没有给我留下那么多线索.

algorithm code-analysis np

5
推荐指数
3
解决办法
8282
查看次数

如何避免使用构造查询的CA2100

在我的代码中的许多地方,我正在使用StringBuilder构建一个SQL语句,并且在每种情况下都会触发CA2100: Review SQL queries for security vulnerabilities来自代码分析,因为SQLCommand内容来自StringBuilder而不是文字.

通常这些查询是通过一些流控制(case或if)组装的,其中查询的各个部分可能是有条件的.

我的问题是,我应该压制其中的每一个,还是有一个不同的模式来构建(有时是复杂的)内联查询,但避免警告?

触发此操作的代码示例:

System.Text.StringBuilder sb = new System.Text.StringBuilder();

sb.AppendLine("select ");
sb.AppendLine("  Q.QUOTE_TITLE as [@Description] ");
sb.AppendLine("from ");
sb.AppendLine("  QUOTE Q ");
sb.AppendLine("where ");
sb.AppendLine("  Q.QUOTE_ID = @QUOTE_ID ");
sb.AppendLine("  and Q.QUOTE_VERS = @QUOTE_VERS  ");
sb.AppendLine("for xml path('Contract') ");

SqlCommand sqlCmd = new SqlCommand(sb.ToString(), MainDBConnection);
sqlCmd.Parameters.Add("@QUOTE_ID", SqlDbType.Int).Value = QuoteID;
sqlCmd.Parameters.Add("@QUOTE_VERS", SqlDbType.SmallInt).Value = QuoteVersion;
Run Code Online (Sandbox Code Playgroud)

c# code-analysis

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

private void Dispose(bool)?

在一些地方,人们建议使用private void Dispose(bool)该IDisposable模式.这似乎过时了(至少对于未密封的类),因为新建议的模式(根据微软)protected virtual void Dispose(bool).

The thing is, Code Analysis does not report private void Dispose(bool) for violating CA1063, even though it seems to violate the pattern directly.

What's up with this? Is private void Dispose(bool) somehow getting called (or compiled to something that looks like protected virtual Dispose(bool)?

If this is some issue with Code Analysis and is the incorrect pattern, are there ways to detect this? Possibly with StyleCop? …

c# code-analysis fxcop idisposable

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