标签: code-analysis

在java中的类的getter中强制执行编码模板

我想确保某个包中的所有类的getter都遵循给定的模板.

例如,所有getter必须采用以下形式:

XXX getYYY(){
    classLock.lock(); 
    return YYY;
    finally{
        classLock.unlock(); 
    }
}

基本上,我希望我的项目不会编译/运行,除非所有的getter都是那种形式.

最好的方法是什么?我更喜欢可以用作Eclipse插件的解决方案.

谢谢,Yoav

java code-analysis

0
推荐指数
2
解决办法
94
查看次数

用于队列功能的Tricky C代码,指针发生了什么?

我正在尝试理解这个用于修改队列的C代码:

  /*
    * create or delete a queue
    * PARAMETERS: QUEUE **qptr - space for, or pointer to, queue
    * int flag -  1 for create, 0 for delete
    * int size - max elements in queue
    */
    void qManage(QUEUE **qptr, int flag, int size){
         if(flag){
                  /* allocate a new queue */
                  *qptr = malloc(sizeof(QUEUE));
                  (*qptr)->head = (*qptr)->count = 0;
                  (*qptr)->que = malloc(size * sizeof(int));
                  (*qptr)->size = size;
                  }
                  else{
                       // delete the current queue
                       (void) free((*qptr)->que);
                       (void) free(*qptr);
                 } …
Run Code Online (Sandbox Code Playgroud)

c debugging code-analysis

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

这个C代码中的括号如何使结果如此不同?

此代码的输出:

#define RECIPROCAL_1(x)     1/(x)
#define RECIPROCAL_2(x)     1/x

main()
{
  float x=8.0, y;
  y = RECIPROCAL_1(x+10.0);
  printf("1/%3.1f = %8.5f\n", x, y);
  y = RECIPROCAL_2(x+10.0);
  printf("1/%3.1f = %8.5f\n", x, y);
}
Run Code Online (Sandbox Code Playgroud)

输出=

1/8.0 =  0.05556
1/8.0 = 10.12500
Run Code Online (Sandbox Code Playgroud)

我看不出它是如何工作的.我很感激任何提示.

c debugging code-analysis

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

避免"非常量字段不可见"代码分析警告

我有一个对象,其中包含在验证对象时检查的业务规则列表.

在类的顶部,我创建了BusinessRule类型的静态字段,如下所示: -

public class SyncFile : Waterstons.Patterns.Entities.BaseEntity<Guid>
{        
    public static BusinessRule NameRequiredRule = new BusinessRule("Name", "The audit file must have a name");
    ....


    protected override void Validate()
    {
        if (Id == default(Guid))
        {
            AddBrokenRule(IdRequiredRule);
        }
        ....
Run Code Online (Sandbox Code Playgroud)

这导致代码分析抱怨我不应该有公共字段,除非它们是const.我不确定我可以根据我如何使用它们将它们定义为const.

那么有更好的方法来解决这个问题吗?我应该将它们作为属性公开吗?

    public static BusinessRule _nameRequiredRule = new BusinessRule("Name", "The audit file must have a name");
    public static BusinessRule Test
    {
        get { return _nameRequiredRule; }
    }
Run Code Online (Sandbox Code Playgroud)

或者有更好的方法来解决这个问题吗?

c# code-analysis

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

PMD代表什么?

我在谈论PMD源代码分析器.

这是什么意思吗?它是首字母缩略词吗?或者它只是没有意义?

对不起这个微不足道的问题,我无法在任何地方找到答案.

java code-analysis pmd

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

如何在公共方法上验证枚举参数?

我有这个Enum的扩展方法:

public static List<Enum> Values(this Enum theEnum)
{
    return Enum.GetValues(theEnum.GetType()).Cast<Enum>().ToList();
}
Run Code Online (Sandbox Code Playgroud)

我收到了代码分析违规行为:

CA1062验证公共方法的参数
在外部可见方法'EnumExtensions.Values(this Enum)'中,在使用之前验证参数'theEnum'.

为什么会这样?如何验证参数?我无法检查null,因为枚举是一个不可为空的值类型.是否有其他检查应该在这里发生?

c# validation enums code-analysis

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

如何判断java类是否匿名?

我有这样的代码:

package x.y.z;

public class Test
{
    private static class MyRunnable implements Runnable
    {
        @Override
        public void run()
        {
            System.out.println("World");
        }
    }

    public static void main(String[] args)
    {
        final Runnable r1 = new Runnable() {
            @Override
            public void run()
            {
                System.out.println("Hello");
            }
        };

        final Runnable r2 = new MyRunnable();

        r1.run();
        r2.run();
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在研究一些代码分析模块,我想证明这r1是一个匿名类实例而r2不是.它们都是具有相同基类或接口的有效对象.我怎样才能做到这一点?

细化:正在加载所有类,因此我不需要分析文本.

java code-analysis class anonymous-class

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

C# - 测试对.Single(),.First()等的所有调用是否符合编码标准

我们使用一些扩展方法,它们允许我们编写类似的东西:

.Single(e => $"{nameof(SomeParameter)}: {SomeParameter}, ...")
Run Code Online (Sandbox Code Playgroud)

而不仅仅是

.Single()
Run Code Online (Sandbox Code Playgroud)

哪里e是例外.

大大增加了日志记录体验,因为上层变量记录所有参数而不是无用的"序列不包含任何元素",这是底层产生的.

我需要编写一个测试,它会找到所有不兼容的代码,例如调用.Single().

当然,我可以使用正则表达式搜索或只是简单的香草文本搜索来查找从解决方案根开始的所有CS文件,也许这是可行的方法.我只是想知道是否已经有一个简单而已知的解决方案.

这就是我需要的:

  1. 轻松添加/删除规则:例如,查找所有文件,找到所有文件但不.Single()具有.Single(的形式.Single(e => $"- 这是考虑到组合的Where + Single代码等...

  2. 测试应该从xUnit运行.

非常感谢!

c# code-analysis xunit xunit.net roslyn-code-analysis

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

Angular 9 / TypeScript 静态代码分析器

如果我使用 ESLint 那么是否有任何理由也使用 tslint?还是 ESLint 是替代品?

code-analysis typescript eslint angular

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

使用Arrays.sort进行数组分析的性能

我有一个Arrays.sort(char[])以下列方式使用的代码:

    void arrayAnalysis(String[] array){
      for(int a=0; a<array.length;a++){
        char[] letters = array[a].toCharArray();
        Arrays.sort(letters);
        ...
        for(int b=a+1; b<array.length;b++){
          char[] letters2 = array[b].toCharArray();
          Arrays.sort(letters2);

          if(Arrays.equals(letters, letters2)
            print("equal");
        }
      }
    }
Run Code Online (Sandbox Code Playgroud)

在这种情况下,n等于数组大小.由于嵌套的for循环,性能自动为O(n ^ 2).但是,我认为Arrays.sort(带有O(nlog(n)))也会影响性能并使其比O(n ^ 2)更差.这个想法是否正确?

最后的表现是O(n*nlog(n)*(n*nlog(n))吗?还是我离开了?

谢谢.

编辑:我应该补充一点,当n与数组大小相关时,Arrays.sort正在处理数组元素中的字母数.如果应该将其添加到性能分析中,这是我困惑的一部分.

编辑2:如果下选民留下评论为什么它被认为是一个糟糕的问题,那将是很酷的.

java performance big-o code-analysis

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

在Visual Studio中启用代码分析的重要性是什么?

我在VS 2010中创建了一个项目.我想将其转换为VS 2013.当我构建它时,会出现错误:

CA0053运行代码分析时出错CA0053:无法加载规则程序集'c:\ program files\microsoft visual studio 10.0\team tools\static analysis tools\fxcop\rules\globalizationrurux.dll':无法加载一个或多个请求的类型.检索LoaderExceptions属性以获取更多信息.

我禁用了"在Build中启用代码分析"并运行,然后它不会给我一个错误.

  1. 启用代码分析的重要性是什么?
  2. 如果禁用代码分析会发生什么?

c# code-analysis

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

如何确保重构不会改变代码流?

我正在重构一些Java代码,我的目的不是根本不更改行为/流程,而只是对其进行清理,将其划分为方法等。

最后,我想做的是确保我的更改确实只是美学上的,并且行为/流程没有更改。

我知道可以通过编写全面的单元测试来“实现”,但是我想知道是否存在一些Java代码分析实用程序可以用来比较更改前后的代码流,因为从理论上讲,这听起来像这是可能的。

任何帮助表示赞赏!

java refactoring code-analysis flow

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

我无法理解Dart编辑器如何分析源代码

Dart编辑器版本1.2.0.release(STABLE).Dart SDK 1.2.0版.

此源代码生成运行时异常.

void main() {
  test(new Base());
}

void test(Child child) {
}

class Base {
}

class Child extends Base {
}
Run Code Online (Sandbox Code Playgroud)

我假设分析仪生成这样的东西.

The argument type 'Base' cannot be assigned to the parameter type 'Child'
Run Code Online (Sandbox Code Playgroud)

但是我只能在发生此异常(post factum)时在运行时检测到此错误.

Unhandled exception:
type 'Base' is not a subtype of type 'Child' of 'child'.
Run Code Online (Sandbox Code Playgroud)

code-analysis software-quality error-detection dart dart-sdk

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