标签: lint

Retrolambda:在使用带有retrolambda的lambda表达式时,Lint崩溃

我试图用retrolambda沿gradle这个-retrolambda插件.一般来说它工作正常,但是当我编译发布时,该lint阶段失败,异常:

:playground.dagger:lintVitalReleaseFailed converting ECJ parse tree to Lombok for file D:\....\playground\dagger\MainActivity.java
java.lang.UnsupportedOperationException: Unknown ASTNode child: LambdaExpression
    at lombok.ast.ecj.EcjTreeVisitor.visitOther(EcjTreeVisitor.java:368)
    at lombok.ast.ecj.EcjTreeVisitor.visitEcjNode(EcjTreeVisitor.java:364)
    at lombok.ast.ecj.EcjTreeConverter.visit(EcjTreeConverter.java:295)
    at lombok.ast.ecj.EcjTreeConverter.toTree(EcjTreeConverter.java:236)
    at lombok.ast.ecj.EcjTreeConverter.fillList(EcjTreeConverter.java:282)
    at lombok.ast.ecj.EcjTreeConverter.fillList(EcjTreeConverter.java:252)
    at lombok.ast.ecj.EcjTreeConverter.access$100(EcjTreeConverter.java:141)
    at lombok.ast.ecj.EcjTreeConverter$2.visitMessageSend(EcjTreeConverter.java:1042)
    at lombok.ast.ecj.EcjTreeVisitor.visitEcjNode(EcjTreeVisitor.java:156)
    at lombok.ast.ecj.EcjTreeConverter.visit(EcjTreeConverter.java:295)
    at lombok.ast.ecj.EcjTreeConverter.toTree(EcjTreeConverter.java:236)
    at lombok.ast.ecj.EcjTreeConverter.fillList(EcjTreeConverter.java:282)
    at lombok.ast.ecj.EcjTreeConverter.fillList(EcjTreeConverter.java:252)
    at lombok.ast.ecj.EcjTreeConverter.toBlock(EcjTreeConverter.java:397)
    at lombok.ast.ecj.EcjTreeConverter.access$1500(EcjTreeConverter.java:141)
    at lombok.ast.ecj.EcjTreeConverter$2.visitMethodDeclaration(EcjTreeConverter.java:1241)
    at lombok.ast.ecj.EcjTreeVisitor.visitEcjNode(EcjTreeVisitor.java:152)
    at lombok.ast.ecj.EcjTreeConverter.visit(EcjTreeConverter.java:295)
    at lombok.ast.ecj.EcjTreeConverter.toTree(EcjTreeConverter.java:236)
    at lombok.ast.ecj.EcjTreeConverter.fillList(EcjTreeConverter.java:282)
    at lombok.ast.ecj.EcjTreeConverter.fillList(EcjTreeConverter.java:252)
    at lombok.ast.ecj.EcjTreeConverter.access$100(EcjTreeConverter.java:141)
    at lombok.ast.ecj.EcjTreeConverter$2.createNormalTypeBody(EcjTreeConverter.java:563)
    at lombok.ast.ecj.EcjTreeConverter$2.visitTypeDeclaration(EcjTreeConverter.java:486)
    at lombok.ast.ecj.EcjTreeVisitor.visitEcjNode(EcjTreeVisitor.java:48)
    at lombok.ast.ecj.EcjTreeConverter.visit(EcjTreeConverter.java:295)
    at lombok.ast.ecj.EcjTreeConverter.toTree(EcjTreeConverter.java:236)
    at lombok.ast.ecj.EcjTreeConverter.fillList(EcjTreeConverter.java:282)
    at lombok.ast.ecj.EcjTreeConverter.fillList(EcjTreeConverter.java:252) …
Run Code Online (Sandbox Code Playgroud)

android lint android-lint android-gradle-plugin retrolambda

43
推荐指数
2
解决办法
7133
查看次数

忽略C中的返回值

最近,我开始使用lint进行静态代码分析.我有时得到的一个警告就是这个问题.比方说,我有以下功能:

uint32_t foo( void );
Run Code Online (Sandbox Code Playgroud)

让我们说我故意忽略函数的返回值.为了使警告消失,人们可以写

(void) foo();
Run Code Online (Sandbox Code Playgroud)

我的问题是,编写这样的代码的"正确"方法是什么,我应该像往常一样继续,因为编译器不会抱怨它,或者我应该使用void来清楚,所以其他代码维护者会知道我刻意忽略了返回值.

当我看到这样的代码(带有空白)时,我觉得很奇怪......

c coding-style lint return-value

41
推荐指数
6
解决办法
3万
查看次数

已解析的颜色而不是资源ID

最近我看到我的代码中出现了一个lint错误:

应该在这里传递已解析的颜色而不是资源ID:getResources().getColor(R.color.maps_list_background_color)
MyClass.java/myapp/android/maps line 107 Android Lint问题

我知道如何解决它的答案是在错误中,事情是我不明白为什么他们在linter中添加了这个错误.

android lint

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

清理未使用的Android权限

如果我想研究在Android应用中如何以及在哪里使用[Mainfest.xml中的请求]权限以便删除它们是否有一种简单的方法可以做到这一点?lint或findbugs是否为跟踪项目中使用/滥用的权限提供某种支持?

permissions android lint findbugs

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

Lint错误:实现生命周期钩子接口

嘿大家我得到了一个linting错误,我不确定它在说什么,这是错误: src/app/particles/particles.component.ts[4, 1]: Implement lifecycle hook interfaces (https://angular.io/docs/ts/latest/guide/style-guide.html#!#09-01)行nr 4是@Component({

我已经阅读了它给出的链接,我得到了它试图告诉我的内容(至少我是这么认为:))但我看不出它在这种情况下是如何应用的.

谢谢你的帮助.

import { Component, ViewChild, ElementRef, HostListener} from '@angular/core';
import { Particle } from './particle';

@Component({
  selector: 'km-particles',
  styles: ['canvas { transition: opacity 0.5s cubic-bezier(0.4, 0.0, 0.2, 1);}'],
  template: ` <canvas #canvas
              [attr.width]='width'
              [attr.height]='height'
              [style.opacity]='opacity'>
              </canvas>`
})
export class ParticlesComponent {

  private ctx: CanvasRenderingContext2D;
  private width: number;
  private height: number;
  private opacity: number;
  private particles: Particle[];
  private particleClearLoop: any;

  public playParticles: boolean;

  // get the element with …
Run Code Online (Sandbox Code Playgroud)

lint npm angular

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

如何使用createWriteStream避免"严格模式下不允许使用八进制文字"

我有以下代码

 fs.createWriteStream( fileName, {
        flags    : 'a',
        encoding : 'utf8',
        mode     : 0644
    });
Run Code Online (Sandbox Code Playgroud)

我得到一个lint错误

Octal literals are not allowed in strict mode.
Run Code Online (Sandbox Code Playgroud)

执行此代码的正确方法是什么,所以我不会得到lint错误?

lint node.js

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

我在哪里可以找到一个积极开发的Ruby工具?

我编写的大多数代码都是在Ruby中,每隔一段时间,我会做一些错字,只会在一段时间后被捕获.当我的脚本运行很长的任务时,这很烦人,并返回发现我有一个错字.

是否有一个积极开发的Ruby工具lint工具可以帮助我克服这个问题?是否可以在一个使用大量源文件的系统中使用它,其中一些是动态加载的?

以此片段为例:

a = 20
b = 30
puts c
Run Code Online (Sandbox Code Playgroud)

要获得赏金,请告诉我一个工具,它将检测c变量为未创建/未定义.

ruby code-analysis static-analysis lint

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

有关paddingStart使用的冲突lint消息

在API 17/RTL支持发布后,我将以下内容添加到我的清单中

android:supportsRtl="true"
Run Code Online (Sandbox Code Playgroud)

这导致Lint在我的视图中无论我在paddingLeft/Right中的哪个位置都正确地给了我这些警告:

  • 考虑添加android:paddingStart ="8dp"以更好地支持从右到左的布局

  • 考虑添加android:paddingEnd ="8dp"以更好地支持从右到左的布局

我按照这个android-developers博文中的指导做了这个,这暗示我们不需要创建一个新的layout-v17文件,而是可以只使用paddingStart/End以及paddingLeft/Right属性(左/右需要继续支持较低的minSdk).


我刚刚从之前的Beta版本对Android Studio 1.0进行了更新,并注意到一个新的lint错误,该错误指出:

  • 此处引用的属性paddingStart可能会导致某些早于API 17的特定设备崩溃(当前最小值为7)

建议的修复方法是:

覆盖layout-v17中的资源

这是有道理的.但是,在创建layout-v17并从主布局文件夹中删除未使用的paddingStart/End后,原来的Lint警告再次出现,说我应该使用paddingStart/End.好像我不明白我已经覆盖了layout-v17中的文件.

有谁知道如何解决看似矛盾的Lint错误/警告消息?我知道我可以tools:ignore发出警告,但我希望有一个"正确"的解决方案.


编辑(1/19/15):我想到了一个安卓问题,导致新的lint错误被添加到Android Studio中.这表明"某些特定设备上的崩溃"是指API16上的一些三星平板电脑,其中paddingStart有自己的定义,并且当它试图解析"8dp"时崩溃.

上面链接中的某些人建议使用layout-ldrtl文件夹来处理rtl方向,而不是使用paddingStart和paddingEnd.

当你发现用户有一个API16平板电脑,然后手动设置你所有视图的属性时,我也在其他地方建议覆盖LayoutInflator的Factory2.这肯定会奏效,但看起来非常"手动".

我很遗憾没有访问其中一个崩溃的设备,所以我无法验证为什么我没有找到任何人在网上建议简单地将paddingStart放在/ layout-v17 /文件夹中,并将paddingLeft放在/ layout /中?尽管paddingStart只存在于layout-v17中,API16三星平板电脑仍会继续崩溃吗?

android lint

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

Android Lint:如何忽略区域语言环境字符串文件中缺少的翻译警告,该文件故意仅覆盖某些默认翻译?

是否有可能在没有Lint抱怨MissingTranslation的单独资源文件中翻译某些字符串,而不是全部?

例如:我的应用程序的字符串都在res/values/strings.xml中.其中一个字符串是

<string name="postal_code">Postal Code</string>

由于"邮政编码"在美国通常被称为"邮政编码",我想在内容中添加另一个资源res/values-en-rUS/strings.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="postal_code">Zip Code</string>
</resources>
Run Code Online (Sandbox Code Playgroud)

但是,Lint在values/strings.xml中抱怨其他字符串,但在values-en-rUS/strings.xml中没有

我意识到你可以通过tools:ignorevalues/strings.xml中指定来抑制警告.但这是不可取的,因为Lint警告在翻译成另一种语言时实际上很有用.

相反,是否可以在values-en-rUS/strings.xml文件中禁止警告,如在查找缺少的翻译时告诉Lint不要将该文件用作标准?

android translation localization lint android-lint

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

Android Studio lint报告"无法推断参数类型".

我已经查看了执行以下命令后Android Studio提供的项目的检查报告:

Analyze->Inspect Code...
Run Code Online (Sandbox Code Playgroud)

该报告指出我的gradle.build文件中此代码段存在问题:

buildTypes {
    release {
        runProguard false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        signingConfig signingConfigs.release
    }
}
Run Code Online (Sandbox Code Playgroud)

具体问题是cannot infer argument types (at line 34).为清晰起见,我已包含快照.

Android Studio lint检查投诉

一个答案似乎表明这只是一个虚假的警告.如果是这种情况,我可以安全地抑制此警告吗?

android lint gradle android-studio

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